diff --git a/frame/util/menuworker.cpp b/frame/util/menuworker.cpp index 5356dcc2a..37d972826 100644 --- a/frame/util/menuworker.cpp +++ b/frame/util/menuworker.cpp @@ -28,6 +28,7 @@ #include #include +#include #define DIS_INS DisplayManager::instance() @@ -145,98 +146,10 @@ QMenu *MenuWorker::createMenu() settingsMenu->addAction(act); } - // 插件 - if (!menuSettings || !menuSettings->keys().contains("hideVisible") || menuSettings->get("hideVisible").toBool()) { - QMenu *hideSubMenu = new QMenu(settingsMenu); - hideSubMenu->setAccessibleName("pluginsmenu"); - - QAction *hideSubMenuAct = new QAction(tr("Plugins"), this); - hideSubMenuAct->setMenu(hideSubMenu); - - // create actions - QList actions; - for (auto *p : DockItemManager::instance()->pluginList()) { - if (!p->pluginIsAllowDisable()) - continue; - - const bool enable = !p->pluginIsDisable(); - const QString &name = p->pluginName(); - const QString &display = p->pluginDisplayName(); - - // 模块和菜单均需要响应enable配置的变化 - const QGSettings *setting = Utils::ModuleSettingsPtr(name); - if (setting && setting->keys().contains("enable") && !setting->get("enable").toBool()) { - continue; - } - delete setting; - setting = nullptr; - - // 未开启窗口特效时,同样不显示多任务视图插件 - if (name == "multitasking" && !DWindowManagerHelper::instance()->hasComposite()) { - continue; - } - - if (name == "deepin-screen-recorder-plugin") { - continue; - } - - QAction *act = new QAction(display, this); - act->setCheckable(true); - act->setChecked(enable); - act->setData(name); - - connect(act, &QAction::triggered, this, [ p ]{p->pluginStateSwitched();}); - - // check plugin hide menu. - const QGSettings *pluginSettings = Utils::ModuleSettingsPtr(name); - if (pluginSettings && (!pluginSettings->keys().contains("visible") || pluginSettings->get("visible").toBool())) - actions << act; - } - - // sort by name - std::sort(actions.begin(), actions.end(), [](QAction * a, QAction * b) -> bool { - return a->data().toString() > b->data().toString(); - }); - - // add plugins actions - qDeleteAll(hideSubMenu->actions()); - for (auto act : actions) - hideSubMenu->addAction(act); - - // add plugins menu - settingsMenu->addAction(hideSubMenuAct); - } - - // 多屏显示设置 仅多屏扩展模式显示菜单 - if ((!menuSettings || !menuSettings->keys().contains("multiscreenVisible") || menuSettings->get("multiscreenVisible").toBool()) - && (QApplication::screens().size() > 1) && !DIS_INS->isCopyMode()) { - bool onlyShowPrimary = Utils::SettingValue("com.deepin.dde.dock.mainwindow", "/com/deepin/dde/dock/mainwindow/", "onlyShowPrimary", false).toBool(); - - QMenu *displaySubMenu = new QMenu(settingsMenu); - displaySubMenu->setAccessibleName("displaysubmenu"); - - QAction *onlyPrimaryScreenModeAct = new QAction(tr("Only on main screen"), this); - QAction *followMouseModeAct = new QAction(tr("On screen where the cursor is"), this); - - onlyPrimaryScreenModeAct->setCheckable(true); - followMouseModeAct->setCheckable(true); - - onlyPrimaryScreenModeAct->setChecked(onlyShowPrimary); - followMouseModeAct->setChecked(!onlyShowPrimary); - - connect(onlyPrimaryScreenModeAct, &QAction::triggered, this, [ = ]{ - Utils::SettingSaveValue("com.deepin.dde.dock.mainwindow", "/com/deepin/dde/dock/mainwindow/", "onlyShowPrimary", true); - }); - connect(followMouseModeAct, &QAction::triggered, this, [ = ]{ - Utils::SettingSaveValue("com.deepin.dde.dock.mainwindow", "/com/deepin/dde/dock/mainwindow/", "onlyShowPrimary", false); - }); - - displaySubMenu->addAction(onlyPrimaryScreenModeAct); - displaySubMenu->addAction(followMouseModeAct); - - QAction *act = new QAction(tr("Show the Dock"), this); - act->setMenu(displaySubMenu); - + // 任务栏配置 + if (!menuSettings || !menuSettings->keys().contains("settingVisible") || menuSettings->get("settingVisible").toBool()) { + QAction *act = new QAction(tr("Dock setting"), this); + connect(act, &QAction::triggered, this, &MenuWorker::onDockSettingsTriggered); settingsMenu->addAction(act); } @@ -245,6 +158,17 @@ QMenu *MenuWorker::createMenu() return settingsMenu; } +void MenuWorker::onDockSettingsTriggered() +{ + DDBusSender().service("com.deepin.dde.ControlCenter") + .path("/com/deepin/dde/ControlCenter") + .interface("com.deepin.dde.ControlCenter") + .method("ShowPage") + .arg(QString("personalization")) + .arg(QString("Dock")) + .call(); +} + void MenuWorker::showDockSettingsMenu() { // 菜单功能被禁用 diff --git a/frame/util/menuworker.h b/frame/util/menuworker.h index 8844402f2..a240b23c9 100644 --- a/frame/util/menuworker.h +++ b/frame/util/menuworker.h @@ -49,6 +49,9 @@ public slots: private: QMenu *createMenu(); +private slots: + void onDockSettingsTriggered(); + private: DBusDock *m_dockInter; bool m_autoHide; diff --git a/gschema/com.deepin.dde.dock.module.gschema.xml b/gschema/com.deepin.dde.dock.module.gschema.xml index d0447371c..e16f3580e 100644 --- a/gschema/com.deepin.dde.dock.module.gschema.xml +++ b/gschema/com.deepin.dde.dock.module.gschema.xml @@ -426,6 +426,14 @@ Control Module Visible + + true + Module Visible + + Control Setting Menu Visible + + + true Module Visible @@ -440,7 +448,7 @@ Control Multiscreen Visible - + diff --git a/plugins/dcc-dock-settings-plugin/settings_module.cpp b/plugins/dcc-dock-settings-plugin/settings_module.cpp index 29de209c4..72e6b0ff7 100644 --- a/plugins/dcc-dock-settings-plugin/settings_module.cpp +++ b/plugins/dcc-dock-settings-plugin/settings_module.cpp @@ -33,7 +33,7 @@ SettingsModule::SettingsModule() SettingsModule::~SettingsModule() { - delete m_moduleWidget; + } void SettingsModule::initialize()