From e5b5c3ce28204b0f8fc89ba427f071f82dbab52a Mon Sep 17 00:00:00 2001 From: weizhixiang Date: Fri, 19 Feb 2021 18:08:06 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E6=A0=8F=E7=A9=BA=E7=99=BD=E5=A4=84=E5=8F=B3=E9=94=AE=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E5=AD=90=E8=8F=9C=E5=8D=95=E6=98=AF=E5=90=A6=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E7=9A=84=E5=BC=80=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加gsettings配置作为设置右键菜单子菜单是否显示的开关, 修改配置立即生效 Log: 添加任务栏空白处右键菜单子菜单是否显示的开关, 修改配置立即生效 Change-Id: If16f2fc471fe6af98c7b68d805a8ca555c705bb4 --- frame/util/menuworker.cpp | 59 ++++++++------- frame/util/menuworker.h | 3 + .../com.deepin.dde.dock.module.gschema.xml | 74 +++++++++++++++++++ 3 files changed, 106 insertions(+), 30 deletions(-) diff --git a/frame/util/menuworker.cpp b/frame/util/menuworker.cpp index 695cacef8..148ac4b93 100644 --- a/frame/util/menuworker.cpp +++ b/frame/util/menuworker.cpp @@ -27,18 +27,6 @@ #include -static QGSettings *GSettingsByMenu() -{ - static QGSettings settings("com.deepin.dde.dock.module.menu"); - return &settings; -} - -static QGSettings *GSettingsByTrash() -{ - static QGSettings settings("com.deepin.dde.dock.module.trash"); - return &settings; -} - MenuWorker::MenuWorker(DBusDock *dockInter,QWidget *parent) : QObject (parent) , m_itemManager(DockItemManager::instance(this)) @@ -68,6 +56,15 @@ MenuWorker::MenuWorker(DBusDock *dockInter,QWidget *parent) MenuWorker::~MenuWorker() { delete m_settingsMenu; + + QList keys = m_settingsModuleMap.keys(); + foreach (QString key, keys) { + QGSettings *settings = m_settingsModuleMap[key]; + m_settingsModuleMap.remove(key); + + delete settings; + settings = nullptr; + } } void MenuWorker::initMember() @@ -124,8 +121,8 @@ void MenuWorker::initConnection() { connect(m_settingsMenu, &QMenu::triggered, this, &MenuWorker::menuActionClicked); - connect(GSettingsByMenu(), &QGSettings::changed, this, &MenuWorker::onGSettingsChanged); - connect(GSettingsByTrash(), &QGSettings::changed, this, &MenuWorker::onTrashGSettingsChanged); + connect(settingsModule("menu"), &QGSettings::changed, this, &MenuWorker::onGSettingsChanged); + connect(settingsModule("trash"), &QGSettings::changed, this, &MenuWorker::onTrashGSettingsChanged); connect(m_itemManager, &DockItemManager::trayVisableCountChanged, this, &MenuWorker::trayVisableCountChanged, Qt::QueuedConnection); @@ -135,21 +132,29 @@ void MenuWorker::initConnection() } } +const QGSettings *MenuWorker::settingsModule(const QString &module) +{ + if (!m_settingsModuleMap.contains(module)) + m_settingsModuleMap.insert(module, new QGSettings(QString("com.deepin.dde.dock.module." + module).toUtf8())); + + return m_settingsModuleMap[module]; +} + void MenuWorker::setSettingsMenu() { for (auto act : m_settingsMenu->actions()) m_settingsMenu->removeAction(act); - if (GSettingsByMenu()->get("modeVisible").toBool()) + if (settingsModule("menu")->get("modeVisible").toBool()) m_settingsMenu->addAction(m_modeSubMenuAct); - if (GSettingsByMenu()->get("locationVisible").toBool()) + if (settingsModule("menu")->get("locationVisible").toBool()) m_settingsMenu->addAction(m_locationSubMenuAct); - if (GSettingsByMenu()->get("statusVisible").toBool()) + if (settingsModule("menu")->get("statusVisible").toBool()) m_settingsMenu->addAction(m_statusSubMenuAct); - if (GSettingsByMenu()->get("hideVisible").toBool()) + if (settingsModule("menu")->get("hideVisible").toBool()) m_settingsMenu->addAction(m_hideSubMenuAct); } @@ -190,7 +195,8 @@ void MenuWorker::showDockSettingsMenu() act->setChecked(enable); act->setData(name); - actions << act; + if (!settingsModule(name)->keys().contains("visible") || settingsModule(name)->get("visible").toBool()) + actions << act; } // sort by name @@ -228,12 +234,8 @@ void MenuWorker::onGSettingsChanged(const QString &key) return; } - QGSettings *setting = GSettingsByMenu(); - - if (setting->keys().contains("enable")) { - const bool isEnable = GSettingsByMenu()->keys().contains("enable") && GSettingsByMenu()->get("enable").toBool(); - m_menuEnable=isEnable && setting->get("enable").toBool(); - } + const QGSettings *setting = settingsModule("menu"); + m_menuEnable = setting->keys().contains("enable") ? setting->get("enable").toBool() : m_menuEnable; } void MenuWorker::onTrashGSettingsChanged(const QString &key) @@ -242,11 +244,8 @@ void MenuWorker::onTrashGSettingsChanged(const QString &key) return ; } - QGSettings *setting = GSettingsByTrash(); - - if (setting->keys().contains("enable")) { - m_trashPluginShow = GSettingsByTrash()->keys().contains("enable") && GSettingsByTrash()->get("enable").toBool(); - } + const QGSettings *setting = settingsModule("trash"); + m_trashPluginShow = setting->keys().contains("enable") ? setting->get("enable").toBool() : m_trashPluginShow; } void MenuWorker::menuActionClicked(QAction *action) diff --git a/frame/util/menuworker.h b/frame/util/menuworker.h index d54fc4ff8..b238bf6ab 100644 --- a/frame/util/menuworker.h +++ b/frame/util/menuworker.h @@ -30,6 +30,7 @@ using DBusDock = com::deepin::dde::daemon::Dock; class QMenu; class QAction; class DockItemManager; +class QGSettings; /** * @brief The MenuWorker class 此类用于处理任务栏右键菜单的逻辑 */ @@ -54,6 +55,7 @@ public: void onTrashGSettingsChanged(const QString &key); private: + const QGSettings *settingsModule(const QString &module); void setSettingsMenu(); signals: @@ -71,6 +73,7 @@ public slots: private: DockItemManager *m_itemManager; DBusDock *m_dockInter; + QMap m_settingsModuleMap; QMenu *m_settingsMenu; QMenu *m_hideSubMenu; diff --git a/gschema/com.deepin.dde.dock.module.gschema.xml b/gschema/com.deepin.dde.dock.module.gschema.xml index 068ae11f5..58790f4cf 100644 --- a/gschema/com.deepin.dde.dock.module.gschema.xml +++ b/gschema/com.deepin.dde.dock.module.gschema.xml @@ -112,6 +112,13 @@ Control Menu Enable + + true + Module visible + + Control Menu pluginsettings visible + + @@ -158,6 +165,13 @@ Control Menu Enable + + true + Module visible + + Control Menu pluginsettings visible + + @@ -234,6 +248,13 @@ Control Menu Enable + + true + Module visible + + Control Menu pluginsettings visible + + @@ -280,6 +301,13 @@ Control Menu Enable + + true + Module visible + + Control Menu pluginsettings visible + + @@ -373,6 +401,52 @@ Control Module Enable + + true + Menu Enable + + Control Menu Enable + + + + true + Module visible + + Control Menu pluginsettings visible + + + + + + true + Menu Enable + + Control Menu Enable + + + + true + Module visible + + Control Menu pluginsettings visible + + + + + + true + Menu Enable + + Control Menu Enable + + + + true + Module visible + + Control Menu pluginsettings visible + +