diff --git a/plugins/airplane-mode/airplanemodeitem.cpp b/plugins/airplane-mode/airplanemodeitem.cpp index 165f72431..68c4d61f7 100644 --- a/plugins/airplane-mode/airplanemodeitem.cpp +++ b/plugins/airplane-mode/airplanemodeitem.cpp @@ -57,12 +57,7 @@ AirplaneModeItem::AirplaneModeItem(QWidget *parent) connect(m_airplaneModeInter, &DBusAirplaneMode::EnabledChanged, this, [this](bool enable) { m_applet->setEnabled(enable); refreshIcon(); - - if (!enable || !Utils::SettingValue("com.deepin.dde.dock.module.airplane-mode", "/com/deepin/dde/dock/module/airplane-mode/", "enable", true).toBool()) - emit removeItem(); - else if (Utils::SettingValue("com.deepin.dde.dock.module.airplane-mode", "/com/deepin/dde/dock/module/airplane-mode/", "enable", true).toBool()) - emit addItem(); - + Q_EMIT airplaneEnableChanged(enable); updateTips(); }); @@ -153,6 +148,11 @@ void AirplaneModeItem::updateTips() m_tipsLabel->setText(tr("Airplane mode disabled")); } +bool AirplaneModeItem::airplaneEnable() +{ + return m_airplaneModeInter->enabled(); +} + void AirplaneModeItem::resizeEvent(QResizeEvent *e) { QWidget::resizeEvent(e); diff --git a/plugins/airplane-mode/airplanemodeitem.h b/plugins/airplane-mode/airplanemodeitem.h index 7093cd4f4..9147f55f1 100644 --- a/plugins/airplane-mode/airplanemodeitem.h +++ b/plugins/airplane-mode/airplanemodeitem.h @@ -48,13 +48,14 @@ public: void refreshIcon(); void updateTips(); + bool airplaneEnable(); + protected: void resizeEvent(QResizeEvent *e); void paintEvent(QPaintEvent *e); signals: - void removeItem(); - void addItem(); + void airplaneEnableChanged(bool enable); private: Dock::TipsWidget *m_tipsLabel; diff --git a/plugins/airplane-mode/airplanemodeplugin.cpp b/plugins/airplane-mode/airplanemodeplugin.cpp index 260ecb115..78aad6936 100644 --- a/plugins/airplane-mode/airplanemodeplugin.cpp +++ b/plugins/airplane-mode/airplanemodeplugin.cpp @@ -30,8 +30,7 @@ AirplaneModePlugin::AirplaneModePlugin(QObject *parent) : QObject(parent) , m_item(new AirplaneModeItem) { - connect(m_item, &AirplaneModeItem::removeItem, this, &AirplaneModePlugin::removePlugin); - connect(m_item, &AirplaneModeItem::addItem, this, &AirplaneModePlugin::addPlugin); + connect(m_item, &AirplaneModeItem::airplaneEnableChanged, this, &AirplaneModePlugin::onAirplaneEnableChanged); } const QString AirplaneModePlugin::pluginName() const @@ -50,11 +49,15 @@ void AirplaneModePlugin::init(PluginProxyInterface *proxyInter) if (!pluginIsDisable()) m_proxyInter->itemAdded(this, AIRPLANEMODE_KEY); + + refreshAirplaneEnableState(); } void AirplaneModePlugin::pluginStateSwitched() { m_proxyInter->saveValue(this, STATE_KEY, pluginIsDisable()); + + refreshAirplaneEnableState(); } bool AirplaneModePlugin::pluginIsDisable() @@ -80,35 +83,6 @@ QWidget *AirplaneModePlugin::itemTipsWidget(const QString &itemKey) return nullptr; } -QWidget *AirplaneModePlugin::itemPopupApplet(const QString &itemKey) -{ - return nullptr; // 禁用左键点击功能 - - if (itemKey == AIRPLANEMODE_KEY) { - return m_item->popupApplet(); - } - - return nullptr; -} - -const QString AirplaneModePlugin::itemContextMenu(const QString &itemKey) -{ - return QString(); // 禁用右键菜单 - - if (itemKey == AIRPLANEMODE_KEY) { - return m_item->contextMenu(); - } - - return QString(); -} - -void AirplaneModePlugin::invokedMenuItem(const QString &itemKey, const QString &menuId, const bool checked) -{ - if (itemKey == AIRPLANEMODE_KEY) { - m_item->invokeMenuItem(menuId, checked); - } -} - int AirplaneModePlugin::itemSortKey(const QString &itemKey) { const QString key = QString("pos_%1_%2").arg(itemKey).arg(Dock::Efficient); @@ -130,20 +104,24 @@ void AirplaneModePlugin::refreshIcon(const QString &itemKey) } } -void AirplaneModePlugin::removePlugin() +void AirplaneModePlugin::refreshAirplaneEnableState() +{ + onAirplaneEnableChanged(m_item->airplaneEnable()); +} + +void AirplaneModePlugin::onAirplaneEnableChanged(bool enable) { if (!m_proxyInter) return; - m_proxyInter->itemRemoved(this, AIRPLANEMODE_KEY); - m_proxyInter->saveValue(this, STATE_KEY, false); + if (enable) { + m_proxyInter->itemAdded(this, AIRPLANEMODE_KEY); + m_proxyInter->saveValue(this, STATE_KEY, true); + } + else { + m_proxyInter->itemRemoved(this, AIRPLANEMODE_KEY); + m_proxyInter->saveValue(this, STATE_KEY, false); + } } -void AirplaneModePlugin::addPlugin() -{ - if (!m_proxyInter) - return; - m_proxyInter->itemAdded(this, AIRPLANEMODE_KEY); - m_proxyInter->saveValue(this, STATE_KEY, true); -} diff --git a/plugins/airplane-mode/airplanemodeplugin.h b/plugins/airplane-mode/airplanemodeplugin.h index 2c318cb4d..4d7b95a2c 100644 --- a/plugins/airplane-mode/airplanemodeplugin.h +++ b/plugins/airplane-mode/airplanemodeplugin.h @@ -43,16 +43,13 @@ public: bool pluginIsDisable() Q_DECL_OVERRIDE; QWidget *itemWidget(const QString &itemKey) Q_DECL_OVERRIDE; QWidget *itemTipsWidget(const QString &itemKey) Q_DECL_OVERRIDE; - QWidget *itemPopupApplet(const QString &itemKey) Q_DECL_OVERRIDE; - const QString itemContextMenu(const QString &itemKey) Q_DECL_OVERRIDE; - void invokedMenuItem(const QString &itemKey, const QString &menuId, const bool checked) Q_DECL_OVERRIDE; int itemSortKey(const QString &itemKey) Q_DECL_OVERRIDE; void setSortKey(const QString &itemKey, const int order) Q_DECL_OVERRIDE; void refreshIcon(const QString &itemKey) Q_DECL_OVERRIDE; public slots: - void removePlugin(); - void addPlugin(); + void refreshAirplaneEnableState(); + void onAirplaneEnableChanged(bool enable); private: AirplaneModeItem *m_item; diff --git a/plugins/tray/system-trays/systemtrayitem.cpp b/plugins/tray/system-trays/systemtrayitem.cpp index cb8b9b29a..6dc8ff29b 100644 --- a/plugins/tray/system-trays/systemtrayitem.cpp +++ b/plugins/tray/system-trays/systemtrayitem.cpp @@ -22,15 +22,11 @@ #include "systemtrayitem.h" #include "utils.h" -#include - - #include #include #include -using DBusAirplaneMode = com::deepin::daemon::AirplaneMode; Dock::Position SystemTrayItem::DockPosition = Dock::Position::Top; QPointer SystemTrayItem::PopupWindow = nullptr; @@ -492,18 +488,6 @@ 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); } diff --git a/plugins/tray/system-trays/systemtrayscontroller.cpp b/plugins/tray/system-trays/systemtrayscontroller.cpp index 5b0f2d9cf..4f33c682c 100644 --- a/plugins/tray/system-trays/systemtrayscontroller.cpp +++ b/plugins/tray/system-trays/systemtrayscontroller.cpp @@ -23,13 +23,9 @@ #include "pluginsiteminterface.h" #include "utils.h" -#include - #include #include -using DBusAirplaneMode = com::deepin::daemon::AirplaneMode; - SystemTraysController::SystemTraysController(QObject *parent) : AbstractPluginsController(parent) { @@ -40,20 +36,12 @@ void SystemTraysController::itemAdded(PluginsItemInterface * const itemInter, co { QMap> &mPluginsMap = pluginsMap(); - SystemTrayItem *item = nullptr; - // check if same item added if (mPluginsMap.contains(itemInter)) - if (mPluginsMap[itemInter].contains(itemKey)) { - if (itemKey != "airplane-mode-key") - return; - - item = static_cast(pluginItemAt(itemInter, itemKey)); - } - - if (!item) - item = new SystemTrayItem(itemInter, itemKey); + if (mPluginsMap[itemInter].contains(itemKey)) + return; + SystemTrayItem *item = new SystemTrayItem(itemInter, itemKey); connect(item, &SystemTrayItem::itemVisibleChanged, this, [=] (bool visible){ if (visible) { emit pluginItemAdded(itemKey, item); @@ -65,22 +53,9 @@ 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)