From 6b64c7ff56e0025608d03f21e64f47431e23ef23 Mon Sep 17 00:00:00 2001 From: Saravanan K Date: Thu, 20 May 2021 16:04:41 +0000 Subject: [PATCH] Add action to places panel context menu trash entry to open trash settings BUG: 367583 FIXED-IN: 21.08 --- src/panels/places/placespanel.cpp | 13 ++++++++++++- src/settings/dolphinsettingsdialog.cpp | 4 ++-- src/settings/dolphinsettingsdialog.h | 2 ++ 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/panels/places/placespanel.cpp b/src/panels/places/placespanel.cpp index d49ad39ec4..1f5f0260fa 100644 --- a/src/panels/places/placespanel.cpp +++ b/src/panels/places/placespanel.cpp @@ -23,6 +23,7 @@ #include "placesview.h" #include "trash/dolphintrash.h" #include "views/draganddrophelper.h" +#include "settings/dolphinsettingsdialog.h" #include #include @@ -181,6 +182,7 @@ void PlacesPanel::slotItemContextMenuRequested(int index, const QPointF& pos) QMenu menu(this); QAction* emptyTrashAction = nullptr; + QAction* configureTrashAction = nullptr; QAction* editAction = nullptr; QAction* teardownAction = nullptr; QAction* ejectAction = nullptr; @@ -200,7 +202,7 @@ void PlacesPanel::slotItemContextMenuRequested(int index, const QPointF& pos) if (item->url().isLocalFile()) { propertiesAction = menu.addAction(QIcon::fromTheme(QStringLiteral("document-properties")), i18nc("@action:inmenu", "Properties")); } - if (!isDevice && !isTrash) { + if (!isDevice) { menu.addSeparator(); } @@ -236,6 +238,10 @@ void PlacesPanel::slotItemContextMenuRequested(int index, const QPointF& pos) } } + if (isTrash) { + configureTrashAction = menu.addAction(QIcon::fromTheme(QStringLiteral("configure")), i18nc("@action:inmenu", "Configure Trash...")); + } + if (!isDevice) { editAction = menu.addAction(QIcon::fromTheme(QStringLiteral("edit-entry")), i18nc("@item:inmenu", "Edit...")); } @@ -255,6 +261,11 @@ void PlacesPanel::slotItemContextMenuRequested(int index, const QPointF& pos) if (action) { if (action == emptyTrashAction) { Trash::empty(this); + } else if (action == configureTrashAction) { + DolphinSettingsDialog* settingsDialog = new DolphinSettingsDialog(item->url(), this); + settingsDialog->setCurrentPage(settingsDialog->trashSettings); + settingsDialog->setAttribute(Qt::WA_DeleteOnClose); + settingsDialog->show(); } else { // The index might have changed if devices were added/removed while // the context menu was open. diff --git a/src/settings/dolphinsettingsdialog.cpp b/src/settings/dolphinsettingsdialog.cpp index 0303e59069..281cb7ba58 100644 --- a/src/settings/dolphinsettingsdialog.cpp +++ b/src/settings/dolphinsettingsdialog.cpp @@ -99,9 +99,9 @@ DolphinSettingsDialog::DolphinSettingsDialog(const QUrl& url, QWidget* parent, K trashSettingsPage = createTrashSettingsPage(this); #endif if (trashSettingsPage) { - KPageWidgetItem* trashSettingsFrame = addPage(trashSettingsPage, + trashSettings = addPage(trashSettingsPage, i18nc("@title:group", "Trash")); - trashSettingsFrame->setIcon(QIcon::fromTheme(QStringLiteral("user-trash"))); + trashSettings->setIcon(QIcon::fromTheme(QStringLiteral("user-trash"))); connect(trashSettingsPage, &TrashSettingsPage::changed, this, &DolphinSettingsDialog::enableApply); } diff --git a/src/settings/dolphinsettingsdialog.h b/src/settings/dolphinsettingsdialog.h index 65ce95274e..f9a5652eaa 100644 --- a/src/settings/dolphinsettingsdialog.h +++ b/src/settings/dolphinsettingsdialog.h @@ -26,6 +26,8 @@ public: explicit DolphinSettingsDialog(const QUrl& url, QWidget* parent = nullptr, KActionCollection* actions = {}); ~DolphinSettingsDialog() override; + KPageWidgetItem* trashSettings; + Q_SIGNALS: void settingsChanged();