From 6c19ff5e588aa41c093bbf69a473ecaf01f0e5a6 Mon Sep 17 00:00:00 2001 From: shaojun Date: Sat, 30 Nov 2019 20:31:22 +0800 Subject: [PATCH] fixed(keyboard-layout):refresh keyboard layout for tray MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 注销后不显示键盘布局 --- plugins/keyboard-layout/dbusadaptors.cpp | 2 ++ plugins/keyboard-layout/keyboardplugin.cpp | 27 ++++++++++++++++++---- plugins/keyboard-layout/keyboardplugin.h | 2 +- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/plugins/keyboard-layout/dbusadaptors.cpp b/plugins/keyboard-layout/dbusadaptors.cpp index 5558c95cb..70b673858 100644 --- a/plugins/keyboard-layout/dbusadaptors.cpp +++ b/plugins/keyboard-layout/dbusadaptors.cpp @@ -92,6 +92,8 @@ void DBusAdaptors::onUserLayoutListChanged(const QStringList &value) m_userLayoutList = value; refreshMenu(); + + emit layoutChanged(layout()); } void DBusAdaptors::initAllLayoutList() diff --git a/plugins/keyboard-layout/keyboardplugin.cpp b/plugins/keyboard-layout/keyboardplugin.cpp index 9fa0db0ab..26d86d625 100644 --- a/plugins/keyboard-layout/keyboardplugin.cpp +++ b/plugins/keyboard-layout/keyboardplugin.cpp @@ -41,20 +41,37 @@ const QString KeyboardPlugin::pluginDisplayName() const void KeyboardPlugin::init(PluginProxyInterface *proxyInter) { m_proxyInter = proxyInter; - m_dbusAdaptors = new DBusAdaptors(this); + if (!m_dbusAdaptors) { - QDBusConnection::sessionBus().registerService("com.deepin.dde.Keyboard"); - QDBusConnection::sessionBus().registerObject("/com/deepin/dde/Keyboard", "com.deepin.dde.Keyboard", this); + QString serverName = "com.deepin.daemon.InputDevices"; + QDBusConnectionInterface *ifc = QDBusConnection::sessionBus().interface(); + + if (!ifc->isServiceRegistered(serverName)) { + connect(QDBusConnection::sessionBus().interface(), &QDBusConnectionInterface::serviceOwnerChanged, this, + [ = ](const QString & name, const QString & oldOwner, const QString & newOwner) { + Q_UNUSED(oldOwner); + if (name == serverName && !newOwner.isEmpty()) { + m_dbusAdaptors = new DBusAdaptors(this); + disconnect(ifc); + } + }); + } else { + m_dbusAdaptors = new DBusAdaptors(this); + } + + QDBusConnection::sessionBus().registerService("com.deepin.dde.Keyboard"); + QDBusConnection::sessionBus().registerObject("/com/deepin/dde/Keyboard", "com.deepin.dde.Keyboard", this); + } } -QWidget* KeyboardPlugin::itemWidget(const QString &itemKey) +QWidget *KeyboardPlugin::itemWidget(const QString &itemKey) { Q_UNUSED(itemKey); return nullptr; } -QWidget* KeyboardPlugin::itemTipsWidget(const QString &itemKey) +QWidget *KeyboardPlugin::itemTipsWidget(const QString &itemKey) { Q_UNUSED(itemKey); diff --git a/plugins/keyboard-layout/keyboardplugin.h b/plugins/keyboard-layout/keyboardplugin.h index f9b627b91..9c34e2bda 100644 --- a/plugins/keyboard-layout/keyboardplugin.h +++ b/plugins/keyboard-layout/keyboardplugin.h @@ -41,7 +41,7 @@ public: QWidget *itemTipsWidget(const QString &itemKey) override; private: - DBusAdaptors *m_dbusAdaptors; + DBusAdaptors *m_dbusAdaptors = nullptr; }; #endif