diff --git a/frame/util/menuworker.cpp b/frame/util/menuworker.cpp index 314478559..695cacef8 100644 --- a/frame/util/menuworker.cpp +++ b/frame/util/menuworker.cpp @@ -91,8 +91,8 @@ void MenuWorker::initUI() modeSubMenu->setAccessibleName("modesubmenu"); modeSubMenu->addAction(m_fashionModeAct); modeSubMenu->addAction(m_efficientModeAct); - QAction *modeSubMenuAct = new QAction(tr("Mode"), this); - modeSubMenuAct->setMenu(modeSubMenu); + m_modeSubMenuAct = new QAction(tr("Mode"), this); + m_modeSubMenuAct->setMenu(modeSubMenu); QMenu *locationSubMenu = new QMenu(m_settingsMenu); locationSubMenu->setAccessibleName("locationsubmenu"); @@ -100,26 +100,23 @@ void MenuWorker::initUI() locationSubMenu->addAction(m_bottomPosAct); locationSubMenu->addAction(m_leftPosAct); locationSubMenu->addAction(m_rightPosAct); - QAction *locationSubMenuAct = new QAction(tr("Location"), this); - locationSubMenuAct->setMenu(locationSubMenu); + m_locationSubMenuAct = new QAction(tr("Location"), this); + m_locationSubMenuAct->setMenu(locationSubMenu); QMenu *statusSubMenu = new QMenu(m_settingsMenu); statusSubMenu->setAccessibleName("statussubmenu"); statusSubMenu->addAction(m_keepShownAct); statusSubMenu->addAction(m_keepHiddenAct); statusSubMenu->addAction(m_smartHideAct); - QAction *statusSubMenuAct = new QAction(tr("Status"), this); - statusSubMenuAct->setMenu(statusSubMenu); + m_statusSubMenuAct = new QAction(tr("Status"), this); + m_statusSubMenuAct->setMenu(statusSubMenu); m_hideSubMenu = new QMenu(m_settingsMenu); m_hideSubMenu->setAccessibleName("pluginsmenu"); - QAction *hideSubMenuAct = new QAction(tr("Plugins"), this); - hideSubMenuAct->setMenu(m_hideSubMenu); + m_hideSubMenuAct = new QAction(tr("Plugins"), this); + m_hideSubMenuAct->setMenu(m_hideSubMenu); - m_settingsMenu->addAction(modeSubMenuAct); - m_settingsMenu->addAction(locationSubMenuAct); - m_settingsMenu->addAction(statusSubMenuAct); - m_settingsMenu->addAction(hideSubMenuAct); + setSettingsMenu(); m_settingsMenu->setTitle("Settings Menu"); } @@ -138,6 +135,24 @@ void MenuWorker::initConnection() } } +void MenuWorker::setSettingsMenu() +{ + for (auto act : m_settingsMenu->actions()) + m_settingsMenu->removeAction(act); + + if (GSettingsByMenu()->get("modeVisible").toBool()) + m_settingsMenu->addAction(m_modeSubMenuAct); + + if (GSettingsByMenu()->get("locationVisible").toBool()) + m_settingsMenu->addAction(m_locationSubMenuAct); + + if (GSettingsByMenu()->get("statusVisible").toBool()) + m_settingsMenu->addAction(m_statusSubMenuAct); + + if (GSettingsByMenu()->get("hideVisible").toBool()) + m_settingsMenu->addAction(m_hideSubMenuAct); +} + void MenuWorker::showDockSettingsMenu() { QTimer::singleShot(0, this, [=] { @@ -145,6 +160,7 @@ void MenuWorker::showDockSettingsMenu() }); setAutoHide(false); + setSettingsMenu(); bool hasComposite = DWindowManagerHelper::instance()->hasComposite(); diff --git a/frame/util/menuworker.h b/frame/util/menuworker.h index 2010c03e8..d54fc4ff8 100644 --- a/frame/util/menuworker.h +++ b/frame/util/menuworker.h @@ -53,6 +53,9 @@ public: // TODO 是否还有其他的插件未处理其gsettings配置,这里只是移植之前的代码 void onTrashGSettingsChanged(const QString &key); +private: + void setSettingsMenu(); + signals: void autoHideChanged(const bool autoHide) const; void trayCountChanged(); @@ -80,6 +83,10 @@ private: QAction *m_keepShownAct; QAction *m_keepHiddenAct; QAction *m_smartHideAct; + QAction *m_modeSubMenuAct; + QAction *m_locationSubMenuAct; + QAction *m_statusSubMenuAct; + QAction *m_hideSubMenuAct; bool m_menuEnable; bool m_autoHide; diff --git a/gschema/com.deepin.dde.dock.module.gschema.xml b/gschema/com.deepin.dde.dock.module.gschema.xml index 8b5568288..acc0ccf65 100644 --- a/gschema/com.deepin.dde.dock.module.gschema.xml +++ b/gschema/com.deepin.dde.dock.module.gschema.xml @@ -271,7 +271,36 @@ Control Module Enable + + + true + Module Visible + + Control Module Visible + + + true + Module Visible + + Control Module Visible + + + + true + Module Visible + + Control Module Visible + + + + true + Module Visible + + Control Module Visible + + +