From 2d7b6c2324c39b2ba116a6be5f83a1e5b2ec6231 Mon Sep 17 00:00:00 2001 From: Konrad Materka Date: Fri, 25 Oct 2019 15:36:48 +0200 Subject: [PATCH] [SystemTray] Support for AttentionIcon Summary: Adding support for Attention Icon to StatusNotifier tray icons. Binding is working correctly only when "Status" is used, not derived "status". BUG: 341255 Test Plan: As described in bug report, Konversation can be used for tests. Reviewers: #plasma, broulik, #plasma_workspaces Reviewed By: #plasma, broulik, #plasma_workspaces Subscribers: lbeltrame, plasma-devel Tags: #plasma Differential Revision: https://phabricator.kde.org/D24865 --- .../contents/ui/items/StatusNotifierItem.qml | 18 ++++++++++++------ .../statusnotifieritemsource.cpp | 4 ++-- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/applets/systemtray/package/contents/ui/items/StatusNotifierItem.qml b/applets/systemtray/package/contents/ui/items/StatusNotifierItem.qml index 1db533c83..c3404ad41 100644 --- a/applets/systemtray/package/contents/ui/items/StatusNotifierItem.qml +++ b/applets/systemtray/package/contents/ui/items/StatusNotifierItem.qml @@ -43,16 +43,22 @@ AbstractItem { } } - onStatusChanged: { - //binding is not working in PlasmaCore.IconItem - iconItem.source = status === PlasmaCore.Types.NeedsAttentionStatus ? (AttentionIcon ? AttentionIcon : AttentionIconName) : (Icon ? Icon : IconName) - } - iconItem: iconItem PlasmaCore.IconItem { id: iconItem - source: Icon ? Icon : IconName + source: { + if (taskIcon.status === PlasmaCore.Types.NeedsAttentionStatus) { + if (AttentionIcon) { + return AttentionIcon + } + if (AttentionIconName) { + return AttentionIconName + } + } + return Icon ? Icon : IconName + } + width: Math.min(parent.width, parent.height) height: width active: taskIcon.containsMouse diff --git a/dataengines/statusnotifieritem/statusnotifieritemsource.cpp b/dataengines/statusnotifieritem/statusnotifieritemsource.cpp index d4e45d547..bffbae7be 100644 --- a/dataengines/statusnotifieritem/statusnotifieritemsource.cpp +++ b/dataengines/statusnotifieritem/statusnotifieritemsource.cpp @@ -303,7 +303,7 @@ void StatusNotifierItemSource::refreshCallback(QDBusPendingCallWatcher *call) overlayIcon(&icon, &overlay); } } - setData(QStringLiteral("Icon"), icon); + setData(QStringLiteral("Icon"), icon.isNull() ? QVariant() : icon); setData(QStringLiteral("IconName"), iconName); } @@ -329,7 +329,7 @@ void StatusNotifierItemSource::refreshCallback(QDBusPendingCallWatcher *call) overlayIcon(&attentionIcon, &overlay); } } - setData(QStringLiteral("AttentionIcon"), attentionIcon); + setData(QStringLiteral("AttentionIcon"), attentionIcon.isNull() ? QVariant() : attentionIcon); } //ToolTip