mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-03 00:15:21 +00:00
feat: 任务栏声音和关机选项添加配置功能
使用QGsettings读取配置,控制控件状态 Log: 任务栏声音和关机选项添加配置功能 Task: https://pms.uniontech.com/zentao/task-view-62236.html Change-Id: I83a5eb815e536fc50a284b18782fa2b209e6cdea
This commit is contained in:
parent
ffc27409fb
commit
b4d5e8967a
@ -1,5 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<schemalist>
|
||||
<enum id="com.deepin.dde.dock.module.StatusMode">
|
||||
<value value="0" nick="Enabled" />
|
||||
<value value="1" nick="Disabled" />
|
||||
<value value="2" nick="Hiden" />
|
||||
</enum>
|
||||
<schema path="/com/deepin/dde/dock/module/app/" id="com.deepin.dde.dock.module.app" gettext-domain="DDE">
|
||||
<key type="b" name="control">
|
||||
<default>false</default>
|
||||
@ -255,6 +260,22 @@
|
||||
Control Menu pluginsettings visible
|
||||
</description>
|
||||
</key>
|
||||
<key name="show-suspend" type="b">
|
||||
<default>true</default>
|
||||
<summary>The suspend options show or not</summary>
|
||||
</key>
|
||||
<key name="show-hibernate" type="b">
|
||||
<default>true</default>
|
||||
<summary>The hibernate options show or not</summary>
|
||||
</key>
|
||||
<key name="show-shutdown" type="b">
|
||||
<default>true</default>
|
||||
<summary>The shutdown options show or not</summary>
|
||||
</key>
|
||||
<key name="show-lock" type="b">
|
||||
<default>true</default>
|
||||
<summary>The lock options show or not</summary>
|
||||
</key>
|
||||
</schema>
|
||||
<schema path="/com/deepin/dde/dock/module/sound/" id="com.deepin.dde.dock.module.sound" gettext-domain="DDE">
|
||||
<key type="b" name="control">
|
||||
@ -278,6 +299,11 @@
|
||||
Control Menu Enable
|
||||
</description>
|
||||
</key>
|
||||
<key enum="com.deepin.dde.dock.module.StatusMode" name="sound-output-slider">
|
||||
<default>'Enabled'</default>
|
||||
<summary>change sound output slider status</summary>
|
||||
<description>default is Enabled</description>
|
||||
</key>
|
||||
</schema>
|
||||
<schema path="/com/deepin/dde/dock/module/trash/" id="com.deepin.dde.dock.module.trash" gettext-domain="DDE">
|
||||
<key type="b" name="control">
|
||||
|
@ -30,17 +30,21 @@
|
||||
#include <QIcon>
|
||||
#include <QSettings>
|
||||
|
||||
#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<QString, QVariant> 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<QString, QVariant> reboot;
|
||||
reboot["itemId"] = "Restart";
|
||||
@ -134,10 +140,12 @@ const QString ShutdownPlugin::itemContextMenu(const QString &itemKey)
|
||||
;
|
||||
if (can_sleep) {
|
||||
QMap<QString, QVariant> 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<QString, QVariant> 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<QString, QVariant> 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<QString, QVariant> logout;
|
||||
logout["itemId"] = "Logout";
|
||||
|
@ -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
|
||||
|
@ -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();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -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<Port *> m_ports;
|
||||
QString m_deviceInfo;
|
||||
QPointer<Port> m_lastPort;//最后一个因为只有一个设备而被直接移除的设备
|
||||
QGSettings *m_gsettings;
|
||||
};
|
||||
|
||||
#endif // SOUNDAPPLET_H
|
||||
|
Loading…
x
Reference in New Issue
Block a user