mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-04 17:33:05 +00:00
feat: 添加任务栏空白处右键菜单子菜单是否显示的开关
添加gsettings配置作为设置右键菜单子菜单是否显示的开关, 修改配置立即生效 Log: 添加任务栏空白处右键菜单子菜单是否显示的开关, 修改配置立即生效 Change-Id: If16f2fc471fe6af98c7b68d805a8ca555c705bb4
This commit is contained in:
parent
9dc9273afd
commit
e5b5c3ce28
@ -27,18 +27,6 @@
|
|||||||
|
|
||||||
#include <DApplication>
|
#include <DApplication>
|
||||||
|
|
||||||
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)
|
MenuWorker::MenuWorker(DBusDock *dockInter,QWidget *parent)
|
||||||
: QObject (parent)
|
: QObject (parent)
|
||||||
, m_itemManager(DockItemManager::instance(this))
|
, m_itemManager(DockItemManager::instance(this))
|
||||||
@ -68,6 +56,15 @@ MenuWorker::MenuWorker(DBusDock *dockInter,QWidget *parent)
|
|||||||
MenuWorker::~MenuWorker()
|
MenuWorker::~MenuWorker()
|
||||||
{
|
{
|
||||||
delete m_settingsMenu;
|
delete m_settingsMenu;
|
||||||
|
|
||||||
|
QList<QString> keys = m_settingsModuleMap.keys();
|
||||||
|
foreach (QString key, keys) {
|
||||||
|
QGSettings *settings = m_settingsModuleMap[key];
|
||||||
|
m_settingsModuleMap.remove(key);
|
||||||
|
|
||||||
|
delete settings;
|
||||||
|
settings = nullptr;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MenuWorker::initMember()
|
void MenuWorker::initMember()
|
||||||
@ -124,8 +121,8 @@ void MenuWorker::initConnection()
|
|||||||
{
|
{
|
||||||
connect(m_settingsMenu, &QMenu::triggered, this, &MenuWorker::menuActionClicked);
|
connect(m_settingsMenu, &QMenu::triggered, this, &MenuWorker::menuActionClicked);
|
||||||
|
|
||||||
connect(GSettingsByMenu(), &QGSettings::changed, this, &MenuWorker::onGSettingsChanged);
|
connect(settingsModule("menu"), &QGSettings::changed, this, &MenuWorker::onGSettingsChanged);
|
||||||
connect(GSettingsByTrash(), &QGSettings::changed, this, &MenuWorker::onTrashGSettingsChanged);
|
connect(settingsModule("trash"), &QGSettings::changed, this, &MenuWorker::onTrashGSettingsChanged);
|
||||||
|
|
||||||
connect(m_itemManager, &DockItemManager::trayVisableCountChanged, this, &MenuWorker::trayVisableCountChanged, Qt::QueuedConnection);
|
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()
|
void MenuWorker::setSettingsMenu()
|
||||||
{
|
{
|
||||||
for (auto act : m_settingsMenu->actions())
|
for (auto act : m_settingsMenu->actions())
|
||||||
m_settingsMenu->removeAction(act);
|
m_settingsMenu->removeAction(act);
|
||||||
|
|
||||||
if (GSettingsByMenu()->get("modeVisible").toBool())
|
if (settingsModule("menu")->get("modeVisible").toBool())
|
||||||
m_settingsMenu->addAction(m_modeSubMenuAct);
|
m_settingsMenu->addAction(m_modeSubMenuAct);
|
||||||
|
|
||||||
if (GSettingsByMenu()->get("locationVisible").toBool())
|
if (settingsModule("menu")->get("locationVisible").toBool())
|
||||||
m_settingsMenu->addAction(m_locationSubMenuAct);
|
m_settingsMenu->addAction(m_locationSubMenuAct);
|
||||||
|
|
||||||
if (GSettingsByMenu()->get("statusVisible").toBool())
|
if (settingsModule("menu")->get("statusVisible").toBool())
|
||||||
m_settingsMenu->addAction(m_statusSubMenuAct);
|
m_settingsMenu->addAction(m_statusSubMenuAct);
|
||||||
|
|
||||||
if (GSettingsByMenu()->get("hideVisible").toBool())
|
if (settingsModule("menu")->get("hideVisible").toBool())
|
||||||
m_settingsMenu->addAction(m_hideSubMenuAct);
|
m_settingsMenu->addAction(m_hideSubMenuAct);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -190,7 +195,8 @@ void MenuWorker::showDockSettingsMenu()
|
|||||||
act->setChecked(enable);
|
act->setChecked(enable);
|
||||||
act->setData(name);
|
act->setData(name);
|
||||||
|
|
||||||
actions << act;
|
if (!settingsModule(name)->keys().contains("visible") || settingsModule(name)->get("visible").toBool())
|
||||||
|
actions << act;
|
||||||
}
|
}
|
||||||
|
|
||||||
// sort by name
|
// sort by name
|
||||||
@ -228,12 +234,8 @@ void MenuWorker::onGSettingsChanged(const QString &key)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
QGSettings *setting = GSettingsByMenu();
|
const QGSettings *setting = settingsModule("menu");
|
||||||
|
m_menuEnable = setting->keys().contains("enable") ? setting->get("enable").toBool() : m_menuEnable;
|
||||||
if (setting->keys().contains("enable")) {
|
|
||||||
const bool isEnable = GSettingsByMenu()->keys().contains("enable") && GSettingsByMenu()->get("enable").toBool();
|
|
||||||
m_menuEnable=isEnable && setting->get("enable").toBool();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MenuWorker::onTrashGSettingsChanged(const QString &key)
|
void MenuWorker::onTrashGSettingsChanged(const QString &key)
|
||||||
@ -242,11 +244,8 @@ void MenuWorker::onTrashGSettingsChanged(const QString &key)
|
|||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
QGSettings *setting = GSettingsByTrash();
|
const QGSettings *setting = settingsModule("trash");
|
||||||
|
m_trashPluginShow = setting->keys().contains("enable") ? setting->get("enable").toBool() : m_trashPluginShow;
|
||||||
if (setting->keys().contains("enable")) {
|
|
||||||
m_trashPluginShow = GSettingsByTrash()->keys().contains("enable") && GSettingsByTrash()->get("enable").toBool();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MenuWorker::menuActionClicked(QAction *action)
|
void MenuWorker::menuActionClicked(QAction *action)
|
||||||
|
@ -30,6 +30,7 @@ using DBusDock = com::deepin::dde::daemon::Dock;
|
|||||||
class QMenu;
|
class QMenu;
|
||||||
class QAction;
|
class QAction;
|
||||||
class DockItemManager;
|
class DockItemManager;
|
||||||
|
class QGSettings;
|
||||||
/**
|
/**
|
||||||
* @brief The MenuWorker class 此类用于处理任务栏右键菜单的逻辑
|
* @brief The MenuWorker class 此类用于处理任务栏右键菜单的逻辑
|
||||||
*/
|
*/
|
||||||
@ -54,6 +55,7 @@ public:
|
|||||||
void onTrashGSettingsChanged(const QString &key);
|
void onTrashGSettingsChanged(const QString &key);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
const QGSettings *settingsModule(const QString &module);
|
||||||
void setSettingsMenu();
|
void setSettingsMenu();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
@ -71,6 +73,7 @@ public slots:
|
|||||||
private:
|
private:
|
||||||
DockItemManager *m_itemManager;
|
DockItemManager *m_itemManager;
|
||||||
DBusDock *m_dockInter;
|
DBusDock *m_dockInter;
|
||||||
|
QMap<QString, QGSettings*> m_settingsModuleMap;
|
||||||
|
|
||||||
QMenu *m_settingsMenu;
|
QMenu *m_settingsMenu;
|
||||||
QMenu *m_hideSubMenu;
|
QMenu *m_hideSubMenu;
|
||||||
|
@ -112,6 +112,13 @@
|
|||||||
Control Menu Enable
|
Control Menu Enable
|
||||||
</description>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
|
<key type="b" name="visible">
|
||||||
|
<default>true</default>
|
||||||
|
<summary>Module visible</summary>
|
||||||
|
<description>
|
||||||
|
Control Menu pluginsettings visible
|
||||||
|
</description>
|
||||||
|
</key>
|
||||||
</schema>
|
</schema>
|
||||||
<schema path="/com/deepin/dde/dock/module/network/" id="com.deepin.dde.dock.module.network" gettext-domain="DDE">
|
<schema path="/com/deepin/dde/dock/module/network/" id="com.deepin.dde.dock.module.network" gettext-domain="DDE">
|
||||||
<key type="b" name="control">
|
<key type="b" name="control">
|
||||||
@ -158,6 +165,13 @@
|
|||||||
Control Menu Enable
|
Control Menu Enable
|
||||||
</description>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
|
<key type="b" name="visible">
|
||||||
|
<default>true</default>
|
||||||
|
<summary>Module visible</summary>
|
||||||
|
<description>
|
||||||
|
Control Menu pluginsettings visible
|
||||||
|
</description>
|
||||||
|
</key>
|
||||||
</schema>
|
</schema>
|
||||||
<schema path="/com/deepin/dde/dock/module/bluetooth/" id="com.deepin.dde.dock.module.bluetooth" gettext-domain="DDE">
|
<schema path="/com/deepin/dde/dock/module/bluetooth/" id="com.deepin.dde.dock.module.bluetooth" gettext-domain="DDE">
|
||||||
<key type="b" name="control">
|
<key type="b" name="control">
|
||||||
@ -234,6 +248,13 @@
|
|||||||
Control Menu Enable
|
Control Menu Enable
|
||||||
</description>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
|
<key type="b" name="visible">
|
||||||
|
<default>true</default>
|
||||||
|
<summary>Module visible</summary>
|
||||||
|
<description>
|
||||||
|
Control Menu pluginsettings visible
|
||||||
|
</description>
|
||||||
|
</key>
|
||||||
</schema>
|
</schema>
|
||||||
<schema path="/com/deepin/dde/dock/module/sound/" id="com.deepin.dde.dock.module.sound" gettext-domain="DDE">
|
<schema path="/com/deepin/dde/dock/module/sound/" id="com.deepin.dde.dock.module.sound" gettext-domain="DDE">
|
||||||
<key type="b" name="control">
|
<key type="b" name="control">
|
||||||
@ -280,6 +301,13 @@
|
|||||||
Control Menu Enable
|
Control Menu Enable
|
||||||
</description>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
|
<key type="b" name="visible">
|
||||||
|
<default>true</default>
|
||||||
|
<summary>Module visible</summary>
|
||||||
|
<description>
|
||||||
|
Control Menu pluginsettings visible
|
||||||
|
</description>
|
||||||
|
</key>
|
||||||
</schema>
|
</schema>
|
||||||
<schema path="/com/deepin/dde/dock/module/systemtray/" id="com.deepin.dde.dock.module.systemtray" gettext-domain="DDE">
|
<schema path="/com/deepin/dde/dock/module/systemtray/" id="com.deepin.dde.dock.module.systemtray" gettext-domain="DDE">
|
||||||
<key type="b" name="control">
|
<key type="b" name="control">
|
||||||
@ -373,6 +401,52 @@
|
|||||||
Control Module Enable
|
Control Module Enable
|
||||||
</description>
|
</description>
|
||||||
</key>
|
</key>
|
||||||
|
<key type="b" name="menu-enable">
|
||||||
|
<default>true</default>
|
||||||
|
<summary>Menu Enable</summary>
|
||||||
|
<description>
|
||||||
|
Control Menu Enable
|
||||||
|
</description>
|
||||||
|
</key>
|
||||||
|
<key type="b" name="visible">
|
||||||
|
<default>true</default>
|
||||||
|
<summary>Module visible</summary>
|
||||||
|
<description>
|
||||||
|
Control Menu pluginsettings visible
|
||||||
|
</description>
|
||||||
|
</key>
|
||||||
|
</schema>
|
||||||
|
<schema path="/com/deepin/dde/dock/module/multitasking/" id="com.deepin.dde.dock.module.multitasking" gettext-domain="DDE">
|
||||||
|
<key type="b" name="menu-enable">
|
||||||
|
<default>true</default>
|
||||||
|
<summary>Menu Enable</summary>
|
||||||
|
<description>
|
||||||
|
Control Menu Enable
|
||||||
|
</description>
|
||||||
|
</key>
|
||||||
|
<key type="b" name="visible">
|
||||||
|
<default>true</default>
|
||||||
|
<summary>Module visible</summary>
|
||||||
|
<description>
|
||||||
|
Control Menu pluginsettings visible
|
||||||
|
</description>
|
||||||
|
</key>
|
||||||
|
</schema>
|
||||||
|
<schema path="/com/deepin/dde/dock/module/show-desktop/" id="com.deepin.dde.dock.module.show-desktop" gettext-domain="DDE">
|
||||||
|
<key type="b" name="menu-enable">
|
||||||
|
<default>true</default>
|
||||||
|
<summary>Menu Enable</summary>
|
||||||
|
<description>
|
||||||
|
Control Menu Enable
|
||||||
|
</description>
|
||||||
|
</key>
|
||||||
|
<key type="b" name="visible">
|
||||||
|
<default>true</default>
|
||||||
|
<summary>Module visible</summary>
|
||||||
|
<description>
|
||||||
|
Control Menu pluginsettings visible
|
||||||
|
</description>
|
||||||
|
</key>
|
||||||
</schema>
|
</schema>
|
||||||
<schema path="/com/deepin/dde/dock/touch/" id="com.deepin.dde.dock.touch" gettext-domain="DDE">
|
<schema path="/com/deepin/dde/dock/touch/" id="com.deepin.dde.dock.touch" gettext-domain="DDE">
|
||||||
<key type="i" name="resize-height">
|
<key type="i" name="resize-height">
|
||||||
|
Loading…
x
Reference in New Issue
Block a user