From 67654430537153258ebb5ff263965c56e9ef5648 Mon Sep 17 00:00:00 2001 From: Alexandra Date: Tue, 22 Aug 2023 18:22:45 -0600 Subject: [PATCH 1/5] Fix color bugs, refactor color code --- contents/ui/Task.qml | 373 +++++++++++++++++++++---------------------- 1 file changed, 186 insertions(+), 187 deletions(-) diff --git a/contents/ui/Task.qml b/contents/ui/Task.qml index 277455c3..25cb56d7 100644 --- a/contents/ui/Task.qml +++ b/contents/ui/Task.qml @@ -357,14 +357,14 @@ MouseArea { Component.onCompleted: timer.start() } } + PlasmaCore.FrameSvgItem { id: frame - property color dominantColor: imageColors.dominant Kirigami.ImageColors { id: imageColors source: model.decoration } - + property color dominantColor: imageColors.dominant anchors { fill: parent @@ -379,192 +379,127 @@ MouseArea { property bool isHovered: task.highlighted && plasmoid.configuration.taskHoverEffect property string basePrefix: "normal" prefix: isHovered ? TaskTools.taskPrefixHovered(basePrefix) : TaskTools.taskPrefix(basePrefix) + visible: plasmoid.configuration.buttonColorize ? false : true + } - property Colorize colorOverride: colorOverride - Colorize { - id: colorOverride - anchors.fill: frame - source: parent - hue: hexToHSL(plasmoid.configuration.buttonColorizeDominant ? imageColors.dominant : plasmoid.configuration.buttonColorizeCustom).h - lightness: frame.isHovered ? hexToHSL(plasmoid.configuration.buttonColorizeDominant ? imageColors.dominant : plasmoid.configuration.buttonColorizeCustom).l - 0.5 : hexToHSL(plasmoid.configuration.buttonColorizeDominant ? imageColors.dominant : plasmoid.configuration.buttonColorizeCustom).l - 0.6 - saturation: hexToHSL(plasmoid.configuration.buttonColorizeDominant ? imageColors.dominant : plasmoid.configuration.buttonColorizeCustom).s - visible: plasmoid.configuration.buttonColorize ? frame.isHovered ? true : false : false - } - - Flow { - id: indicator - flow: Flow.LeftToRight - spacing: PlasmaCore.Units.smallSpacing - Repeater { - - model: { - - if(!plasmoid.configuration.indicatorsEnabled) + Flow { + id: indicator + flow: Flow.LeftToRight + spacing: PlasmaCore.Units.smallSpacing + Repeater { + + model: { + + if(!plasmoid.configuration.indicatorsEnabled) + return 0; + if(task.childCount < plasmoid.configuration.indicatorMinLimit) + return 0; + if(task.parent.toString().includes('QQuickItem'))//Target only the main task items. + return 0; + /*for(var key in task) { + console.log(key) + console.log(task[key]) + }*/ //Kept for debugging + if(task.state === 'launcher') { return 0; - if(task.childCount < plasmoid.configuration.indicatorMinLimit) - return 0; - if(task.parent.toString().includes('QQuickItem'))//Target only the main task items. - return 0; - /*for(var key in task) { - console.log(key) - console.log(task[key]) - }*/ //Kept for debugging - if(task.state === 'launcher') { - return 0; - } - return Math.min((task.childCount === 0) ? 1 : task.childCount, maxStates); } + return Math.min((task.childCount === 0) ? 1 : task.childCount, maxStates); + } + readonly property int maxStates: plasmoid.configuration.indicatorMaxLimit + + Rectangle{ + id: stateRect + Behavior on height { PropertyAnimation {duration: plasmoid.configuration.indicatorsAnimated ? 250 : 0} } + Behavior on width { PropertyAnimation {duration: plasmoid.configuration.indicatorsAnimated ? 250 : 0} } + Behavior on color { PropertyAnimation {duration: plasmoid.configuration.indicatorsAnimated ? 250 : 0} } + Behavior on radius { PropertyAnimation {duration: plasmoid.configuration.indicatorsAnimated ? 250 : 0} } + readonly property color decoColor: frame.dominantColor readonly property int maxStates: plasmoid.configuration.indicatorMaxLimit - - Rectangle{ - id: stateRect - Behavior on height { PropertyAnimation {duration: plasmoid.configuration.indicatorsAnimated ? 250 : 0} } - Behavior on width { PropertyAnimation {duration: plasmoid.configuration.indicatorsAnimated ? 250 : 0} } - Behavior on color { PropertyAnimation {duration: plasmoid.configuration.indicatorsAnimated ? 250 : 0} } - Behavior on radius { PropertyAnimation {duration: plasmoid.configuration.indicatorsAnimated ? 250 : 0} } - readonly property color decoColor: frame.dominantColor - readonly property int maxStates: plasmoid.configuration.indicatorMaxLimit - readonly property bool isFirst: index === 0 - readonly property int adjust: plasmoid.configuration.indicatorShrink - readonly property int indicatorLength: plasmoid.configuration.indicatorLength - readonly property int spacing: PlasmaCore.Units.smallSpacing - readonly property bool isVertical: { - if(plasmoid.formFactor === PlasmaCore.Types.Vertical && !plasmoid.configuration.indicatorOverride) - return true; - if(plasmoid.formFactor == PlasmaCore.Types.Floating && plasmoid.configuration.indicatorLocation === 1 || plasmoid.configuration.indicatorLocation === 2) - return true; - if(plasmoid.configuration.indicatorLocation === 1 || plasmoid.configuration.indicatorLocation === 2) - return true; - else{ - return false; - } + readonly property bool isFirst: index === 0 + readonly property int adjust: plasmoid.configuration.indicatorShrink + readonly property int indicatorLength: plasmoid.configuration.indicatorLength + readonly property int spacing: PlasmaCore.Units.smallSpacing + readonly property bool isVertical: { + if(plasmoid.formFactor === PlasmaCore.Types.Vertical && !plasmoid.configuration.indicatorOverride) + return true; + if(plasmoid.formFactor == PlasmaCore.Types.Floating && plasmoid.configuration.indicatorLocation === 1 || plasmoid.configuration.indicatorLocation === 2) + return true; + if(plasmoid.configuration.indicatorLocation === 1 || plasmoid.configuration.indicatorLocation === 2) + return true; + else{ + return false; } - readonly property var computedVar: { - var height; - var width; - var colorCalc; - var colorEval = '#FFFFFF'; - var parentSize = !isVertical ? frame.width : frame.height; - var indicatorComputedSize; - var adjustment = isFirst ? adjust : 0 - var parentSpacingAdjust = task.childCount >= 1 && maxStates >= 2 ? (spacing * 2.5) : 0 //Spacing fix for multiple items - if(plasmoid.configuration.indicatorDominantColor){ - colorEval = decoColor - } - if(plasmoid.configuration.indicatorAccentColor){ - colorEval = PlasmaCore.Theme.highlightColor - } - else if(!plasmoid.configuration.indicatorDominantColor && !plasmoid.configuration.indicatorAccentColor){ - colorEval = plasmoid.configuration.indicatorCustomColor - } - if(isFirst){//compute the size - var growFactor = plasmoid.configuration.indicatorGrowFactor / 100 - if(plasmoid.configuration.indicatorGrow && task.state === "minimized") { - var mainSize = indicatorLength * growFactor; - } - else{ - var mainSize = (parentSize + parentSpacingAdjust); - } - switch(plasmoid.configuration.indicatorStyle){ - case 0: - indicatorComputedSize = mainSize - (Math.min(task.childCount, maxStates === 1 ? 0 : maxStates) * (spacing + indicatorLength)) - adjust - break - case 1: - indicatorComputedSize = mainSize - (Math.min(task.childCount, maxStates === 1 ? 0 : maxStates) * (spacing + indicatorLength)) - adjust - break - case 2: - indicatorComputedSize = plasmoid.configuration.indicatorGrow && task.state !== "minimized" ? indicatorLength * growFactor : indicatorLength - break - default: - break - } - } - else { - indicatorComputedSize = indicatorLength - } - if(!isVertical){ - width = indicatorComputedSize; - height = plasmoid.configuration.indicatorSize + } + readonly property var computedVar: { + var height; + var width; + var colorCalc; + var colorEval = '#FFFFFF'; + var parentSize = !isVertical ? frame.width : frame.height; + var indicatorComputedSize; + var adjustment = isFirst ? adjust : 0 + var parentSpacingAdjust = task.childCount >= 1 && maxStates >= 2 ? (spacing * 2.5) : 0 //Spacing fix for multiple items + if(plasmoid.configuration.indicatorDominantColor){ + colorEval = decoColor + } + if(plasmoid.configuration.indicatorAccentColor){ + colorEval = PlasmaCore.Theme.highlightColor + } + else if(!plasmoid.configuration.indicatorDominantColor && !plasmoid.configuration.indicatorAccentColor){ + colorEval = plasmoid.configuration.indicatorCustomColor + } + if(isFirst){//compute the size + var growFactor = plasmoid.configuration.indicatorGrowFactor / 100 + if(plasmoid.configuration.indicatorGrow && task.state === "minimized") { + var mainSize = indicatorLength * growFactor; } else{ - width = plasmoid.configuration.indicatorSize - height = indicatorComputedSize + var mainSize = (parentSize + parentSpacingAdjust); } - if(plasmoid.configuration.indicatorDesaturate && task.state === "minimized") { - var colorHSL = hexToHSL(colorEval) - colorCalc = Qt.hsla(colorHSL.h, 0.2, 0.6, 1) + switch(plasmoid.configuration.indicatorStyle){ + case 0: + indicatorComputedSize = mainSize - (Math.min(task.childCount, maxStates === 1 ? 0 : maxStates) * (spacing + indicatorLength)) - adjust + break + case 1: + indicatorComputedSize = mainSize - (Math.min(task.childCount, maxStates === 1 ? 0 : maxStates) * (spacing + indicatorLength)) - adjust + break + case 2: + indicatorComputedSize = plasmoid.configuration.indicatorGrow && task.state !== "minimized" ? indicatorLength * growFactor : indicatorLength + break + default: + break } - else if(!isFirst && plasmoid.configuration.indicatorStyle === 0 && task.state !== "minimized") {//Metro specific handling - colorCalc = Qt.darker(colorEval, 1.2) - } - else { - colorCalc = colorEval - } - return {height: height, width: width, colorCalc: colorCalc} } - width: computedVar.width - height: computedVar.height - color: computedVar.colorCalc - radius: (Math.max(width, height) / Math.min(width, height)) * (plasmoid.configuration.indicatorRadius / 100) - } - } - } - - PlasmaCore.ToolTipArea { - id: toolTipArea - - anchors.fill: parent - location: plasmoid.location - - enabled: plasmoid.configuration.showToolTips && !inPopup && !tasks.groupDialog && (tasks.toolTipOpenedByClick === task || tasks.toolTipOpenedByClick === null) - interactive: model.IsWindow === true || mainItem.hasPlayer - - // when the mouse leaves the tooltip area, a timer to hide is set for (timeout / 20) ms - // see plasma-framework/src/declarativeimports/core/tooltipdialog.cpp function dismiss() - // to compensate for that we multiply by 20 here, to get an effective leave timeout of 2s. - timeout: (tasks.toolTipOpenedByClick === task) ? 2000*20 : 4000 - - mainItem: (model.IsWindow === true) ? openWindowToolTipDelegate : pinnedAppToolTipDelegate - - onToolTipVisibleChanged: { - if (!toolTipVisible) { - tasks.toolTipOpenedByClick = null; - } - } - - onContainsMouseChanged: if (containsMouse) { - updateMainItemBindings(); - } - - // Will also be called in activateTaskAtIndex(index) - function updateMainItemBindings() { - if (tasks.toolTipOpenedByClick !== null && tasks.toolTipOpenedByClick !== task) { - return; + else { + indicatorComputedSize = indicatorLength + } + if(!isVertical){ + width = indicatorComputedSize; + height = plasmoid.configuration.indicatorSize + } + else{ + width = plasmoid.configuration.indicatorSize + height = indicatorComputedSize + } + if(plasmoid.configuration.indicatorDesaturate && task.state === "minimized") { + var colorHSL = hexToHSL(colorEval) + colorCalc = Qt.hsla(colorHSL.h, 0.2, 0.6, 1) + } + else if(!isFirst && plasmoid.configuration.indicatorStyle === 0 && task.state !== "minimized") {//Metro specific handling + colorCalc = Qt.darker(colorEval, 1.2) + } + else { + colorCalc = colorEval + } + return {height: height, width: width, colorCalc: colorCalc} } - - mainItem.parentTask = task; - mainItem.rootIndex = tasksModel.makeModelIndex(itemIndex, -1); - - mainItem.appName = Qt.binding(() => model.AppName); - mainItem.pidParent = Qt.binding(() => model.AppPid !== undefined ? model.AppPid : 0); - mainItem.windows = Qt.binding(() => model.WinIdList); - mainItem.isGroup = Qt.binding(() => model.IsGroupParent === true); - mainItem.icon = Qt.binding(() => model.decoration); - mainItem.launcherUrl = Qt.binding(() => model.LauncherUrlWithoutIcon); - mainItem.isLauncher = Qt.binding(() => model.IsLauncher === true); - mainItem.isMinimizedParent = Qt.binding(() => model.IsMinimized === true); - mainItem.displayParent = Qt.binding(() => model.display); - mainItem.genericName = Qt.binding(() => model.GenericName); - mainItem.virtualDesktopParent = Qt.binding(() => - (model.VirtualDesktops !== undefined && model.VirtualDesktops.length > 0) ? model.VirtualDesktops : [0]); - mainItem.isOnAllVirtualDesktopsParent = Qt.binding(() => model.IsOnAllVirtualDesktops === true); - mainItem.activitiesParent = Qt.binding(() => model.Activities); - - mainItem.smartLauncherCountVisible = Qt.binding(() => task.smartLauncherItem && task.smartLauncherItem.countVisible); - mainItem.smartLauncherCount = Qt.binding(() => mainItem.smartLauncherCountVisible ? task.smartLauncherItem.count : 0); - } + width: computedVar.width + height: computedVar.height + color: computedVar.colorCalc + radius: (Math.max(width, height) / Math.min(width, height)) * (plasmoid.configuration.indicatorRadius / 100) + } } - + states:[ State {//safety case - use bottom when not override name: "floating-fallback" @@ -644,8 +579,8 @@ MouseArea { State { name: "bottom" when: (plasmoid.configuration.indicatorOverride && plasmoid.configuration.indicatorLocation === 0) - || (!plasmoid.configuration.indicatorOverride && plasmoid.location === PlasmaCore.Types.BottomEdge && !plasmoid.configuration.indicatorReverse) - || (!plasmoid.configuration.indicatorOverride && plasmoid.location === PlasmaCore.Types.TopEdge && plasmoid.configuration.indicatorReverse) + || (!plasmoid.configuration.indicatorOverride && plasmoid.location === PlasmaCore.Types.BottomEdge && !plasmoid.configuration.indicatorReverse) + || (!plasmoid.configuration.indicatorOverride && plasmoid.location === PlasmaCore.Types.TopEdge && plasmoid.configuration.indicatorReverse) AnchorChanges { target: indicator @@ -661,9 +596,9 @@ MouseArea { State { name: "left" when: (plasmoid.configuration.indicatorOverride && plasmoid.configuration.indicatorLocation === 1) - || (!plasmoid.configuration.indicatorOverride && plasmoid.location === PlasmaCore.Types.LeftEdge && !plasmoid.configuration.indicatorReverse) - || (!plasmoid.configuration.indicatorOverride && plasmoid.location === PlasmaCore.Types.RightEdge && plasmoid.configuration.indicatorReverse) - + || (!plasmoid.configuration.indicatorOverride && plasmoid.location === PlasmaCore.Types.LeftEdge && !plasmoid.configuration.indicatorReverse) + || (!plasmoid.configuration.indicatorOverride && plasmoid.location === PlasmaCore.Types.RightEdge && plasmoid.configuration.indicatorReverse) + AnchorChanges { target: indicator @@ -679,8 +614,8 @@ MouseArea { State { name: "right" when: (plasmoid.configuration.indicatorOverride && plasmoid.configuration.indicatorLocation === 2) - || (!plasmoid.configuration.indicatorOverride && plasmoid.location === PlasmaCore.Types.RightEdge && !plasmoid.configuration.indicatorReverse) - || (!plasmoid.configuration.indicatorOverride && plasmoid.location === PlasmaCore.Types.LeftEdge && plasmoid.configuration.indicatorReverse) + || (!plasmoid.configuration.indicatorOverride && plasmoid.location === PlasmaCore.Types.RightEdge && !plasmoid.configuration.indicatorReverse) + || (!plasmoid.configuration.indicatorOverride && plasmoid.location === PlasmaCore.Types.LeftEdge && plasmoid.configuration.indicatorReverse) AnchorChanges { target: indicator @@ -696,8 +631,8 @@ MouseArea { State { name: "top" when: (plasmoid.configuration.indicatorOverride && plasmoid.configuration.indicatorLocation === 3) - || (!plasmoid.configuration.indicatorOverride && plasmoid.location === PlasmaCore.Types.TopEdge && !plasmoid.configuration.indicatorReverse) - || (!plasmoid.configuration.indicatorOverride && plasmoid.location === PlasmaCore.Types.BottomEdge && plasmoid.configuration.indicatorReverse) + || (!plasmoid.configuration.indicatorOverride && plasmoid.location === PlasmaCore.Types.TopEdge && !plasmoid.configuration.indicatorReverse) + || (!plasmoid.configuration.indicatorOverride && plasmoid.location === PlasmaCore.Types.BottomEdge && plasmoid.configuration.indicatorReverse) AnchorChanges { target: indicator @@ -711,9 +646,73 @@ MouseArea { } } ] - } + PlasmaCore.ToolTipArea { + id: toolTipArea + + anchors.fill: parent + location: plasmoid.location + + enabled: plasmoid.configuration.showToolTips && !inPopup && !tasks.groupDialog && (tasks.toolTipOpenedByClick === task || tasks.toolTipOpenedByClick === null) + interactive: model.IsWindow === true || mainItem.hasPlayer + + // when the mouse leaves the tooltip area, a timer to hide is set for (timeout / 20) ms + // see plasma-framework/src/declarativeimports/core/tooltipdialog.cpp function dismiss() + // to compensate for that we multiply by 20 here, to get an effective leave timeout of 2s. + timeout: (tasks.toolTipOpenedByClick === task) ? 2000*20 : 4000 + + mainItem: (model.IsWindow === true) ? openWindowToolTipDelegate : pinnedAppToolTipDelegate + + onToolTipVisibleChanged: { + if (!toolTipVisible) { + tasks.toolTipOpenedByClick = null; + } + } + + onContainsMouseChanged: if (containsMouse) { + updateMainItemBindings(); + } + + // Will also be called in activateTaskAtIndex(index) + function updateMainItemBindings() { + if (tasks.toolTipOpenedByClick !== null && tasks.toolTipOpenedByClick !== task) { + return; + } + + mainItem.parentTask = task; + mainItem.rootIndex = tasksModel.makeModelIndex(itemIndex, -1); + + mainItem.appName = Qt.binding(() => model.AppName); + mainItem.pidParent = Qt.binding(() => model.AppPid !== undefined ? model.AppPid : 0); + mainItem.windows = Qt.binding(() => model.WinIdList); + mainItem.isGroup = Qt.binding(() => model.IsGroupParent === true); + mainItem.icon = Qt.binding(() => model.decoration); + mainItem.launcherUrl = Qt.binding(() => model.LauncherUrlWithoutIcon); + mainItem.isLauncher = Qt.binding(() => model.IsLauncher === true); + mainItem.isMinimizedParent = Qt.binding(() => model.IsMinimized === true); + mainItem.displayParent = Qt.binding(() => model.display); + mainItem.genericName = Qt.binding(() => model.GenericName); + mainItem.virtualDesktopParent = Qt.binding(() => + (model.VirtualDesktops !== undefined && model.VirtualDesktops.length > 0) ? model.VirtualDesktops : [0]); + mainItem.isOnAllVirtualDesktopsParent = Qt.binding(() => model.IsOnAllVirtualDesktops === true); + mainItem.activitiesParent = Qt.binding(() => model.Activities); + + mainItem.smartLauncherCountVisible = Qt.binding(() => task.smartLauncherItem && task.smartLauncherItem.countVisible); + mainItem.smartLauncherCount = Qt.binding(() => mainItem.smartLauncherCountVisible ? task.smartLauncherItem.count : 0); + } + } + + ColorOverlay { + id: colorOverride + anchors.fill: frame + source: frame + /*hue: hexToHSL(plasmoid.configuration.buttonColorizeDominant ? frame.dominantColor : plasmoid.configuration.buttonColorizeCustom).h + lightness: frame.isHovered ? hexToHSL(plasmoid.configuration.buttonColorizeDominant ? frame.dominantColor : plasmoid.configuration.buttonColorizeCustom).l - 0.5 : hexToHSL(plasmoid.configuration.buttonColorizeDominant ? imageColors.dominant : plasmoid.configuration.buttonColorizeCustom).l - 1 + saturation: hexToHSL(plasmoid.configuration.buttonColorizeDominant ? frame.dominantColor : plasmoid.configuration.buttonColorizeCustom).s*/ + color: plasmoid.configuration.buttonColorizeDominant ? frame.dominantColor : plasmoid.configuration.buttonColorizeCustom + visible: plasmoid.configuration.buttonColorize ? true : false + } Loader { @@ -901,7 +900,7 @@ MouseArea { PropertyChanges { target: colorOverride visible: plasmoid.configuration.buttonColorize ? frame.isHovered ? true : false : false - lightness: hexToHSL(plasmoid.configuration.buttonColorizeDominant ? imageColors.dominant : plasmoid.configuration.buttonColorizeCustom).l - 0.8 + //lightness: hexToHSL(plasmoid.configuration.buttonColorizeDominant ? imageColors.dominant : plasmoid.configuration.buttonColorizeCustom).l - 0.8 } }, State { From 4664f4ecf431d76bc00625ed544ae4c491ee858f Mon Sep 17 00:00:00 2001 From: Alexandra Date: Tue, 22 Aug 2023 19:18:06 -0600 Subject: [PATCH 2/5] Show decoration when minimized and colorized --- contents/ui/Task.qml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/contents/ui/Task.qml b/contents/ui/Task.qml index 25cb56d7..cd6cdfb2 100644 --- a/contents/ui/Task.qml +++ b/contents/ui/Task.qml @@ -897,11 +897,6 @@ MouseArea { target: frame basePrefix: "minimized" } - PropertyChanges { - target: colorOverride - visible: plasmoid.configuration.buttonColorize ? frame.isHovered ? true : false : false - //lightness: hexToHSL(plasmoid.configuration.buttonColorizeDominant ? imageColors.dominant : plasmoid.configuration.buttonColorizeCustom).l - 0.8 - } }, State { name: "active" From 12261ac9594735c373cd58fb57a5167b8fb2b394 Mon Sep 17 00:00:00 2001 From: Alexandra Date: Tue, 22 Aug 2023 20:20:11 -0600 Subject: [PATCH 3/5] Colorize inactive setting --- contents/config/main.xml | 4 ++++ contents/ui/ConfigAppearance.qml | 9 +++++++++ contents/ui/Task.qml | 24 ++++++++++++++++++++++++ 3 files changed, 37 insertions(+) diff --git a/contents/config/main.xml b/contents/config/main.xml index 65c229ff..a2191c7b 100644 --- a/contents/config/main.xml +++ b/contents/config/main.xml @@ -212,6 +212,10 @@ false + + + false + true diff --git a/contents/ui/ConfigAppearance.qml b/contents/ui/ConfigAppearance.qml index b1ba209d..997dd948 100644 --- a/contents/ui/ConfigAppearance.qml +++ b/contents/ui/ConfigAppearance.qml @@ -34,6 +34,7 @@ Kirigami.FormLayout { property alias cfg_taskSpacingSize: taskSpacingSize.value property alias cfg_buttonColorize: buttonColorize.checked + property alias cfg_buttonColorizeInactive: buttonColorizeInactive.checked property alias cfg_buttonColorizeDominant: buttonColorizeDominant.checked property alias cfg_buttonColorizeCustom: buttonColorizeCustom.color @@ -80,6 +81,14 @@ Kirigami.FormLayout { text: i18n("Colorize buttons") } + RowLayout { + Item { implicitWidth: Kirigami.Units.gridUnit } + CheckBox { + id: buttonColorizeInactive + text: i18n("Colorize inactive buttons") + } + } + CheckBox { enabled: buttonColorize.checked id: buttonColorizeDominant diff --git a/contents/ui/Task.qml b/contents/ui/Task.qml index cd6cdfb2..95b2d9e9 100644 --- a/contents/ui/Task.qml +++ b/contents/ui/Task.qml @@ -910,6 +910,30 @@ MouseArea { target: colorOverride visible: plasmoid.configuration.buttonColorize ? true : false } + }, + State { + name: "inactive" + when: model.IsActive === false && !frame.isHovered + PropertyChanges { + target: colorOverride + visible: plasmoid.configuration.buttonColorize && plasmoid.configuration.buttonColorizeInactive ? true : false + } + PropertyChanges { + target: frame + visible: plasmoid.configuration.buttonColorize && plasmoid.configuration.buttonColorizeInactive ? false : true + } + }, + State { + name: "hover" + when: frame.isHovered + PropertyChanges { + target: colorOverride + visible: plasmoid.configuration.buttonColorize ? true : false + } + PropertyChanges { + target: frame + visible: plasmoid.configuration.buttonColorize ? false : true + } } ] From e14fc4f856a3cba4a70a09435a7aed66a8c584f1 Mon Sep 17 00:00:00 2001 From: Alexandra Date: Tue, 22 Aug 2023 21:06:41 -0600 Subject: [PATCH 4/5] Make audio frame follow colorize if applicable --- contents/ui/AudioStream.qml | 14 +++++++++++++- contents/ui/Task.qml | 10 ++++++---- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/contents/ui/AudioStream.qml b/contents/ui/AudioStream.qml index 41bfd135..318e1289 100644 --- a/contents/ui/AudioStream.qml +++ b/contents/ui/AudioStream.qml @@ -7,8 +7,11 @@ import QtQuick 2.15 import org.kde.plasma.core 2.0 as PlasmaCore +import org.kde.kirigami 2.20 as Kirigami +import QtGraphicalEffects 1.15 MouseArea { + property string dominantIconColor id: audioStreamIconBox hoverEnabled: true onClicked: toggleMuted() @@ -80,12 +83,21 @@ MouseArea { visible: opacity > 0 PlasmaCore.FrameSvgItem { + id: audioStreamFrame anchors.fill: audioStreamIcon - visible: parent.containsMouse + visible: parent.containsMouse && !plasmoid.configuration.buttonColorize ? true : false imagePath: "widgets/viewitem" prefix: "hover" } + ColorOverlay { + id: colorOverrideAudio + anchors.fill: audioStreamFrame + source: audioStreamFrame + color: plasmoid.configuration.buttonColorizeDominant ? dominantIconColor : plasmoid.configuration.buttonColorizeCustom + visible: parent.containsMouse && plasmoid.configuration.buttonColorize ? true : false + } + PlasmaCore.Svg { id: audioSvg imagePath: "icons/audio" diff --git a/contents/ui/Task.qml b/contents/ui/Task.qml index 95b2d9e9..afa49262 100644 --- a/contents/ui/Task.qml +++ b/contents/ui/Task.qml @@ -16,7 +16,6 @@ import org.kde.plasma.private.taskmanager 0.1 as TaskManagerApplet import QtQuick.Layouts 1.3 - import QtGraphicalEffects 1.15 import "code/layout.js" as LayoutManager @@ -707,9 +706,6 @@ MouseArea { id: colorOverride anchors.fill: frame source: frame - /*hue: hexToHSL(plasmoid.configuration.buttonColorizeDominant ? frame.dominantColor : plasmoid.configuration.buttonColorizeCustom).h - lightness: frame.isHovered ? hexToHSL(plasmoid.configuration.buttonColorizeDominant ? frame.dominantColor : plasmoid.configuration.buttonColorizeCustom).l - 0.5 : hexToHSL(plasmoid.configuration.buttonColorizeDominant ? imageColors.dominant : plasmoid.configuration.buttonColorizeCustom).l - 1 - saturation: hexToHSL(plasmoid.configuration.buttonColorizeDominant ? frame.dominantColor : plasmoid.configuration.buttonColorizeCustom).s*/ color: plasmoid.configuration.buttonColorizeDominant ? frame.dominantColor : plasmoid.configuration.buttonColorizeCustom visible: plasmoid.configuration.buttonColorize ? true : false } @@ -822,6 +818,12 @@ MouseArea { width: Math.min(Math.min(iconBox.width, iconBox.height) * 0.4, PlasmaCore.Units.iconSizes.smallMedium) height: width + Binding { + target: audioStreamIconLoader.item + property: "dominantIconColor" + value: frame.dominantColor + } + anchors { right: frame.right top: frame.top From 6cb07582343df03c8a6028a8bf8cb4cf6436ae57 Mon Sep 17 00:00:00 2001 From: Alexandra Date: Tue, 22 Aug 2023 21:11:08 -0600 Subject: [PATCH 5/5] Fix minimize when colorize inactive --- contents/ui/Task.qml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/contents/ui/Task.qml b/contents/ui/Task.qml index afa49262..2ab06dd7 100644 --- a/contents/ui/Task.qml +++ b/contents/ui/Task.qml @@ -893,11 +893,16 @@ MouseArea { }, State { name: "minimized" - when: model.IsMinimized === true + when: model.IsMinimized === true && !frame.isHovered PropertyChanges { target: frame basePrefix: "minimized" + visible: plasmoid.configuration.buttonColorize && plasmoid.configuration.buttonColorizeInactive ? false : true + } + PropertyChanges { + target: colorOverride + visible: plasmoid.configuration.buttonColorize && plasmoid.configuration.buttonColorizeInactive ? true : false } }, State {