From 05907c7fbc4a6ce8fd498d16c433fee82f4b8eae Mon Sep 17 00:00:00 2001 From: songwentao Date: Thu, 29 Jul 2021 21:29:26 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=A7=A3=E5=86=B3=E7=A4=BE=E5=8C=BA?= =?UTF-8?q?=E7=89=88=E5=8A=A0=E8=BD=BD=E9=94=AE=E7=9B=98=E5=B8=83=E5=B1=80?= =?UTF-8?q?=E6=8F=92=E4=BB=B6=E5=A4=B1=E8=B4=A5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 打包配置文件中没有加入etc/dde-dock目录,导致keyboard_layout.json文件拷贝失败 启动器读到文件内容,相关dbus服务没有启动,最终导致插件加载失败. Log: 修复社区版加载键盘布局插件失败问题 Task: https://pms.uniontech.com/zentao/task-view-81376.html Change-Id: Ifc63c547cf976601eaa766b914e59aafcb77d3fe --- debian/dde-dock.install | 1 + plugins/keyboard-layout/dbusadaptors.cpp | 23 +++++++++++++++++++++- plugins/keyboard-layout/dbusadaptors.h | 5 +++++ plugins/keyboard-layout/keyboardplugin.cpp | 15 -------------- plugins/keyboard-layout/keyboardplugin.h | 6 ------ 5 files changed, 28 insertions(+), 22 deletions(-) diff --git a/debian/dde-dock.install b/debian/dde-dock.install index ed96db33d..e6d4be541 100644 --- a/debian/dde-dock.install +++ b/debian/dde-dock.install @@ -1,5 +1,6 @@ usr/share usr/bin +etc/dde-dock usr/lib/dde-dock/plugins/libdatetime.so usr/lib/dde-dock/plugins/libshutdown.so usr/lib/dde-dock/plugins/libtrash.so diff --git a/plugins/keyboard-layout/dbusadaptors.cpp b/plugins/keyboard-layout/dbusadaptors.cpp index 9bd427cc3..250e794bd 100644 --- a/plugins/keyboard-layout/dbusadaptors.cpp +++ b/plugins/keyboard-layout/dbusadaptors.cpp @@ -17,7 +17,9 @@ * along with this program. If not, see . */ +#include "utils.h" #include "dbusadaptors.h" + #include #include @@ -26,7 +28,8 @@ DBusAdaptors::DBusAdaptors(QObject *parent) m_keyboard(new Keyboard("com.deepin.daemon.InputDevices", "/com/deepin/daemon/InputDevice/Keyboard", QDBusConnection::sessionBus(), this)), - m_menu(new QMenu()) + m_menu(new QMenu()), + m_gsettings(Utils::ModuleSettingsPtr("keyboard", QByteArray(), this)) { m_keyboard->setSync(false); @@ -39,6 +42,9 @@ DBusAdaptors::DBusAdaptors(QObject *parent) initAllLayoutList(); onCurrentLayoutChanged(m_keyboard->currentLayout()); onUserLayoutListChanged(m_keyboard->userLayoutList()); + + if (m_gsettings) + connect(m_gsettings, &QGSettings::changed, this, &DBusAdaptors::onGSettingsChanged); } DBusAdaptors::~DBusAdaptors() @@ -47,6 +53,9 @@ DBusAdaptors::~DBusAdaptors() QString DBusAdaptors::layout() const { + if (m_gsettings && m_gsettings->keys().contains("enable") && !m_gsettings->get("enable").toBool()) + return QString(); + if (m_userLayoutList.size() < 2) { // do NOT show keyboard indicator return QString(); @@ -180,6 +189,18 @@ void DBusAdaptors::handleActionTriggered(QAction *action) } } +void DBusAdaptors::onGSettingsChanged(const QString &key) +{ + Q_UNUSED(key); + + // 键盘布局插件处显示的内容就是QLabel中的内容,有文字了就显示,没有文字就不显示了 + if (m_gsettings && m_gsettings->keys().contains("enable")) { + const bool enable = m_gsettings->get("enable").toBool(); + QString layoutStr = getCurrentKeyboard()->currentLayout().split(';').first(); + setLayout(enable ? layoutStr : ""); + } +} + QString DBusAdaptors::duplicateCheck(const QString &kb) { QStringList list; diff --git a/plugins/keyboard-layout/dbusadaptors.h b/plugins/keyboard-layout/dbusadaptors.h index 971280e8a..355165153 100644 --- a/plugins/keyboard-layout/dbusadaptors.h +++ b/plugins/keyboard-layout/dbusadaptors.h @@ -25,6 +25,7 @@ #include using Keyboard = com::deepin::daemon::inputdevice::Keyboard; +class QGSettings; class DBusAdaptors : public QDBusAbstractAdaptor { @@ -64,6 +65,9 @@ private slots: void refreshMenuSelection(); void handleActionTriggered(QAction *action); +private slots: + void onGSettingsChanged(const QString &key); + private: QString duplicateCheck(const QString &kb); @@ -76,6 +80,7 @@ private: QString m_currentLayout; QStringList m_userLayoutList; KeyboardLayoutList m_allLayoutList; + const QGSettings *m_gsettings; }; #endif diff --git a/plugins/keyboard-layout/keyboardplugin.cpp b/plugins/keyboard-layout/keyboardplugin.cpp index 642d4ec47..dba1ef731 100644 --- a/plugins/keyboard-layout/keyboardplugin.cpp +++ b/plugins/keyboard-layout/keyboardplugin.cpp @@ -22,10 +22,7 @@ KeyboardPlugin::KeyboardPlugin(QObject *parent) : QObject(parent) - , m_gsettings(Utils::ModuleSettingsPtr(pluginName(), QByteArray(), this)) { - if (m_gsettings) - connect(m_gsettings, &QGSettings::changed, this, &KeyboardPlugin::onGSettingsChanged); } KeyboardPlugin::~KeyboardPlugin() @@ -95,15 +92,3 @@ void KeyboardPlugin::setSortKey(const QString &itemKey, const int order) m_proxyInter->saveValue(this, key, order); } - -void KeyboardPlugin::onGSettingsChanged(const QString &key) -{ - Q_UNUSED(key); - - // 键盘布局插件处显示的内容就是QLabel中的内容,有文字了就显示,没有文字就不显示了 - if (m_gsettings && m_gsettings->keys().contains("enable")) { - const bool enable = m_gsettings->get("enable").toBool(); - QString layoutStr = m_dbusAdaptors->getCurrentKeyboard()->currentLayout().split(';').first(); - m_dbusAdaptors->setLayout(enable ? layoutStr : ""); - } -} diff --git a/plugins/keyboard-layout/keyboardplugin.h b/plugins/keyboard-layout/keyboardplugin.h index fa1ceda45..30cb754c9 100644 --- a/plugins/keyboard-layout/keyboardplugin.h +++ b/plugins/keyboard-layout/keyboardplugin.h @@ -23,8 +23,6 @@ #include "pluginsiteminterface.h" #include "dbusadaptors.h" -class QGSettings; - class KeyboardPlugin : public QObject, PluginsItemInterface { Q_OBJECT @@ -45,12 +43,8 @@ public: int itemSortKey(const QString &itemKey) override; void setSortKey(const QString &itemKey, const int order) override; -private slots: - void onGSettingsChanged(const QString &key); - private: DBusAdaptors *m_dbusAdaptors = nullptr; - const QGSettings *m_gsettings; }; #endif