From 768a6b4b2a7f21a1a72363670ec69b98cbb71859 Mon Sep 17 00:00:00 2001 From: Michail Vourlakos Date: Fri, 30 Aug 2019 02:23:50 +0300 Subject: [PATCH] indicators can now offset a bit icons --through level.requested options each indicator instance can request specific repositioning for each icon. Very good example for this is the Win7 style indicator --- .../package/contents/ui/applet/AppletItem.qml | 17 +++++++++++++++++ .../ui/applet/indicator/LevelOptions.qml | 5 +++++ declarativeimports/components/IndicatorItem.qml | 1 - plasmoid/package/contents/ui/task/TaskItem.qml | 17 +++++++++++++++++ plasmoid/package/contents/ui/task/Wrapper.qml | 3 +++ .../contents/ui/task/indicator/LevelOptions.qml | 5 +++++ 6 files changed, 47 insertions(+), 1 deletion(-) diff --git a/containment/package/contents/ui/applet/AppletItem.qml b/containment/package/contents/ui/applet/AppletItem.qml index 8590a84e5..72ed5856e 100644 --- a/containment/package/contents/ui/applet/AppletItem.qml +++ b/containment/package/contents/ui/applet/AppletItem.qml @@ -134,6 +134,10 @@ Item { property int spacersMaxSize: Math.max(0,Math.ceil(0.55 * root.iconSize) - root.lengthMargins) property int status: applet ? applet.status : -1 + //! are set by the indicator + property int iconOffsetX: 0 + property int iconOffsetY: 0 + property real computeWidth: root.isVertical ? wrapper.width : hiddenSpacerLeft.width+wrapper.width+hiddenSpacerRight.width @@ -660,8 +664,21 @@ Item { Indicator.Loader{ id: indicatorBackLayer level: Indicator.LevelOptions { + id: backLevelOptions isBackground: true bridge: indicatorBridge + + Binding { + target: appletItem + property: "iconOffsetX" + value: backLevelOptions.requested.iconOffsetX + } + + Binding { + target: appletItem + property: "iconOffsetY" + value: backLevelOptions.requested.iconOffsetY + } } } diff --git a/containment/package/contents/ui/applet/indicator/LevelOptions.qml b/containment/package/contents/ui/applet/indicator/LevelOptions.qml index 9d6f0c15e..3184c8176 100644 --- a/containment/package/contents/ui/applet/indicator/LevelOptions.qml +++ b/containment/package/contents/ui/applet/indicator/LevelOptions.qml @@ -30,6 +30,11 @@ Item { property bool isBackground: true property bool isForeground: false + readonly property Item requested: Item{ + property int iconOffsetX: 0 + property int iconOffsetY: 0 + } + property Item bridge onIsBackgroundChanged: { diff --git a/declarativeimports/components/IndicatorItem.qml b/declarativeimports/components/IndicatorItem.qml index efdae841a..4186bed2e 100644 --- a/declarativeimports/components/IndicatorItem.qml +++ b/declarativeimports/components/IndicatorItem.qml @@ -49,7 +49,6 @@ Item { //! e.g 0.06 -> 6% property real minLengthPadding: 0 - //! svg image paths either from plasma theme or local files relevant to indicator "ui" directory //! in order to reduce resources usage property var svgImagePaths: [] diff --git a/plasmoid/package/contents/ui/task/TaskItem.qml b/plasmoid/package/contents/ui/task/TaskItem.qml index 323ed3c6f..c5d22d310 100644 --- a/plasmoid/package/contents/ui/task/TaskItem.qml +++ b/plasmoid/package/contents/ui/task/TaskItem.qml @@ -138,6 +138,10 @@ MouseArea{ property int windowsCount: subWindows.windowsCount property int windowsMinimizedCount: subWindows.windowsMinimized + //! are set by the indicator + property int iconOffsetX: 0 + property int iconOffsetY: 0 + property string activity: tasksModel.activity readonly property var m: model @@ -441,8 +445,21 @@ MouseArea{ Indicator.Loader{ id: indicatorBackLayer level: Indicator.LevelOptions { + id: backLevelOptions isBackground: true bridge: indicatorBridge + + Binding { + target: taskItem + property: "iconOffsetX" + value: backLevelOptions.requested.iconOffsetX + } + + Binding { + target: taskItem + property: "iconOffsetY" + value: backLevelOptions.requested.iconOffsetY + } } } diff --git a/plasmoid/package/contents/ui/task/Wrapper.qml b/plasmoid/package/contents/ui/task/Wrapper.qml index e85936313..3c776206e 100644 --- a/plasmoid/package/contents/ui/task/Wrapper.qml +++ b/plasmoid/package/contents/ui/task/Wrapper.qml @@ -143,6 +143,9 @@ Item{ anchors.horizontalCenter: !root.vertical ? parent.horizontalCenter : undefined anchors.verticalCenter: root.vertical ? parent.verticalCenter : undefined + anchors.horizontalCenterOffset: taskItem.iconOffsetX + anchors.verticalCenterOffset: taskItem.iconOffsetY + width: wrapper.width height:wrapper.height } diff --git a/plasmoid/package/contents/ui/task/indicator/LevelOptions.qml b/plasmoid/package/contents/ui/task/indicator/LevelOptions.qml index 9d6f0c15e..3184c8176 100644 --- a/plasmoid/package/contents/ui/task/indicator/LevelOptions.qml +++ b/plasmoid/package/contents/ui/task/indicator/LevelOptions.qml @@ -30,6 +30,11 @@ Item { property bool isBackground: true property bool isForeground: false + readonly property Item requested: Item{ + property int iconOffsetX: 0 + property int iconOffsetY: 0 + } + property Item bridge onIsBackgroundChanged: {