fix: 修复飞行模式显示问题

1.gsettings不存在的情况下,或者值为true的情况下,飞行模式表现和需求一致。
2.如果gsettings值存在且为false,那么飞行模式始终不显示。
3.gsettings的值除手动修改外,不应有其他修改方式

Log: 修复飞行模式显示问题
Bug: https://pms.uniontech.com/zentao/bug-view-112804.html
Influence: 任务栏-飞行模式插件-显示效果与需求保持一致
Change-Id: I775662712aa5415bdcd738d476010f6bca09023f
This commit is contained in:
songwentao 2022-02-14 10:55:10 +08:00
parent 3a408ac347
commit 071be0f37b
4 changed files with 47 additions and 8 deletions

View File

@ -58,9 +58,9 @@ AirplaneModeItem::AirplaneModeItem(QWidget *parent)
m_applet->setEnabled(enable);
refreshIcon();
if (!enable)
if (!enable || !Utils::SettingValue("com.deepin.dde.dock.module.airplane-mode", "/com/deepin/dde/dock/module/airplane-mode/", "enable", true).toBool())
emit removeItem();
else
else if (Utils::SettingValue("com.deepin.dde.dock.module.airplane-mode", "/com/deepin/dde/dock/module/airplane-mode/", "enable", true).toBool())
emit addItem();
updateTips();

View File

@ -147,5 +147,3 @@ void AirplaneModePlugin::addPlugin()
m_proxyInter->itemAdded(this, AIRPLANEMODE_KEY);
m_proxyInter->saveValue(this, STATE_KEY, true);
}

View File

@ -22,11 +22,15 @@
#include "systemtrayitem.h"
#include "utils.h"
#include <com_deepin_daemon_airplanemode.h>
#include <QProcess>
#include <QDebug>
#include <xcb/xproto.h>
using DBusAirplaneMode = com::deepin::daemon::AirplaneMode;
Dock::Position SystemTrayItem::DockPosition = Dock::Position::Top;
QPointer<DockPopupWindow> SystemTrayItem::PopupWindow = nullptr;
@ -488,6 +492,18 @@ void SystemTrayItem::onGSettingsChanged(const QString &key) {
if (m_gsettings && m_gsettings->keys().contains("enable")) {
const bool visible = m_gsettings->get("enable").toBool();
// 飞行模式显示条件: gsettings为true且飞行模式已开启
DBusAirplaneMode airplaneBus("com.deepin.daemon.AirplaneMode",
"/com/deepin/daemon/AirplaneMode",
QDBusConnection::systemBus(),
this);
if (m_pluginInter && m_pluginInter->pluginName() == "airplane-mode" && !airplaneBus.enabled()) {
setVisible(false);
emit itemVisibleChanged(false);
return;
}
setVisible(visible);
emit itemVisibleChanged(visible);
}

View File

@ -23,9 +23,13 @@
#include "pluginsiteminterface.h"
#include "utils.h"
#include <com_deepin_daemon_airplanemode.h>
#include <QDebug>
#include <QDir>
using DBusAirplaneMode = com::deepin::daemon::AirplaneMode;
SystemTraysController::SystemTraysController(QObject *parent)
: AbstractPluginsController(parent)
{
@ -36,12 +40,20 @@ void SystemTraysController::itemAdded(PluginsItemInterface * const itemInter, co
{
QMap<PluginsItemInterface *, QMap<QString, QObject *>> &mPluginsMap = pluginsMap();
SystemTrayItem *item = nullptr;
// check if same item added
if (mPluginsMap.contains(itemInter))
if (mPluginsMap[itemInter].contains(itemKey))
return;
if (mPluginsMap[itemInter].contains(itemKey)) {
if (itemKey != "airplane-mode-key")
return;
item = static_cast<SystemTrayItem *>(pluginItemAt(itemInter, itemKey));
}
if (!item)
item = new SystemTrayItem(itemInter, itemKey);
SystemTrayItem *item = new SystemTrayItem(itemInter, itemKey);
connect(item, &SystemTrayItem::itemVisibleChanged, this, [=] (bool visible){
if (visible) {
emit pluginItemAdded(itemKey, item);
@ -53,9 +65,22 @@ void SystemTraysController::itemAdded(PluginsItemInterface * const itemInter, co
mPluginsMap[itemInter][itemKey] = item;
if (itemInter->pluginName() == "airplane-mode") {
// 飞行模式显示条件: gsettings为true且飞行模式已开启
DBusAirplaneMode airplaneBus("com.deepin.daemon.AirplaneMode",
"/com/deepin/daemon/AirplaneMode",
QDBusConnection::systemBus(),
this);
if (!Utils::SettingValue(QString("com.deepin.dde.dock.module.airplane-mode"), QByteArray(), "enable", true).toBool() || !airplaneBus.enabled()) {
emit pluginItemRemoved(itemKey, item);
return;
}
}
// 隐藏的插件不加入到布局中
if (Utils::SettingValue(QString("com.deepin.dde.dock.module.") + itemInter->pluginName(), QByteArray(), "enable", true).toBool())
if (Utils::SettingValue(QString("com.deepin.dde.dock.module.") + itemInter->pluginName(), QByteArray(), "enable", true).toBool()) {
emit pluginItemAdded(itemKey, item);
}
}
void SystemTraysController::itemUpdate(PluginsItemInterface * const itemInter, const QString &itemKey)