fix: 解决社区版加载键盘布局插件失败问题

打包配置文件中没有加入etc/dde-dock目录,导致keyboard_layout.json文件拷贝失败
启动器读到文件内容,相关dbus服务没有启动,最终导致插件加载失败.

Log: 修复社区版加载键盘布局插件失败问题
Task: https://pms.uniontech.com/zentao/task-view-81376.html
Change-Id: Ifc63c547cf976601eaa766b914e59aafcb77d3fe
This commit is contained in:
songwentao 2021-07-29 21:29:26 +08:00 committed by yanghongwei
parent 03977ba903
commit 05907c7fbc
5 changed files with 28 additions and 22 deletions

View File

@ -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

View File

@ -17,7 +17,9 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "utils.h"
#include "dbusadaptors.h"
#include <DDBusSender>
#include <QDebug>
@ -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;

View File

@ -25,6 +25,7 @@
#include <com_deepin_daemon_inputdevice_keyboard.h>
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

View File

@ -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 : "");
}
}

View File

@ -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