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