From 3b3c303bf996179f6ea13fb67a8899ff1b54a03d Mon Sep 17 00:00:00 2001 From: Zhang Qipeng Date: Mon, 28 Dec 2020 09:51:35 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BB=BB=E5=8A=A1=E6=A0=8F=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=E5=8F=82=E6=95=B0=E7=BC=BA=E5=A4=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 之前用QTimer定时1秒钟后将插件的配置信息写入GSettings,但在配置比较差的机型上插件还没有加载完,导致往GSettings里写配置信息的时候漏了一两个插件。 改为当有插件被用户移动、移除或检测到新的插件时,直接调用更新GSettings中的插件配置信息。 Log: 修复自动化测试发现任务栏插件参数缺失的问题。 Bug: https://pms.uniontech.com/zentao/bug-view-59243.html Change-Id: I4dc37ad7f611fabf479375f100506ef84f3f78d3 --- frame/controller/dockitemmanager.cpp | 25 +++++++++++-------------- frame/controller/dockitemmanager.h | 3 +-- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/frame/controller/dockitemmanager.cpp b/frame/controller/dockitemmanager.cpp index fa87e4c12..7aa6a9aea 100644 --- a/frame/controller/dockitemmanager.cpp +++ b/frame/controller/dockitemmanager.cpp @@ -32,7 +32,6 @@ DockItemManager *DockItemManager::INSTANCE = nullptr; DockItemManager::DockItemManager(QObject *parent) : QObject(parent) - , m_updatePluginsOrderTimer(new QTimer(this)) , m_appInter(new DBusDock("com.deepin.dde.daemon.Dock", "/com/deepin/dde/daemon/Dock", QDBusConnection::sessionBus(), this)) , m_pluginsInter(new DockPluginsController(this)) { @@ -55,11 +54,6 @@ DockItemManager::DockItemManager(QObject *parent) // 托盘区域和插件区域 由DockPluginsController获取 - // 更新插件顺序 - m_updatePluginsOrderTimer->setSingleShot(true); - m_updatePluginsOrderTimer->setInterval(1000); - connect(m_updatePluginsOrderTimer, &QTimer::timeout, this, &DockItemManager::updatePluginsItemOrderKey); - // 应用信号 connect(m_appInter, &DBusDock::EntryAdded, this, &DockItemManager::appItemAdded); connect(m_appInter, &DBusDock::EntryRemoved, this, static_cast(&DockItemManager::appItemRemoved), Qt::QueuedConnection); @@ -73,9 +67,6 @@ DockItemManager::DockItemManager(QObject *parent) // 刷新图标 QMetaObject::invokeMethod(this, "refershItemsIcon", Qt::QueuedConnection); - - // 启动的时候把插件名写入配置(自动化测试需要) - m_updatePluginsOrderTimer->start(); } DockItemManager *DockItemManager::instance(QObject *parent) @@ -116,10 +107,12 @@ void DockItemManager::refershItemsIcon() } } +/** + * @brief 将插件的参数(Order, Visible, etc)写入gsettings + * 自动化测试需要通过dbus(GetPluginSettings)获取这些参数 + */ void DockItemManager::updatePluginsItemOrderKey() { - Q_ASSERT(sender() == m_updatePluginsOrderTimer); - int index = 0; for (auto item : m_itemList) { if (item.isNull() || item->itemType() != DockItem::Plugins) @@ -161,9 +154,10 @@ void DockItemManager::itemMoved(DockItem *const sourceItem, DockItem *const targ // update plugins sort key if order changed if (moveType == DockItem::Plugins || replaceType == DockItem::Plugins - || moveType == DockItem::TrayPlugin || replaceType == DockItem::TrayPlugin - || moveType == DockItem::FixedPlugin || replaceType == DockItem::FixedPlugin) - m_updatePluginsOrderTimer->start(); + || moveType == DockItem::TrayPlugin || replaceType == DockItem::TrayPlugin + || moveType == DockItem::FixedPlugin || replaceType == DockItem::FixedPlugin) { + updatePluginsItemOrderKey(); + } // for app move, index 0 is launcher item, need to pass it. if (moveType == DockItem::App && replaceType == DockItem::App) @@ -297,6 +291,7 @@ void DockItemManager::pluginItemInserted(PluginsItem *item) insertIndex ++; } + updatePluginsItemOrderKey(); emit itemInserted(insertIndex - firstPluginPosition, item); } @@ -307,6 +302,8 @@ void DockItemManager::pluginItemRemoved(PluginsItem *item) emit itemRemoved(item); m_itemList.removeOne(item); + + updatePluginsItemOrderKey(); } void DockItemManager::reloadAppItems() diff --git a/frame/controller/dockitemmanager.h b/frame/controller/dockitemmanager.h index d545b36ec..b074c9263 100644 --- a/frame/controller/dockitemmanager.h +++ b/frame/controller/dockitemmanager.h @@ -59,7 +59,6 @@ signals: public slots: void refershItemsIcon(); void sortPluginItems(); - void updatePluginsItemOrderKey(); void itemMoved(DockItem *const sourceItem, DockItem *const targetItem); void itemAdded(const QString &appDesktop, int idx); @@ -70,11 +69,11 @@ private: void appItemRemoved(AppItem *appItem); void pluginItemInserted(PluginsItem *item); void pluginItemRemoved(PluginsItem *item); + void updatePluginsItemOrderKey(); void reloadAppItems(); void manageItem(DockItem *item); private: - QTimer *m_updatePluginsOrderTimer; DBusDock *m_appInter; DockPluginsController *m_pluginsInter;