From b4d5e8967ac4bb0082518d01012a4ff4bb5604d6 Mon Sep 17 00:00:00 2001 From: xiechuan Date: Sat, 27 Feb 2021 15:50:24 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BB=BB=E5=8A=A1=E6=A0=8F=E5=A3=B0?= =?UTF-8?q?=E9=9F=B3=E5=92=8C=E5=85=B3=E6=9C=BA=E9=80=89=E9=A1=B9=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E9=85=8D=E7=BD=AE=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 使用QGsettings读取配置,控制控件状态 Log: 任务栏声音和关机选项添加配置功能 Task: https://pms.uniontech.com/zentao/task-view-62236.html Change-Id: I83a5eb815e536fc50a284b18782fa2b209e6cdea --- .../com.deepin.dde.dock.module.gschema.xml | 26 +++++++++ plugins/shutdown/shutdownplugin.cpp | 56 +++++++++++-------- plugins/shutdown/shutdownplugin.h | 2 + plugins/sound/soundapplet.cpp | 40 +++++++++++-- plugins/sound/soundapplet.h | 3 + 5 files changed, 100 insertions(+), 27 deletions(-) diff --git a/gschema/com.deepin.dde.dock.module.gschema.xml b/gschema/com.deepin.dde.dock.module.gschema.xml index b7351b4a4..5e3551f6e 100644 --- a/gschema/com.deepin.dde.dock.module.gschema.xml +++ b/gschema/com.deepin.dde.dock.module.gschema.xml @@ -1,5 +1,10 @@ + + + + + false @@ -255,6 +260,22 @@ Control Menu pluginsettings visible + + true + The suspend options show or not + + + true + The hibernate options show or not + + + true + The shutdown options show or not + + + true + The lock options show or not + @@ -278,6 +299,11 @@ Control Menu Enable + + 'Enabled' + change sound output slider status + default is Enabled + diff --git a/plugins/shutdown/shutdownplugin.cpp b/plugins/shutdown/shutdownplugin.cpp index bd176ee95..a449e0029 100644 --- a/plugins/shutdown/shutdownplugin.cpp +++ b/plugins/shutdown/shutdownplugin.cpp @@ -30,17 +30,21 @@ #include #include -#define PLUGIN_STATE_KEY "enable" +#define PLUGIN_STATE_KEY "enable" +#define GSETTING_SHOW_SUSPEND "showSuspend" +#define GSETTING_SHOW_HIBERNATE "showHibernate" +#define GSETTING_SHOW_SHUTDOWN "showShutdown" +#define GSETTING_SHOW_LOCK "showLock" DCORE_USE_NAMESPACE using namespace Dock; ShutdownPlugin::ShutdownPlugin(QObject *parent) - : QObject(parent), - - m_pluginLoaded(false), - m_tipsLabel(new TipsWidget), - m_powerManagerInter(new DBusPowerManager("com.deepin.daemon.PowerManager", "/com/deepin/daemon/PowerManager", QDBusConnection::systemBus(), this)) + : QObject(parent) + , m_pluginLoaded(false) + , m_tipsLabel(new TipsWidget) + , m_powerManagerInter(new DBusPowerManager("com.deepin.daemon.PowerManager", "/com/deepin/daemon/PowerManager", QDBusConnection::systemBus(), this)) + , m_gsettings(new QGSettings("com.deepin.dde.dock.module.shutdown", QByteArray(), this)) { m_tipsLabel->setVisible(false); m_tipsLabel->setAccessibleName("shutdown"); @@ -114,10 +118,12 @@ const QString ShutdownPlugin::itemContextMenu(const QString &itemKey) items.reserve(6); QMap shutdown; - shutdown["itemId"] = "Shutdown"; - shutdown["itemText"] = tr("Shut down"); - shutdown["isActive"] = true; - items.push_back(shutdown); + if (m_gsettings->get(GSETTING_SHOW_SHUTDOWN).toBool()) { + shutdown["itemId"] = "Shutdown"; + shutdown["itemText"] = tr("Shut down"); + shutdown["isActive"] = true; + items.push_back(shutdown); + } QMap reboot; reboot["itemId"] = "Restart"; @@ -134,10 +140,12 @@ const QString ShutdownPlugin::itemContextMenu(const QString &itemKey) ; if (can_sleep) { QMap suspend; - suspend["itemId"] = "Suspend"; - suspend["itemText"] = tr("Suspend"); - suspend["isActive"] = true; - items.push_back(suspend); + if (m_gsettings->get(GSETTING_SHOW_SUSPEND).toBool()) { + suspend["itemId"] = "Suspend"; + suspend["itemText"] = tr("Suspend"); + suspend["isActive"] = true; + items.push_back(suspend); + } } bool can_hibernate = enviromentVar.contains("POWER_CAN_HIBERNATE") ? QVariant(enviromentVar.value("POWER_CAN_HIBERNATE")).toBool() @@ -145,19 +153,23 @@ const QString ShutdownPlugin::itemContextMenu(const QString &itemKey) if (can_hibernate) { QMap hibernate; - hibernate["itemId"] = "Hibernate"; - hibernate["itemText"] = tr("Hibernate"); - hibernate["isActive"] = true; - items.push_back(hibernate); + if (m_gsettings->get(GSETTING_SHOW_HIBERNATE).toBool()) { + hibernate["itemId"] = "Hibernate"; + hibernate["itemText"] = tr("Hibernate"); + hibernate["isActive"] = true; + items.push_back(hibernate); + } } #endif QMap lock; - lock["itemId"] = "Lock"; - lock["itemText"] = tr("Lock"); - lock["isActive"] = true; - items.push_back(lock); + if (m_gsettings->get(GSETTING_SHOW_LOCK).toBool()) { + lock["itemId"] = "Lock"; + lock["itemText"] = tr("Lock"); + lock["isActive"] = true; + items.push_back(lock); + } QMap logout; logout["itemId"] = "Logout"; diff --git a/plugins/shutdown/shutdownplugin.h b/plugins/shutdown/shutdownplugin.h index 57dab6a12..6680c5559 100644 --- a/plugins/shutdown/shutdownplugin.h +++ b/plugins/shutdown/shutdownplugin.h @@ -31,6 +31,7 @@ namespace Dock { class TipsWidget; } +class QGSettings; class ShutdownPlugin : public QObject, PluginsItemInterface { Q_OBJECT @@ -112,6 +113,7 @@ private: ShutdownWidget *m_shutdownWidget; Dock::TipsWidget *m_tipsLabel; DBusPowerManager* m_powerManagerInter; + QGSettings *m_gsettings; }; #endif // SHUTDOWNPLUGIN_H diff --git a/plugins/sound/soundapplet.cpp b/plugins/sound/soundapplet.cpp index dd2bf3804..33709558c 100644 --- a/plugins/sound/soundapplet.cpp +++ b/plugins/sound/soundapplet.cpp @@ -40,6 +40,8 @@ #define ITEM_HEIGHT 24 #define ITEM_SPACING 5 #define DEVICE_SPACING 10 +#define SLIDER_HIGHT 32 +#define GSETTING_SOUND_OUTPUT_SLIDER "soundOutputSlider" DWIDGET_USE_NAMESPACE DGUI_USE_NAMESPACE @@ -118,6 +120,7 @@ SoundApplet::SoundApplet(QWidget *parent) , m_model(new QStandardItemModel(m_listView)) , m_deviceInfo("") , m_lastPort(nullptr) + , m_gsettings(new QGSettings("com.deepin.dde.dock.module.sound", QByteArray(), this)) { initUi(); @@ -176,8 +179,16 @@ void SoundApplet::initUi() m_volumeBtn->setFixedSize(ICON_SIZE, ICON_SIZE); m_volumeBtn->setIconSize(QSize(ICON_SIZE, ICON_SIZE)); m_volumeBtn->setFlat(true); + + m_volumeSlider->setFixedHeight(SLIDER_HIGHT); m_volumeSlider->setMinimum(0); m_volumeSlider->setMaximum(m_audioInter->maxUIVolume() * 100.0f); + updateVolumeSliderStatus(m_gsettings->get(GSETTING_SOUND_OUTPUT_SLIDER).toString()); + connect(m_gsettings, &QGSettings::changed, [ = ] (const QString &key) { + if (key == GSETTING_SOUND_OUTPUT_SLIDER) { + updateVolumeSliderStatus(m_gsettings->get(GSETTING_SOUND_OUTPUT_SLIDER).toString()); + } + }); m_centralLayout = new QVBoxLayout; m_centralLayout->addLayout(deviceLineLayout); @@ -187,7 +198,6 @@ void SoundApplet::initUi() m_listView->setModel(m_model); m_centralLayout->addWidget(m_listView); - m_centralWidget->setLayout(m_centralLayout); m_centralWidget->setFixedWidth(WIDTH); m_centralWidget->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred); @@ -549,7 +559,12 @@ void SoundApplet::updateCradsInfo() void SoundApplet::enableDevice(bool flag) { - m_volumeSlider->setEnabled(flag); + QString status = m_gsettings->get(GSETTING_SOUND_OUTPUT_SLIDER).toString(); + if ("Disabled" == status ) { + m_volumeSlider->setEnabled(false); + } else if ("Enabled" == status) { + m_volumeSlider->setEnabled(flag); + } m_volumeBtn->setEnabled(flag); m_soundShow->setEnabled(flag); m_volumeIconMax->setEnabled(flag); @@ -596,6 +611,24 @@ void SoundApplet::removeDisabledDevice(QString portId, unsigned int cardId) qDebug() << "remove disabled output device"; } +void SoundApplet::updateVolumeSliderStatus(const QString &status) +{ + bool flag = true; + if ("Enabled" == status) { + flag = true; + } else if ("Disabled" == status) { + flag = false; + } + m_volumeSlider->setEnabled(flag); + m_volumeBtn->setEnabled(flag); + m_volumeIconMax->setEnabled(flag); + + flag = "Hiden" != status; + m_volumeSlider->setVisible(flag); + m_volumeBtn->setVisible(flag); + m_volumeIconMax->setVisible(flag); +} + void SoundApplet::haldleDbusSignal(const QDBusMessage &msg) { Q_UNUSED(msg) @@ -640,6 +673,3 @@ void SoundApplet::portEnableChange(unsigned int cardId, QString portId) m_deviceInfo = ""; updateCradsInfo(); } - - - diff --git a/plugins/sound/soundapplet.h b/plugins/sound/soundapplet.h index f6e159a9b..2e44d751b 100644 --- a/plugins/sound/soundapplet.h +++ b/plugins/sound/soundapplet.h @@ -41,6 +41,7 @@ using DBusAudio = com::deepin::daemon::Audio; using DBusSink = com::deepin::daemon::audio::Sink; class HorizontalSeparator; +class QGSettings; namespace Dock{ class TipsWidget; @@ -136,6 +137,7 @@ private: void disableAllDevice();//禁用所有设备 void removeLastDevice();//移除最后一个设备 void removeDisabledDevice(QString portId, unsigned int cardId); + void updateVolumeSliderStatus(const QString &status); private: QWidget *m_centralWidget; @@ -154,6 +156,7 @@ private: QList m_ports; QString m_deviceInfo; QPointer m_lastPort;//最后一个因为只有一个设备而被直接移除的设备 + QGSettings *m_gsettings; }; #endif // SOUNDAPPLET_H