For consideration for 4.5.1 or 4.6
Guido Lerch
guido.lerch at gmail.com
Tue Oct 20 13:08:29 PDT 2015
adding context menu to images for multi selection deletion and deleting all
images.
ideally we add a menu for adding dives as well but I have not done this
yet, waiting for
you input.
purpose of this: usability
is someone working on getting images and eventually multi format files in
to git yet ?
--
Best regards,
Guido
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.subsurface-divelog.org/pipermail/subsurface/attachments/20151020/0eb17443/attachment-0001.html>
-------------- next part --------------
From 65241f94f08ebcd5165d488067b32ba64c0620dc Mon Sep 17 00:00:00 2001
From: Guido Lerch <guido.lerch at gmail.com>
Date: Tue, 20 Oct 2015 21:02:41 +0200
Subject: [PATCH 1/6] Adding context menu to Images
Allowing to delete selected or all photos from the
dive images
Signed-off-by: Guido Lerch <guido.lerch at gmail.com>
---
qt-ui/maintab.cpp | 9 +++++++++
qt-ui/maintab.h | 1 +
2 files changed, 10 insertions(+)
diff --git a/qt-ui/maintab.cpp b/qt-ui/maintab.cpp
index 0afb7b4..a1f0438 100644
--- a/qt-ui/maintab.cpp
+++ b/qt-ui/maintab.cpp
@@ -1610,3 +1610,12 @@ void MainTab::showAndTriggerEditSelective(struct dive_components what)
weightModel->changed = true;
}
}
+
+void MainTab::contextMenuEvent(QContextMenuEvent *event)
+{
+ QMenu popup(this);
+ popup.addAction(tr("Delete selected images"), this, SLOT(removeSelectedPhotos()));
+ popup.addAction(tr("Delete all images"), this, SLOT(removeAllPhotos()));
+ QAction *actionTaken = popup.exec(event->globalPos());
+ event->accept();
+}
diff --git a/qt-ui/maintab.h b/qt-ui/maintab.h
index 20b4da6..7b2bb86 100644
--- a/qt-ui/maintab.h
+++ b/qt-ui/maintab.h
@@ -54,6 +54,7 @@ public:
void refreshDisplayedDiveSite();
void nextInputField(QKeyEvent *event);
void showAndTriggerEditSelective(struct dive_components what);
+ void contextMenuEvent(QContextMenuEvent *event);
signals:
void addDiveFinished();
--
2.3.8 (Apple Git-58)
-------------- next part --------------
From bf989a642f9bb50cf6cf6f266fb0f8407f3916c9 Mon Sep 17 00:00:00 2001
From: Guido Lerch <guido.lerch at gmail.com>
Date: Tue, 20 Oct 2015 21:03:53 +0200
Subject: [PATCH 2/6] Context menu support for images
Altering DivePicture model to allow deleting images
from the QListView without immediate updating of the
list. Updating is determined by an additioanl parameter
Signed-off-by: Guido Lerch <guido.lerch at gmail.com>
---
qt-models/divepicturemodel.cpp | 10 ++++++----
qt-models/divepicturemodel.h | 2 +-
2 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/qt-models/divepicturemodel.cpp b/qt-models/divepicturemodel.cpp
index 1f37423..bb5db33 100644
--- a/qt-models/divepicturemodel.cpp
+++ b/qt-models/divepicturemodel.cpp
@@ -111,12 +111,14 @@ QVariant DivePictureModel::data(const QModelIndex &index, int role) const
return ret;
}
-void DivePictureModel::removePicture(const QString &fileUrl)
+void DivePictureModel::removePicture(const QString &fileUrl, bool last)
{
dive_remove_picture(fileUrl.toUtf8().data());
- copy_dive(current_dive, &displayed_dive);
- updateDivePictures();
- mark_divelist_changed(true);
+ if (last) {
+ copy_dive(current_dive, &displayed_dive);
+ updateDivePictures();
+ mark_divelist_changed(true);
+ }
}
int DivePictureModel::rowCount(const QModelIndex &parent) const
diff --git a/qt-models/divepicturemodel.h b/qt-models/divepicturemodel.h
index d6393e4..7390fc5 100644
--- a/qt-models/divepicturemodel.h
+++ b/qt-models/divepicturemodel.h
@@ -33,7 +33,7 @@ public:
virtual int rowCount(const QModelIndex &parent = QModelIndex()) const;
virtual void updateDivePictures();
void updateDivePicturesWhenDone(QList<QFuture<void> >);
- void removePicture(const QString& fileUrl);
+ void removePicture(const QString& fileUrl, bool last);
protected:
DivePictureModel();
--
2.3.8 (Apple Git-58)
-------------- next part --------------
From a62e8f94408dded8cff07d8bec3c8cefb50200ff Mon Sep 17 00:00:00 2001
From: Guido Lerch <guido.lerch at gmail.com>
Date: Tue, 20 Oct 2015 21:07:43 +0200
Subject: [PATCH 3/6] Context menu support for images
removing obsolete code
Signed-off-by: Guido Lerch <guido.lerch at gmail.com>
---
qt-ui/maintab.cpp | 7 -------
1 file changed, 7 deletions(-)
diff --git a/qt-ui/maintab.cpp b/qt-ui/maintab.cpp
index a1f0438..595e9da 100644
--- a/qt-ui/maintab.cpp
+++ b/qt-ui/maintab.cpp
@@ -177,13 +177,6 @@ MainTab::MainTab(QWidget *parent) : QTabWidget(parent),
ui.cylinders->view()->horizontalHeader()->addAction(action);
}
- QAction *deletePhoto = new QAction(this);
- deletePhoto->setShortcut(Qt::Key_Delete);
- deletePhoto->setShortcutContext(Qt::WidgetShortcut);
- ui.photosView->addAction(deletePhoto);
- ui.photosView->setSelectionMode(QAbstractItemView::SingleSelection);
- connect(deletePhoto, SIGNAL(triggered(bool)), this, SLOT(removeSelectedPhotos()));
-
ui.waitingSpinner->setRoundness(70.0);
ui.waitingSpinner->setMinimumTrailOpacity(15.0);
ui.waitingSpinner->setTrailFadePercentage(70.0);
--
2.3.8 (Apple Git-58)
-------------- next part --------------
From f7f3e711262989f2ae095fc49af173b3c1909167 Mon Sep 17 00:00:00 2001
From: Guido Lerch <guido.lerch at gmail.com>
Date: Tue, 20 Oct 2015 21:08:59 +0200
Subject: [PATCH 4/6] Context menu support for images
Adding modified code to support deletion of selected images as
well as deleting of all images (with warning messagebox)
Signed-off-by: Guido Lerch <guido.lerch at gmail.com>
---
qt-ui/maintab.cpp | 25 ++++++++++++++++++++++---
qt-ui/maintab.h | 1 +
2 files changed, 23 insertions(+), 3 deletions(-)
diff --git a/qt-ui/maintab.cpp b/qt-ui/maintab.cpp
index 595e9da..88f7903 100644
--- a/qt-ui/maintab.cpp
+++ b/qt-ui/maintab.cpp
@@ -1556,12 +1556,31 @@ void MainTab::photoDoubleClicked(const QString filePath)
void MainTab::removeSelectedPhotos()
{
+ bool last = false;
if (!ui.photosView->selectionModel()->hasSelection())
return;
+ QModelIndexList indexes = ui.photosView->selectionModel()->selectedRows();
+ if (indexes.count() == 0)
+ indexes = ui.photosView->selectionModel()->selectedIndexes();
+ QModelIndex photo = indexes.first();
+ do {
+ photo = indexes.first();
+ last = indexes.count() == 1;
+ if (photo.isValid()) {
+ QString fileUrl = photo.data(Qt::DisplayPropertyRole).toString();
+ if (fileUrl.length() > 0)
+ DivePictureModel::instance()->removePicture(fileUrl, last);
+ }
+ indexes.removeFirst();
+ } while(!indexes.isEmpty());
+}
- QModelIndex photoIndex = ui.photosView->selectionModel()->selectedIndexes().first();
- QString fileUrl = photoIndex.data(Qt::DisplayPropertyRole).toString();
- DivePictureModel::instance()->removePicture(fileUrl);
+void MainTab::removeAllPhotos()
+{
+ if (QMessageBox::warning(this, tr("Deleting Images"), tr("Are you sure you want to delete all images?"), QMessageBox::Cancel | QMessageBox::Ok, QMessageBox::Cancel) != QMessageBox::Cancel ) {
+ ui.photosView->selectAll();
+ removeSelectedPhotos();
+ }
}
#define SHOW_SELECTIVE(_component) \
diff --git a/qt-ui/maintab.h b/qt-ui/maintab.h
index 7b2bb86..c3f6649 100644
--- a/qt-ui/maintab.h
+++ b/qt-ui/maintab.h
@@ -97,6 +97,7 @@ slots:
void escDetected(void);
void photoDoubleClicked(const QString filePath);
void removeSelectedPhotos();
+ void removeAllPhotos();
void showLocation();
void enableGeoLookupEdition();
void disableGeoLookupEdition();
--
2.3.8 (Apple Git-58)
-------------- next part --------------
From 16905ded34691e42655de562147a4e6e456cf4c4 Mon Sep 17 00:00:00 2001
From: Guido Lerch <guido.lerch at gmail.com>
Date: Tue, 20 Oct 2015 21:10:44 +0200
Subject: [PATCH 5/6] Context menu support for images
Required change within DivePictureItem, adding update
parameter defaulted to true in this case.
Signed-off-by: Guido Lerch <guido.lerch at gmail.com>
---
qt-ui/profile/divepixmapitem.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/qt-ui/profile/divepixmapitem.cpp b/qt-ui/profile/divepixmapitem.cpp
index 581f6f9..2be21ae 100644
--- a/qt-ui/profile/divepixmapitem.cpp
+++ b/qt-ui/profile/divepixmapitem.cpp
@@ -126,5 +126,5 @@ void DivePictureItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
void DivePictureItem::removePicture()
{
- DivePictureModel::instance()->removePicture(fileUrl);
+ DivePictureModel::instance()->removePicture(fileUrl, true);
}
--
2.3.8 (Apple Git-58)
-------------- next part --------------
From 8e48d93bf256e74ce2b483d2a11f71b8734fe12c Mon Sep 17 00:00:00 2001
From: Guido Lerch <guido.lerch at gmail.com>
Date: Tue, 20 Oct 2015 22:04:40 +0200
Subject: [PATCH 6/6] Context menu suport for images
Enabling multi selection
Signed-off-by: Guido Lerch <guido.lerch at gmail.com>
---
qt-ui/maintab.cpp | 1 +
1 file changed, 1 insertion(+)
diff --git a/qt-ui/maintab.cpp b/qt-ui/maintab.cpp
index 88f7903..57e9a36 100644
--- a/qt-ui/maintab.cpp
+++ b/qt-ui/maintab.cpp
@@ -198,6 +198,7 @@ MainTab::MainTab(QWidget *parent) : QTabWidget(parent),
acceptingEdit = false;
ui.diveTripLocation->hide();
+ ui.photosView->setSelectionMode(QAbstractItemView::MultiSelection);
}
MainTab::~MainTab()
--
2.3.8 (Apple Git-58)
More information about the subsurface
mailing list