From 4f42e4fd509ce69f1ea80111e72e11895fd956df Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Wed, 18 Jul 2018 23:09:31 +0200 Subject: [PATCH] Dive media: implement "Open folder of selected media files" Add a context-menu entry to TabDivePhotos which opens the folder(s) of all selected files. Fixes #1514. Suggested-by: Stefan Fuchs Signed-off-by: Berthold Stoeger --- desktop-widgets/tab-widgets/TabDivePhotos.cpp | 18 ++++++++++++++++++ desktop-widgets/tab-widgets/TabDivePhotos.h | 1 + 2 files changed, 19 insertions(+) diff --git a/desktop-widgets/tab-widgets/TabDivePhotos.cpp b/desktop-widgets/tab-widgets/TabDivePhotos.cpp index adac7bf29..5148926ec 100644 --- a/desktop-widgets/tab-widgets/TabDivePhotos.cpp +++ b/desktop-widgets/tab-widgets/TabDivePhotos.cpp @@ -10,6 +10,7 @@ #include #include #include +#include //TODO: Remove those in the future. #include "../mainwindow.h" @@ -54,6 +55,7 @@ void TabDivePhotos::contextMenuEvent(QContextMenuEvent *event) popup.addSeparator(); popup.addAction(tr("Delete selected media files"), this, SLOT(removeSelectedPhotos())); popup.addAction(tr("Delete all media files"), this, SLOT(removeAllPhotos())); + popup.addAction(tr("Open folder of selected media files"), this, SLOT(openFolderOfSelectedFiles())); popup.addAction(tr("Recalculate selected thumbnails"), this, SLOT(recalculateSelectedThumbnails())); popup.exec(event->globalPos()); event->accept(); @@ -83,6 +85,22 @@ void TabDivePhotos::removeSelectedPhotos() DivePictureModel::instance()->removePictures(getSelectedFilenames()); } +void TabDivePhotos::openFolderOfSelectedFiles() +{ + QVector directories; + for (const QString &filename: getSelectedFilenames()) { + QFileInfo info(filename); + if (!info.exists()) + continue; + QString path = info.absolutePath(); + if (path.isEmpty() || directories.contains(path)) + continue; + directories.append(path); + } + for (const QString &dir: directories) + QDesktopServices::openUrl(QUrl::fromLocalFile(dir)); +} + void TabDivePhotos::recalculateSelectedThumbnails() { Thumbnailer::instance()->calculateThumbnails(getSelectedFilenames()); diff --git a/desktop-widgets/tab-widgets/TabDivePhotos.h b/desktop-widgets/tab-widgets/TabDivePhotos.h index a752fef19..f172df180 100644 --- a/desktop-widgets/tab-widgets/TabDivePhotos.h +++ b/desktop-widgets/tab-widgets/TabDivePhotos.h @@ -27,6 +27,7 @@ private slots: void removeAllPhotos(); void removeSelectedPhotos(); void recalculateSelectedThumbnails(); + void openFolderOfSelectedFiles(); void changeZoomLevel(int delta); private: