Warning, /plasma/latte-dock/containment/package/contents/ui/colorizer/Manager.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 SPDX-FileCopyrightText: 2018 Michail Vourlakos <mvourlakos@gmail.com>
0003 SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005
0006 import QtQuick 2.7
0007
0008 import org.kde.plasma.plasmoid 2.0
0009 import org.kde.plasma.core 2.0 as PlasmaCore
0010
0011 import org.kde.latte.core 0.2 as LatteCore
0012 import org.kde.latte.private.app 0.1 as LatteApp
0013 import org.kde.latte.private.containment 0.1 as LatteContainment
0014
0015 import "../../code/ColorizerTools.js" as ColorizerTools
0016
0017 Loader{
0018 id: manager
0019
0020 //! the loader loads the backgroundTracker component
0021 active: root.themeColors === LatteContainment.Types.SmartThemeColors
0022
0023 readonly property bool backgroundIsBusy: item ? item.isBusy : false
0024
0025 readonly property real originalThemeTextColorBrightness: ColorizerTools.colorBrightness(theme.textColor)
0026 readonly property color originalLightTextColor: originalThemeTextColorBrightness > 127.5 ? theme.textColor : theme.backgroundColor
0027
0028 readonly property real themeTextColorBrightness: ColorizerTools.colorBrightness(textColor)
0029 readonly property real backgroundColorBrightness: ColorizerTools.colorBrightness(backgroundColor)
0030
0031 readonly property color focusGlowColor: Qt.hsva(buttonFocusColor.h, buttonFocusColor.s, 1.0, 1.0)
0032
0033 readonly property color outlineColorBase: backgroundColor
0034 readonly property real outlineColorBaseBrightness: ColorizerTools.colorBrightness(outlineColorBase)
0035 readonly property color outlineColor: {
0036 if (!root.panelOutline) {
0037 return backgroundColor;
0038 }
0039
0040 if (outlineColorBaseBrightness > 127.5) {
0041 return Qt.darker(outlineColorBase, 1.5);
0042 } else {
0043 return Qt.lighter(outlineColorBase, 2.2);
0044 }
0045 }
0046
0047 readonly property bool editModeTextColorIsBright: ColorizerTools.colorBrightness(editModeTextColor) > 127.5
0048 readonly property color editModeTextColor: latteView && latteView.layout ? latteView.layout.textColor : "white"
0049
0050 readonly property bool mustBeShown: (applyTheme && applyTheme !== theme)
0051 || (root.inConfigureAppletsMode && (root.themeColors === LatteContainment.Types.SmartThemeColors))
0052
0053 readonly property real currentBackgroundBrightness: item ? item.currentBrightness : -1000
0054
0055 readonly property bool applyingWindowColors: (root.windowColors === LatteContainment.Types.ActiveWindowColors && latteView && latteView.windowsTracker
0056 && selectedWindowsTracker.activeWindowScheme)
0057 || (root.windowColors === LatteContainment.Types.TouchingWindowColors && latteView && latteView.windowsTracker
0058 && latteView.windowsTracker.currentScreen.touchingWindowScheme)
0059
0060 property QtObject applyTheme: {
0061 if (!root.environment.isGraphicsSystemAccelerated) {
0062 return theme;
0063 }
0064
0065 if (latteView && latteView.windowsTracker && !(root.plasmaBackgroundForPopups && root.hasExpandedApplet)) {
0066 if (root.windowColors === LatteContainment.Types.ActiveWindowColors && selectedWindowsTracker.activeWindowScheme) {
0067 return selectedWindowsTracker.activeWindowScheme;
0068 }
0069
0070 if (root.windowColors === LatteContainment.Types.TouchingWindowColors && latteView.windowsTracker.currentScreen.touchingWindowScheme) {
0071 //! we must track touching windows and when they are not ative
0072 //! the active window scheme is used for convenience
0073 if (latteView.windowsTracker.currentScreen.existsWindowTouching || latteView.windowsTracker.currentScreen.existsWindowTouchingEdge
0074 && !(latteView.windowsTracker.currentScreen.activeWindowTouching || latteView.windowsTracker.currentScreen.activeWindowTouchingEdge)
0075 && latteView.windowsTracker.currentScreen.activeWindowScheme) {
0076 return latteView.windowsTracker.currentScreen.activeWindowScheme;
0077 }
0078
0079 return latteView.windowsTracker.currentScreen.touchingWindowScheme;
0080 }
0081 }
0082
0083 if (themeExtended) {
0084 if (root.userShowPanelBackground && root.plasmaBackgroundForPopups && root.hasExpandedApplet /*for expanded popups when it is enabled*/
0085 || root.plasmaStyleBusyForTouchingBusyVerticalView
0086 || (root.themeColors === LatteContainment.Types.SmartThemeColors /*for Smart theming that Windows colors are not used and the user wants solidness at some cases*/
0087 && root.windowColors === LatteContainment.Types.NoneWindowColors
0088 && root.forceSolidPanel) ) {
0089 /* plasma style*/
0090 return theme;
0091 }
0092
0093 if (root.themeColors === LatteContainment.Types.DarkThemeColors) {
0094 return themeExtended.darkTheme;
0095 } else if (root.themeColors === LatteContainment.Types.LightThemeColors) {
0096 return themeExtended.lightTheme;
0097 } else if (root.themeColors === LatteContainment.Types.ReverseThemeColors) {
0098 return themeExtended.isLightTheme ? themeExtended.darkTheme : themeExtended.lightTheme;
0099 } else if (root.themeColors === LatteContainment.Types.LayoutThemeColors && latteView && latteView.layout) {
0100 return latteView.layout.scheme;
0101 }
0102
0103 if (root.themeColors === LatteContainment.Types.SmartThemeColors) {
0104 //! Smart Colors Case
0105 if (!root.forcePanelForBusyBackground) {
0106 //! simple case that not a busy background is applied
0107 return currentBackgroundBrightness > 127.5 ? themeExtended.lightTheme : themeExtended.darkTheme;
0108 } else {
0109 //! Smart + Busy background case
0110 var themeContrastedTextColor = currentBackgroundBrightness > 127.5 ? themeExtended.lightTheme : themeExtended.darkTheme;
0111 var themeContrastedBackground = currentBackgroundBrightness > 127.5 ? themeExtended.darkTheme : themeExtended.lightTheme;
0112
0113 if (root.myView.backgroundStoredOpacity < 0.35) {
0114 //! textColor should be better to provide the needed contrast
0115 return themeContrastedTextColor;
0116 } else if (root.myView.backgroundStoredOpacity >= 0.35 && root.myView.backgroundStoredOpacity <= 0.70) {
0117 //! provide a dark case scenario at all cases
0118 return themeExtended.darkTheme;
0119 } else {
0120 //! default plasma theme should be better for panel transparency > 70
0121 return theme;
0122 }
0123 }
0124 }
0125 }
0126
0127 return theme;
0128 }
0129
0130 property color applyColor: textColor
0131
0132 readonly property color backgroundColor:applyTheme.backgroundColor
0133 readonly property color textColor: {
0134 if (latteView && latteView.layout
0135 && root.inConfigureAppletsMode
0136 && LatteCore.WindowSystem.compositingActive
0137 && root.myView.backgroundStoredOpacity<0.40
0138 && (root.themeColors === LatteContainment.Types.SmartThemeColors)) {
0139 return latteView.layout.textColor;
0140 }
0141
0142 return applyTheme.textColor;
0143 }
0144
0145 readonly property color inactiveBackgroundColor: applyTheme === theme ? theme.backgroundColor : applyTheme.inactiveBackgroundColor
0146 readonly property color inactiveTextColor: applyTheme === theme ? theme.textColor : applyTheme.inactiveTextColor
0147
0148 readonly property color highlightColor: applyTheme.highlightColor
0149 readonly property color highlightedTextColor: applyTheme.highlightedTextColor
0150 readonly property color positiveTextColor: applyTheme.positiveTextColor
0151 readonly property color neutralTextColor: applyTheme.neutralTextColor
0152 readonly property color negativeTextColor: applyTheme.negativeTextColor
0153
0154 readonly property color buttonTextColor: applyTheme.buttonTextColor
0155 readonly property color buttonBackgroundColor: applyTheme.buttonBackgroundColor
0156 readonly property color buttonHoverColor: applyTheme.buttonHoverColor
0157 readonly property color buttonFocusColor: applyTheme.buttonFocusColor
0158
0159 readonly property string scheme: {
0160 if (root.inConfigureAppletsMode && (root.themeColors === LatteContainment.Types.SmartThemeColors)) {
0161 if (!LatteCore.WindowSystem.compositingActive && applyTheme !== theme) {
0162 return applyTheme.schemeFile;
0163 }
0164
0165 //! in edit mode (that is shown the edit visual without opacity)
0166 //! take care the applets that need a proper color scheme to paint themselves
0167 if ((editModeTextColorIsBright && themeExtended.isLightTheme)
0168 || (!editModeTextColorIsBright && !themeExtended.isLightTheme)) {
0169 if (themeExtended.darkTheme === themeExtended.defaultTheme) {
0170 console.log("light theme... : " + themeExtended.isLightTheme);
0171 return themeExtended.lightTheme.schemeFile;
0172 } else {
0173 console.log("dark theme... : " + themeExtended.isDarkTheme);
0174 return themeExtended.darkTheme.schemeFile;
0175 }
0176 } else {
0177 console.log("default theme... : " + themeExtended.isLightTheme);
0178 return themeExtended.defaultTheme.schemeFile;
0179 }
0180 }
0181
0182 if (applyTheme===theme || !mustBeShown) {
0183 if (themeExtended) {
0184 return themeExtended.defaultTheme.schemeFile;
0185 } else {
0186 return "kdeglobals";
0187 }
0188 }
0189
0190 return applyTheme.schemeFile;
0191 }
0192
0193 sourceComponent: LatteApp.BackgroundTracker {
0194 activity: root.myView.isReady ? root.myView.lastUsedActivity : ""
0195 location: plasmoid.location
0196 screenName: latteView && latteView.positioner ? latteView.positioner.currentScreenName : ""
0197 }
0198 }