For consideration for 4.5.1 or 4.6

Dirk Hohndel dirk at hohndel.org
Tue Oct 20 14:55:51 PDT 2015


For 4.5.1 I'm not sure... it does change user visible behavior, would
require new strings, user manual updates... I'd say no.
But once I cut 4.5.1 I will take this for 4.6

/D

On Tue, Oct 20, 2015 at 10:08:29PM +0200, Guido Lerch wrote:
> 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 <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)
> 

> 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)
> 

> 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)
> 

> 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)
> 

> 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)
> 

> 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)
> 

> _______________________________________________
> subsurface mailing list
> subsurface at subsurface-divelog.org
> http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface



More information about the subsurface mailing list