┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGregor Mi <[email protected]>2015-05-03 20:40:04 +0200
committerGregor Mi <[email protected]>2015-05-03 20:42:23 +0200
commitece6650ecd3af0eb450e28a9aadcb0f4dd26cb24 (patch)
treea38b2f93acb202defc31d297a7996d8d1d56b22a /src
parent945658459702f008c56bf28d21bc7d3666c7e9db (diff)
Remove SpaceInfoToolsMenu and use KMoreToolsMenuFactory instead
Reduces the amount of needed code. NEW: by using KMoreTools the menu is now user-configurable and will automatically extended when KMoreToolsPresets gets new tools. REVIEW: 122911
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt1
-rw-r--r--src/statusbar/spaceinfotoolsmenu.cpp98
-rw-r--r--src/statusbar/spaceinfotoolsmenu.h41
-rw-r--r--src/statusbar/statusbarspaceinfo.cpp14
4 files changed, 11 insertions, 143 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 560545aed..498e7c596 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -242,7 +242,6 @@ set(dolphin_SRCS
statusbar/dolphinstatusbar.cpp
statusbar/mountpointobserver.cpp
statusbar/mountpointobservercache.cpp
- statusbar/spaceinfotoolsmenu.cpp
statusbar/spaceinfoobserver.cpp
statusbar/statusbarspaceinfo.cpp
views/zoomlevelinfo.cpp
diff --git a/src/statusbar/spaceinfotoolsmenu.cpp b/src/statusbar/spaceinfotoolsmenu.cpp
deleted file mode 100644
index 40ca56e19..000000000
--- a/src/statusbar/spaceinfotoolsmenu.cpp
+++ /dev/null
@@ -1,98 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2014 by Gregor Mi <[email protected]> *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the *
- * Free Software Foundation, Inc., *
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
- ***************************************************************************/
-
-#include "spaceinfotoolsmenu.h"
-
-#include <QAction>
-#include <QUrl>
-
-#include <KMountPoint>
-#include <KLocalizedString>
-#include <KRun>
-#include <KService>
-
-SpaceInfoToolsMenu::SpaceInfoToolsMenu(QWidget* parent, QUrl url)
- : QMenu(parent)
-{
- // find service
- //
- const auto filelightService = KService::serviceByDesktopName("org.kde.filelight");
- if (filelightService && filelightService->isApplication()) {
- const auto filelightIcon = QIcon::fromTheme(filelightService->icon());
-
- if (url.isLocalFile()) { // 2015-01-12: Filelight can handle FTP connections but KIO/kioexec cannot (bug or feature?), so we don't offer it in this case
- // add action and connect signals
- //
- const auto startFilelightDirectoryAction = addAction(i18nc("@action:inmenu %1 service name", "%1 - current folder", filelightService->genericName()));
- startFilelightDirectoryAction->setIcon(filelightIcon);
-
- connect(startFilelightDirectoryAction, &QAction::triggered, this, [filelightService, url](bool) {
- KRun::runService(*filelightService, { url }, nullptr);
- });
- }
-
- if (url.isLocalFile()) { // makes no sense for non-local URLs (e.g. FTP server), so we don't offer it in this case
- // add action and connect signals
- //
- const auto startFilelightDeviceAction = addAction(i18nc("@action:inmenu %1 service name", "%1 - current device", filelightService->genericName()));
- startFilelightDeviceAction->setIcon(filelightIcon);
-
- connect(startFilelightDeviceAction, &QAction::triggered, this, [filelightService, url](bool) {
- KMountPoint::Ptr mountPoint = KMountPoint::currentMountPoints().findByPath(url.toLocalFile());
- KRun::runService(*filelightService, { mountPoint->mountPoint() }, nullptr);
- });
- }
-
- // add action and connect signals
- //
- const auto startFilelightAllDevicesAction = addAction(i18nc("@action:inmenu %1 service name", "%1 - all devices", filelightService->genericName()));
- startFilelightAllDevicesAction->setIcon(filelightIcon);
-
- connect(startFilelightAllDevicesAction, &QAction::triggered, this, [filelightService](bool) {
- KRun::runService(*filelightService, { }, nullptr);
- });
- } else {
- const auto startFilelightDirectoryAction = addAction(i18nc("@action:inmenu", "Filelight [not installed]"));
- startFilelightDirectoryAction->setEnabled(false);
- }
-
- // find service
- //
- const auto kdiskfreeService = KService::serviceByDesktopName("kdf");
- if (kdiskfreeService && kdiskfreeService->isApplication()) {
- //
- // add action and connect signals
- //
- const auto startKDiskFreeAction = addAction(kdiskfreeService->genericName());
- startKDiskFreeAction->setIcon(QIcon::fromTheme(kdiskfreeService->icon()));
-
- connect(startKDiskFreeAction, &QAction::triggered, this, [kdiskfreeService](bool) {
- KRun::runService(*kdiskfreeService, { }, nullptr);
- });
- } else {
- const auto startKDiskFreeAction = addAction(i18nc("@action:inmenu", "KDiskFree [not installed]"));
- startKDiskFreeAction->setEnabled(false);
- }
-}
-
-SpaceInfoToolsMenu::~SpaceInfoToolsMenu()
-{
-}
-
-
diff --git a/src/statusbar/spaceinfotoolsmenu.h b/src/statusbar/spaceinfotoolsmenu.h
deleted file mode 100644
index 3ca2e184f..000000000
--- a/src/statusbar/spaceinfotoolsmenu.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2014 by Gregor Mi <[email protected]> *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the *
- * Free Software Foundation, Inc., *
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
- ***************************************************************************/
-
-#ifndef SPACEINFOTOOLSMENU_H
-#define SPACEINFOTOOLSMENU_H
-
-#include <QObject>
-#include <QMenu>
-
-class QWidget;
-class QUrl;
-
-/**
- * A menu with tools that help to find out more about free disk space for the given url.
- */
-class SpaceInfoToolsMenu : public QMenu
-{
- Q_OBJECT
-
-public:
- explicit SpaceInfoToolsMenu(QWidget* parent, QUrl url);
- virtual ~SpaceInfoToolsMenu();
-};
-
-#endif
diff --git a/src/statusbar/statusbarspaceinfo.cpp b/src/statusbar/statusbarspaceinfo.cpp
index 127641e60..29135566f 100644
--- a/src/statusbar/statusbarspaceinfo.cpp
+++ b/src/statusbar/statusbarspaceinfo.cpp
@@ -21,11 +21,11 @@
#include "statusbarspaceinfo.h"
#include "spaceinfoobserver.h"
-#include "spaceinfotoolsmenu.h"
#include <QMouseEvent>
#include <KLocalizedString>
+#include <KNS3/KMoreToolsMenuFactory>
#include <KIO/Job>
@@ -71,8 +71,16 @@ void StatusBarSpaceInfo::hideEvent(QHideEvent* event)
void StatusBarSpaceInfo::mousePressEvent(QMouseEvent* event)
{
if (event->button() == Qt::LeftButton) {
- SpaceInfoToolsMenu spaceInfoToolsMenu(this, m_url);
- spaceInfoToolsMenu.exec(QCursor::pos());
+ // Creates a menu with tools that help to find out more about free
+ // disk space for the given url.
+
+ // Note that this object must live long enough in case the user opens
+ // the "Configure..." dialog
+ KMoreToolsMenuFactory menuFactory("dolphin/statusbar-diskspace-menu");
+ auto menu = menuFactory.createMenuFromGroupingNames(
+ { "disk-usage", "more:", "disk-partitions" }, m_url);
+
+ menu->exec(QCursor::pos());
}
}