From c73ef98002bd4e2c5a984f5e3e872a54ad527304 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8C=83=E6=9C=8B=E7=A8=8B?= Date: Fri, 28 Oct 2022 15:18:37 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E9=83=A8=E5=88=86?= =?UTF-8?q?=E6=89=98=E7=9B=98=E6=97=A0=E5=9B=BE=E6=A0=87=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 未在初始化时获取图标信息 Log: 修复部分托盘无图标的问题 Influence: 安全中心、授权管理等应用的托盘图标 Bug: https://pms.uniontech.com/bug-view-160761.html Change-Id: I5b4a3a2d7b688ad0275e3acfe2bd72841a75e92a --- plugins/tray/snitraywidget.cpp | 26 ++++++++++++++++++++++++++ plugins/tray/snitraywidget.h | 1 + 2 files changed, 27 insertions(+) diff --git a/plugins/tray/snitraywidget.cpp b/plugins/tray/snitraywidget.cpp index 2500c09c6..1fb516754 100644 --- a/plugins/tray/snitraywidget.cpp +++ b/plugins/tray/snitraywidget.cpp @@ -156,6 +156,8 @@ SNITrayWidget::SNITrayWidget(const QString &sniServicePath, QWidget *parent) connect(m_sniInter, &StatusNotifierItem::NewStatus, [ = ] { onSNIStatusChanged(m_sniInter->status()); }); + + initSNIPropertys(); } QString SNITrayWidget::itemKeyForConfig() @@ -251,6 +253,30 @@ uint SNITrayWidget::servicePID(const QString &servicePath) return conn.interface()->servicePid(serviceName); } +void SNITrayWidget::initSNIPropertys() +{ + m_sniAttentionIconName = m_sniInter->attentionIconName(); + m_sniAttentionIconPixmap = m_sniInter->attentionIconPixmap(); + m_sniAttentionMovieName = m_sniInter->attentionMovieName(); + m_sniCategory = m_sniInter->category(); + m_sniIconName = m_sniInter->iconName(); + m_sniIconPixmap = m_sniInter->iconPixmap(); + m_sniIconThemePath = m_sniInter->iconThemePath(); + m_sniMenuPath = m_sniInter->menu(); + m_sniOverlayIconName = m_sniInter->overlayIconName(); + m_sniOverlayIconPixmap = m_sniInter->overlayIconPixmap(); + m_sniStatus = m_sniInter->status(); + + // 使用同步的方式获取id,否则在插入的时候无法获取正确的位置 + m_sniInter->setSync(true); + m_sniId = m_sniInter->id(); + m_sniInter->setSync(false); + + m_updateIconTimer->start(); +// m_updateOverlayIconTimer->start(); +// m_updateAttentionIconTimer->start(); +} + void SNITrayWidget::initMenu() { const QString &sniMenuPath = m_sniMenuPath.path(); diff --git a/plugins/tray/snitraywidget.h b/plugins/tray/snitraywidget.h index 17517bda4..65b487fd1 100644 --- a/plugins/tray/snitraywidget.h +++ b/plugins/tray/snitraywidget.h @@ -79,6 +79,7 @@ Q_SIGNALS: void statusChanged(SNITrayWidget::ItemStatus status); private Q_SLOTS: + void initSNIPropertys(); void initMenu(); void refreshIcon(); void refreshOverlayIcon();