From 82e77f7b231d7c6db5abf3a219681a9d97b23877 Mon Sep 17 00:00:00 2001 From: Michail Vourlakos Date: Sat, 3 Feb 2018 21:56:05 +0200 Subject: [PATCH] more improvements to containmentactions --- app/dock/dockmenumanager.cpp | 12 ++--- app/layoutmanager.cpp | 20 -------- app/layoutmanager.h | 8 --- containmentactions/contextmenu/CMakeLists.txt | 7 ++- containmentactions/contextmenu/menu.cpp | 51 ++++++++++++++++--- containmentactions/contextmenu/menu.h | 8 ++- plasmoid/package/contents/ui/ContextMenu.qml | 10 ++-- 7 files changed, 67 insertions(+), 49 deletions(-) diff --git a/app/dock/dockmenumanager.cpp b/app/dock/dockmenumanager.cpp index 0c1493c33..b35c6b4ea 100644 --- a/app/dock/dockmenumanager.cpp +++ b/app/dock/dockmenumanager.cpp @@ -427,16 +427,16 @@ void DockMenuManager::addContainmentActions(QMenu *desktopMenu, QEvent *event) auto *dockCorona = qobject_cast(m_dockView->corona()); if (dockCorona) { - desktopMenu->addAction(dockCorona->layoutManager()->addWidgetsAction()); + //desktopMenu->addAction(dockCorona->layoutManager()->addWidgetsAction()); } - desktopMenu->addAction(m_dockView->containment()->actions()->action(QStringLiteral("configure"))); + // desktopMenu->addAction(m_dockView->containment()->actions()->action(QStringLiteral("configure"))); } } else { - auto *dockCorona = qobject_cast(m_dockView->corona()); - desktopMenu->addSeparator(); + auto *dockCorona = qobject_cast(m_dockView->corona()); + if (dockCorona && dockCorona->layoutManager()->menuLayouts().count() > 1) { const QIcon identityIcon = QIcon::fromTheme("user-identity"); QMenu *layoutsMenu = new QMenu(desktopMenu); @@ -481,11 +481,11 @@ void DockMenuManager::addContainmentActions(QMenu *desktopMenu, QEvent *event) dockCorona->layoutManager()->showLatteSettingsDialog(Dock::LayoutPage); }); - layoutsMenu->addAction(editLayoutsAction); + // layoutsMenu->addAction(editLayoutsAction); } - desktopMenu->addAction(dockCorona->layoutManager()->addWidgetsAction()); + //desktopMenu->addAction(dockCorona->layoutManager()->addWidgetsAction()); desktopMenu->addActions(actions); } diff --git a/app/layoutmanager.cpp b/app/layoutmanager.cpp index 47434363d..c8eaaff08 100644 --- a/app/layoutmanager.cpp +++ b/app/layoutmanager.cpp @@ -52,12 +52,6 @@ LayoutManager::LayoutManager(QObject *parent) m_corona = qobject_cast(parent); if (m_corona) { - //! create the add widgets action - const QIcon addWidIcon = QIcon::fromTheme("add"); - m_addWidgetsAction = new QAction(addWidIcon, i18n("Add Widgets..."), this); - m_addWidgetsAction->setStatusTip(i18n("Show Plasma Widget Explorer")); - connect(m_addWidgetsAction, &QAction::triggered, this, &LayoutManager::showWidgetsExplorer); - connect(m_corona->universalSettings(), &UniversalSettings::currentLayoutNameChanged, this, &LayoutManager::currentLayoutNameChanged); connect(m_corona->universalSettings(), &UniversalSettings::showInfoWindowChanged, this, &LayoutManager::showInfoWindowChanged); @@ -176,11 +170,6 @@ Importer *LayoutManager::importer() return m_importer; } -QAction *LayoutManager::addWidgetsAction() -{ - return m_addWidgetsAction; -} - LaunchersSignals *LayoutManager::launchersSignals() { return m_launchersSignals; @@ -1113,15 +1102,6 @@ void LayoutManager::showInfoWindow(QString info, int duration, QStringList activ } } -void LayoutManager::showWidgetsExplorer() -{ - QDBusInterface iface("org.kde.plasmashell", "/PlasmaShell", "", QDBusConnection::sessionBus()); - - if (iface.isValid()) { - iface.call("toggleWidgetExplorer"); - } -} - //! it is used just in order to provide translations for the presets void LayoutManager::ghostForTranslatedPresets() { diff --git a/app/layoutmanager.h b/app/layoutmanager.h index e6365c578..5e4e00d40 100644 --- a/app/layoutmanager.h +++ b/app/layoutmanager.h @@ -59,8 +59,6 @@ class LayoutManager : public QObject { Q_PROPERTY(QStringList layouts READ layouts NOTIFY layoutsChanged) Q_PROPERTY(QStringList menuLayouts READ menuLayouts NOTIFY menuLayoutsChanged) - Q_PROPERTY(QAction *addWidgetsAction READ addWidgetsAction NOTIFY addWidgetsActionChanged) - Q_PROPERTY(LaunchersSignals *launchersSignals READ launchersSignals NOTIFY launchersSignalsChanged) public: @@ -94,8 +92,6 @@ public: Dock::LayoutsMemoryUsage memoryUsage() const; void setMemoryUsage(Dock::LayoutsMemoryUsage memoryUsage); - QAction *addWidgetsAction(); - QHash *currentDockViews() const; QHash *layoutDockViews(const QString &layoutName) const; //! returns an active layout with that #id (name), it returns null if such @@ -128,7 +124,6 @@ public slots: signals: void activeLayoutsChanged(); - void addWidgetsActionChanged(); void currentLayoutChanged(); void currentLayoutNameChanged(); void launchersSignalsChanged(); @@ -140,7 +135,6 @@ signals: private slots: void currentActivityChanged(const QString &id); void showInfoWindowChanged(); - void showWidgetsExplorer(); void syncMultipleLayoutsToActivities(QString layoutForOrphans = QString()); private: @@ -175,8 +169,6 @@ private: QStringList m_menuLayouts; QStringList m_presetsPaths; - QAction *m_addWidgetsAction{nullptr}; - QHash m_assignedLayouts; QTimer m_dynamicSwitchTimer; diff --git a/containmentactions/contextmenu/CMakeLists.txt b/containmentactions/contextmenu/CMakeLists.txt index 731764ef8..9f3e7d63b 100644 --- a/containmentactions/contextmenu/CMakeLists.txt +++ b/containmentactions/contextmenu/CMakeLists.txt @@ -9,8 +9,11 @@ add_library(plasma_containmentactions_lattecontextmenu MODULE ${contextmenu_SRCS kcoreaddons_desktop_to_json(plasma_containmentactions_lattecontextmenu plasma-containmentactions-lattecontextmenu.desktop) target_link_libraries(plasma_containmentactions_lattecontextmenu - Qt5::Widgets - KF5::Plasma) + Qt5::DBus + Qt5::Widgets + KF5::I18n + KF5::XmlGui + KF5::Plasma) install(TARGETS plasma_containmentactions_lattecontextmenu DESTINATION ${KDE_INSTALL_PLUGINDIR}) install(FILES plasma-containmentactions-lattecontextmenu.desktop DESTINATION ${KDE_INSTALL_KSERVICES5DIR}) diff --git a/containmentactions/contextmenu/menu.cpp b/containmentactions/contextmenu/menu.cpp index 0b9536d35..42433fa29 100644 --- a/containmentactions/contextmenu/menu.cpp +++ b/containmentactions/contextmenu/menu.cpp @@ -21,6 +21,10 @@ #include #include +#include + +#include +#include #include #include @@ -29,6 +33,7 @@ Menu::Menu(QObject *parent, const QVariantList &args) : Plasma::ContainmentActions(parent, args) { + makeActions(); } Menu::~Menu() @@ -36,17 +41,30 @@ Menu::~Menu() qDeleteAll(m_actions); } -void Menu::makeMenu() +void Menu::makeActions() { qDeleteAll(m_actions); m_actions.clear(); - QAction *action = new QAction(QIcon::fromTheme("edit"), "Print Message...", this); - connect(action, &QAction::triggered, [ = ]() { + m_printAction = new QAction(QIcon::fromTheme("edit"), "Print Message...", this); + connect(m_printAction, &QAction::triggered, [ = ]() { qDebug() << "Action Trigerred !!!"; }); - m_actions << action; + m_addWidgetsAction = new QAction(QIcon::fromTheme("add"), i18n("Add Widgets..."), this); + m_addWidgetsAction->setStatusTip(i18n("Show Plasma Widget Explorer")); + connect(m_addWidgetsAction, &QAction::triggered, [ = ]() { + QDBusInterface iface("org.kde.plasmashell", "/PlasmaShell", "", QDBusConnection::sessionBus()); + + if (iface.isValid()) { + iface.call("toggleWidgetExplorer"); + } + }); + + m_configureAction = new QAction(QIcon::fromTheme("configure"), i18nc("dock/panel settings window", "Dock/Panel Settings"), this); + m_configureAction->setShortcut(QKeySequence()); + connect(m_configureAction, &QAction::triggered, this, &Menu::requestConfiguration); + /*foreach (const QString &id, m_consumer.activities(KActivities::Info::Running)) { KActivities::Info info(id); QAction *action = new QAction(QIcon::fromTheme(info.icon()), info.name(), this); @@ -67,12 +85,33 @@ void Menu::makeMenu() } +void Menu::requestConfiguration() +{ + if (this->containment()) { + emit this->containment()->configureRequested(containment()); + } +} + QList Menu::contextualActions() { - makeMenu(); + QList actions; + actions << m_printAction; + actions << m_addWidgetsAction; + actions << m_configureAction; + + return actions; +} + +QAction *Menu::action(const QString &name) +{ + if (name == "add widgets") { + return m_addWidgetsAction; + } else if (name == "configure") { + return m_configureAction; + } - return m_actions; + return nullptr; } K_EXPORT_PLASMA_CONTAINMENTACTIONS_WITH_JSON(lattecontextmenu, Menu, "plasma-containmentactions-lattecontextmenu.json") diff --git a/containmentactions/contextmenu/menu.h b/containmentactions/contextmenu/menu.h index 11e3eccb6..6efc98935 100644 --- a/containmentactions/contextmenu/menu.h +++ b/containmentactions/contextmenu/menu.h @@ -35,11 +35,17 @@ public: QList contextualActions() override; + QAction *action(const QString &name); private Q_SLOTS: - void makeMenu(); + void makeActions(); + void requestConfiguration(); private: QListm_actions; + + QAction *m_addWidgetsAction{nullptr}; + QAction *m_configureAction{nullptr}; + QAction *m_printAction{nullptr}; }; #endif diff --git a/plasmoid/package/contents/ui/ContextMenu.qml b/plasmoid/package/contents/ui/ContextMenu.qml index 38d26ada7..e6508656c 100644 --- a/plasmoid/package/contents/ui/ContextMenu.qml +++ b/plasmoid/package/contents/ui/ContextMenu.qml @@ -896,18 +896,16 @@ PlasmaComponents.ContextMenu { PlasmaComponents.MenuItem { id: addWidgets - visible: latteDock && latteDock.universalLayoutManager.addWidgetsAction - icon: "add" - text: i18n("Add Widgets...") - - onClicked: latteDock.universalLayoutManager.addWidgetsAction.trigger(); + action: latteDock.containmentActions()[1] + visible: latteDock } + PlasmaComponents.MenuItem { id: configureItem - action: latteDock ? latteDock.containmentActions()[1] : plasmoid.action("configure") + action: latteDock ? latteDock.containmentActions()[2] : plasmoid.action("configure") } PlasmaComponents.MenuItem {