Warning, /plasma/latte-dock/shell/package/contents/configuration/CanvasConfiguration.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 SPDX-FileCopyrightText: 2020 Michail Vourlakos <mvourlakos@gmail.com>
0003 SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005
0006 import QtQuick 2.8
0007 import QtGraphicalEffects 1.0
0008
0009 import org.kde.plasma.core 2.0 as PlasmaCore
0010 import org.kde.plasma.components 2.0 as PlasmaComponents
0011
0012 import org.kde.latte.private.app 0.1 as LatteApp
0013 import org.kde.latte.core 0.2 as LatteCore
0014 import org.kde.latte.private.containment 0.1 as LatteContainment
0015
0016 import "canvas" as CanvasComponent
0017
0018 Loader {
0019 active: plasmoid && plasmoid.configuration && latteView
0020
0021 sourceComponent: Item{
0022 id: root
0023 readonly property bool isVertical: plasmoid.formFactor === PlasmaCore.Types.Vertical
0024 readonly property bool isHorizontal: !isVertical
0025
0026 property int animationSpeed: LatteCore.WindowSystem.compositingActive ? 500 : 0
0027 property int panelAlignment: plasmoid.configuration.alignment
0028
0029 readonly property real appliedOpacity: imageTiler.opacity
0030 readonly property real maxOpacity: universalSettings.inConfigureAppletsMode || !LatteCore.WindowSystem.compositingActive ?
0031 1 : plasmoid.configuration.editBackgroundOpacity
0032
0033 property real offset: {
0034 if (root.isHorizontal) {
0035 return width * (plasmoid.configuration.offset/100);
0036 } else {
0037 return height * (plasmoid.configuration.offset/100)
0038 }
0039 }
0040
0041 property string appChosenShadowColor: {
0042 if (plasmoid.configuration.shadowColorType === LatteContainment.Types.ThemeColorShadow) {
0043 var strC = String(theme.textColor);
0044 return strC.indexOf("#") === 0 ? strC.substr(1) : strC;
0045 } else if (plasmoid.configuration.shadowColorType === LatteContainment.Types.UserColorShadow) {
0046 return plasmoid.configuration.shadowColor;
0047 }
0048
0049 // default shadow color
0050 return "080808";
0051 }
0052
0053 property string appShadowColorSolid: "#" + appChosenShadowColor
0054
0055 //// BEGIN OF Behaviors
0056 Behavior on offset {
0057 NumberAnimation {
0058 id: offsetAnimation
0059 duration: animationSpeed
0060 easing.type: Easing.OutCubic
0061 }
0062 }
0063 //// END OF Behaviors
0064
0065 Item {
0066 id: graphicsSystem
0067 readonly property bool isAccelerated: (GraphicsInfo.api !== GraphicsInfo.Software)
0068 && (GraphicsInfo.api !== GraphicsInfo.Unknown)
0069 }
0070
0071 Image{
0072 id: imageTiler
0073 anchors.fill: parent
0074 opacity: root.maxOpacity
0075 fillMode: Image.Tile
0076 source: latteView.layout ? latteView.layout.background : "../images/canvas/blueprint.jpg"
0077
0078 Behavior on opacity {
0079 NumberAnimation {
0080 duration: 0.8 * root.animationSpeed
0081 easing.type: Easing.OutCubic
0082 }
0083 }
0084 }
0085
0086 LatteApp.ContextMenuLayer {
0087 id: contextMenuLayer
0088 anchors.fill: parent
0089 view: latteView
0090 }
0091
0092 MouseArea {
0093 id: editBackMouseArea
0094 anchors.fill: imageTiler
0095 visible: !universalSettings.inConfigureAppletsMode
0096 hoverEnabled: true
0097
0098 property bool wheelIsBlocked: false;
0099 readonly property double opacityStep: 0.1
0100 readonly property string tooltip: i18nc("opacity for background under edit mode, %1 is opacity percentage",
0101 "You can use mouse wheel to change background opacity of %1%",Math.round(plasmoid.configuration.editBackgroundOpacity * 100))
0102
0103 onWheel: {
0104 processWheel(wheel);
0105 }
0106
0107
0108 function processWheel(wheel) {
0109 if (wheelIsBlocked) {
0110 return;
0111 }
0112
0113 wheelIsBlocked = true;
0114 scrollDelayer.start();
0115
0116 var angle = wheel.angleDelta.y / 8;
0117
0118 if (angle > 10) {
0119 plasmoid.configuration.editBackgroundOpacity = Math.min(100, plasmoid.configuration.editBackgroundOpacity + opacityStep)
0120 } else if (angle < -10) {
0121 plasmoid.configuration.editBackgroundOpacity = Math.max(0, plasmoid.configuration.editBackgroundOpacity - opacityStep)
0122 }
0123 }
0124
0125 //! A timer is needed in order to handle also touchpads that probably
0126 //! send too many signals very fast. This way the signals per sec are limited.
0127 //! The user needs to have a steady normal scroll in order to not
0128 //! notice a annoying delay
0129 Timer{
0130 id: scrollDelayer
0131
0132 interval: 80
0133 onTriggered: editBackMouseArea.wheelIsBlocked = false;
0134 }
0135 }
0136
0137 PlasmaComponents.Button {
0138 anchors.fill: editBackMouseArea
0139 opacity: 0
0140 tooltip: editBackMouseArea.tooltip
0141 }
0142
0143 //! Settings Overlay
0144 CanvasComponent.SettingsOverlay {
0145 id: settingsOverlay
0146 anchors.fill: parent
0147 }
0148 }
0149 }