Warning, /plasma/latte-dock/indicators/default/package/ui/main.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 SPDX-FileCopyrightText: 2019 Michail Vourlakos <mvourlakos@gmail.com> 0003 SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 0006 import QtQuick 2.0 0007 import QtQuick.Layouts 1.1 0008 import QtGraphicalEffects 1.0 0009 0010 import org.kde.plasma.plasmoid 2.0 0011 import org.kde.plasma.core 2.0 as PlasmaCore 0012 import org.kde.plasma.components 2.0 as PlasmaComponents 0013 0014 import org.kde.latte.core 0.2 as LatteCore 0015 import org.kde.latte.components 1.0 as LatteComponents 0016 0017 LatteComponents.IndicatorItem{ 0018 id: root 0019 extraMaskThickness: reversedEnabled && glowEnabled ? 1.7 * (factor * indicator.maxIconSize) : 0 0020 0021 enabledForApplets: indicator && indicator.configuration ? indicator.configuration.enabledForApplets : true 0022 lengthPadding: indicator && indicator.configuration ? indicator.configuration.lengthPadding : 0.08 0023 backgroundCornerMargin: indicator && indicator.configuration ? indicator.configuration.backgroundCornerMargin : 1.00 0024 0025 readonly property real factor: indicator.configuration.size 0026 readonly property int size: factor * indicator.currentIconSize 0027 readonly property int thickLocalMargin: indicator.configuration.thickMargin * indicator.currentIconSize 0028 0029 readonly property int screenEdgeMargin: plasmoid.location === PlasmaCore.Types.Floating || reversedEnabled ? 0 : indicator.screenEdgeMargin 0030 0031 readonly property int thicknessMargin: screenEdgeMargin + thickLocalMargin + (glowEnabled ? 1 : 0) 0032 0033 property real textColorBrightness: colorBrightness(indicator.palette.textColor) 0034 0035 property color isActiveColor: indicator.palette.buttonFocusColor 0036 property color minimizedColor: { 0037 if (minimizedTaskColoredDifferently) { 0038 return (textColorBrightness > 127.5 ? Qt.darker(indicator.palette.textColor, 1.7) : Qt.lighter(indicator.palette.textColor, 7)); 0039 } 0040 0041 return isActiveColor; 0042 } 0043 0044 property color notActiveColor: indicator.isMinimized ? minimizedColor : isActiveColor 0045 0046 //! Common Options 0047 readonly property bool reversedEnabled: indicator.configuration.reversed 0048 0049 //! Configuration Options 0050 readonly property bool extraDotOnActive: indicator.configuration.extraDotOnActive 0051 readonly property bool minimizedTaskColoredDifferently: indicator.configuration.minimizedTaskColoredDifferently 0052 readonly property int activeStyle: indicator.configuration.activeStyle 0053 //!glow options 0054 readonly property bool glowEnabled: indicator.configuration.glowEnabled 0055 readonly property bool glow3D: indicator.configuration.glow3D 0056 readonly property int glowApplyTo: indicator.configuration.glowApplyTo 0057 readonly property real glowOpacity: indicator.configuration.glowOpacity 0058 readonly property int glowMargins: glowEnabled ? 12 : 0 0059 0060 /*Rectangle{ 0061 anchors.fill: parent 0062 border.width: 1 0063 border.color: "blue" 0064 color: "transparent" 0065 }*/ 0066 0067 function colorBrightness(color) { 0068 return colorBrightnessFromRGB(color.r * 255, color.g * 255, color.b * 255); 0069 } 0070 0071 // formula for brightness according to: 0072 // https://www.w3.org/TR/AERT/#color-contrast 0073 function colorBrightnessFromRGB(r, g, b) { 0074 return (r * 299 + g * 587 + b * 114) / 1000 0075 } 0076 0077 Grid{ 0078 id: grid 0079 columns: plasmoid.formFactor === PlasmaCore.Types.Vertical ? 1 : 0 0080 rows: plasmoid.formFactor !== PlasmaCore.Types.Vertical ? 1 : 0 0081 columnSpacing: 0 0082 rowSpacing: 0 0083 0084 LatteComponents.GlowPoint{ 0085 id:firstPoint 0086 width: stateWidth 0087 height: stateHeight 0088 opacity: { 0089 if (indicator.isEmptySpace) { 0090 return 0; 0091 } 0092 0093 if (indicator.isTask) { 0094 return indicator.isLauncher || (indicator.inRemoving && !isAnimating) ? 0 : 1 0095 } 0096 0097 if (indicator.isApplet) { 0098 return (indicator.isActive || isAnimating) ? 1 : 0 0099 } 0100 } 0101 0102 basicColor: indicator.isActive || (indicator.isGroup && indicator.hasShown) ? root.isActiveColor : root.notActiveColor 0103 0104 size: root.size 0105 glow3D: glow3D 0106 animation: Math.max(1.65*3*LatteCore.Environment.longDuration,indicator.durationTime*3*LatteCore.Environment.longDuration) 0107 location: plasmoid.location 0108 glowOpacity: root.glowOpacity 0109 contrastColor: indicator.shadowColor 0110 attentionColor: indicator.palette.negativeTextColor 0111 0112 roundCorners: true 0113 showAttention: indicator.inAttention 0114 showGlow: { 0115 if (glowEnabled && (glowApplyTo === 2 /*All*/ || showAttention )) 0116 return true; 0117 else if (glowEnabled && glowApplyTo === 1 /*OnActive*/ && indicator.hasActive) 0118 return true; 0119 else 0120 return false; 0121 } 0122 showBorder: glow3D 0123 0124 property int stateWidth: { 0125 if (!vertical && isActive && activeStyle === 0 /*Line*/) { 0126 return (indicator.isGroup ? root.width - secondPoint.width : root.width - spacer.width) - glowMargins; 0127 } 0128 0129 return root.size; 0130 } 0131 0132 property int stateHeight: { 0133 if (vertical && isActive && activeStyle === 0 /*Line*/) { 0134 return (indicator.isGroup ? root.height - secondPoint.height : root.height - spacer.height) - glowMargins; 0135 } 0136 0137 return root.size; 0138 } 0139 0140 property int animationTime: indicator.durationTime* (0.75*LatteCore.Environment.longDuration) 0141 0142 property bool isActive: indicator.hasActive || indicator.isActive 0143 0144 property bool vertical: plasmoid.formFactor === PlasmaCore.Types.Vertical 0145 0146 property real scaleFactor: indicator.scaleFactor 0147 0148 readonly property bool isAnimating: inGrowAnimation || inShrinkAnimation 0149 property bool inGrowAnimation: false 0150 property bool inShrinkAnimation: false 0151 0152 property bool isBindingBlocked: isAnimating 0153 0154 readonly property bool isActiveStateForAnimation: indicator.isActive && root.activeStyle === 0 /*Line*/ 0155 0156 onIsActiveStateForAnimationChanged: { 0157 if (root.activeStyle === 0 /*Line*/) { 0158 if (isActiveStateForAnimation) { 0159 inGrowAnimation = true; 0160 inShrinkAnimation = false; 0161 } else { 0162 inGrowAnimation = false; 0163 inShrinkAnimation = true; 0164 } 0165 } else { 0166 inGrowAnimation = false; 0167 inShrinkAnimation = false; 0168 } 0169 } 0170 0171 onWidthChanged: { 0172 if (!vertical) { 0173 if (inGrowAnimation && width >= stateWidth) { 0174 inGrowAnimation = false; 0175 } else if (inShrinkAnimation && width <= stateWidth) { 0176 inShrinkAnimation = false; 0177 } 0178 } 0179 } 0180 0181 onHeightChanged: { 0182 if (vertical) { 0183 if (inGrowAnimation && height >= stateHeight) { 0184 inGrowAnimation = false; 0185 } else if (inShrinkAnimation && height <= stateHeight) { 0186 inShrinkAnimation = false; 0187 } 0188 } 0189 } 0190 0191 Behavior on width { 0192 enabled: (!firstPoint.vertical && (firstPoint.isAnimating || firstPoint.opacity === 0/*first showing requirement*/)) 0193 NumberAnimation { 0194 duration: firstPoint.animationTime 0195 easing.type: Easing.Linear 0196 } 0197 } 0198 0199 Behavior on height { 0200 enabled: (firstPoint.vertical && (firstPoint.isAnimating || firstPoint.opacity === 0/*first showing requirement*/)) 0201 NumberAnimation { 0202 duration: firstPoint.animationTime 0203 easing.type: Easing.Linear 0204 } 0205 } 0206 } 0207 0208 Item{ 0209 id:spacer 0210 width: secondPoint.visible ? 0.5*root.size : 0 0211 height: secondPoint.visible ? 0.5*root.size : 0 0212 } 0213 0214 LatteComponents.GlowPoint{ 0215 id:secondPoint 0216 width: visible ? root.size : 0 0217 height: width 0218 0219 size: root.size 0220 glow3D: glow3D 0221 animation: Math.max(1.65*3*LatteCore.Environment.longDuration,indicator.durationTime*3*LatteCore.Environment.longDuration) 0222 location: plasmoid.location 0223 glowOpacity: root.glowOpacity 0224 contrastColor: indicator.shadowColor 0225 showBorder: glow3D 0226 0227 basicColor: state2Color 0228 roundCorners: true 0229 showGlow: glowEnabled && glowApplyTo === 2 /*All*/ 0230 visible: ( indicator.isGroup && ((extraDotOnActive && activeStyle === 0) /*Line*/ 0231 || activeStyle === 1 /*Dot*/ 0232 || !indicator.hasActive) ) ? true: false 0233 0234 //when there is no active window 0235 property color state1Color: indicator.hasShown ? root.isActiveColor : root.minimizedColor 0236 //when there is active window 0237 property color state2Color: indicator.hasMinimized ? root.minimizedColor : root.isActiveColor 0238 } 0239 } 0240 0241 states: [ 0242 State { 0243 name: "left" 0244 when: ((plasmoid.location === PlasmaCore.Types.LeftEdge && !reversedEnabled) || 0245 (plasmoid.location === PlasmaCore.Types.RightEdge && reversedEnabled)) 0246 0247 AnchorChanges { 0248 target: grid 0249 anchors{ verticalCenter:parent.verticalCenter; horizontalCenter:undefined; 0250 top:undefined; bottom:undefined; left:parent.left; right:undefined;} 0251 } 0252 PropertyChanges{ 0253 target: grid 0254 anchors.leftMargin: root.thicknessMargin; anchors.rightMargin: 0; anchors.topMargin:0; anchors.bottomMargin:0; 0255 anchors.horizontalCenterOffset: 0; anchors.verticalCenterOffset: 0; 0256 } 0257 }, 0258 State { 0259 name: "bottom" 0260 when: (plasmoid.location === PlasmaCore.Types.Floating || 0261 (plasmoid.location === PlasmaCore.Types.BottomEdge && !reversedEnabled) || 0262 (plasmoid.location === PlasmaCore.Types.TopEdge && reversedEnabled)) 0263 0264 AnchorChanges { 0265 target: grid 0266 anchors{ verticalCenter:undefined; horizontalCenter:parent.horizontalCenter; 0267 top:undefined; bottom:parent.bottom; left:undefined; right:undefined;} 0268 } 0269 PropertyChanges{ 0270 target: grid 0271 anchors.leftMargin: 0; anchors.rightMargin: 0; anchors.topMargin:0; anchors.bottomMargin: root.thicknessMargin; 0272 anchors.horizontalCenterOffset: 0; anchors.verticalCenterOffset: 0; 0273 } 0274 }, 0275 State { 0276 name: "top" 0277 when: ((plasmoid.location === PlasmaCore.Types.TopEdge && !reversedEnabled) || 0278 (plasmoid.location === PlasmaCore.Types.BottomEdge && reversedEnabled)) 0279 0280 AnchorChanges { 0281 target: grid 0282 anchors{ verticalCenter:undefined; horizontalCenter:parent.horizontalCenter; 0283 top:parent.top; bottom:undefined; left:undefined; right:undefined;} 0284 } 0285 PropertyChanges{ 0286 target: grid 0287 anchors.leftMargin: 0; anchors.rightMargin: 0; anchors.topMargin: root.thicknessMargin; anchors.bottomMargin:0; 0288 anchors.horizontalCenterOffset: 0; anchors.verticalCenterOffset: 0; 0289 } 0290 }, 0291 State { 0292 name: "right" 0293 when: ((plasmoid.location === PlasmaCore.Types.RightEdge && !reversedEnabled) || 0294 (plasmoid.location === PlasmaCore.Types.LeftEdge && reversedEnabled)) 0295 0296 AnchorChanges { 0297 target: grid 0298 anchors{ verticalCenter:parent.verticalCenter; horizontalCenter:undefined; 0299 top:undefined; bottom:undefined; left:undefined; right:parent.right;} 0300 } 0301 PropertyChanges{ 0302 target: grid 0303 anchors.leftMargin: 0; anchors.rightMargin: root.thicknessMargin; anchors.topMargin:0; anchors.bottomMargin:0; 0304 anchors.horizontalCenterOffset: 0; anchors.verticalCenterOffset: 0; 0305 } 0306 } 0307 ] 0308 }// number of windows indicator 0309