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
From 65241f94f08ebcd5165d488067b32ba64c0620dc Mon Sep 17 00:00:00 2001
From: Guido Lerch <[email protected]>
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 <[email protected]>
---
 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)

From bf989a642f9bb50cf6cf6f266fb0f8407f3916c9 Mon Sep 17 00:00:00 2001
From: Guido Lerch <[email protected]>
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 <[email protected]>
---
 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)

From a62e8f94408dded8cff07d8bec3c8cefb50200ff Mon Sep 17 00:00:00 2001
From: Guido Lerch <[email protected]>
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 <[email protected]>
---
 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)

From f7f3e711262989f2ae095fc49af173b3c1909167 Mon Sep 17 00:00:00 2001
From: Guido Lerch <[email protected]>
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 <[email protected]>
---
 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)

From 16905ded34691e42655de562147a4e6e456cf4c4 Mon Sep 17 00:00:00 2001
From: Guido Lerch <[email protected]>
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 <[email protected]>
---
 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)

From 8e48d93bf256e74ce2b483d2a11f71b8734fe12c Mon Sep 17 00:00:00 2001
From: Guido Lerch <[email protected]>
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 <[email protected]>
---
 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)

_______________________________________________
subsurface mailing list
[email protected]
http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface

Reply via email to