Warning, /frameworks/qqc2-desktop-style/org.kde.desktop/private/SwitchIndicator.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 SPDX-FileCopyrightText: 2022 Tanbir Jishan <tantalising007@gmail.com> 0003 SPDX-FileCopyrightText: 2017 The Qt Company Ltd. 0004 0005 SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 0006 */ 0007 0008 import QtQuick 0009 import org.kde.kirigami as Kirigami 0010 0011 Item { 0012 id: indicator 0013 implicitWidth: implicitHeight * 2 0014 implicitHeight: Kirigami.Units.gridUnit 0015 layer.enabled: control.opacity < 1.0 0016 0017 property Item control 0018 property alias handle: handle 0019 0020 Kirigami.Theme.colorSet: Kirigami.Theme.Button 0021 Kirigami.Theme.inherit: false 0022 0023 QtObject { // colors collected in one place so that main code remains clean and these properties are not exposed 0024 id: colorFactory 0025 0026 readonly property color switchBorderColor: control.checked ? Kirigami.Theme.highlightColor : handleBorderColor 0027 0028 readonly property color handleColor: Kirigami.Theme.backgroundColor 0029 readonly property color handleBorderColor: (control.hovered || control.visualFocus) ? Kirigami.Theme.hoverColor : Kirigami.ColorUtils.linearInterpolation(Kirigami.Theme.backgroundColor, Kirigami.Theme.textColor, Kirigami.Theme.frameContrast) 0030 0031 function blendBackgroundWithTextColorWithRatio(factor) { 0032 // blending of background color with text color for producing a border color. The usual ratios are 70:30, 80:20 and 75:25. The more the background color, the more the contrast. 0033 return Qt.tint(Kirigami.Theme.textColor, Qt.alpha(Kirigami.Theme.backgroundColor, factor)) 0034 } 0035 } 0036 0037 Rectangle { 0038 id: inactive 0039 0040 anchors { 0041 fill: parent 0042 // margins so that the background is a bit shorter than the handle 0043 topMargin: Math.floor(parent.height / 6) 0044 bottomMargin: Math.floor(parent.height / 6) 0045 } 0046 0047 radius: Math.round(height / 2) 0048 color: colorFactory.blendBackgroundWithTextColorWithRatio(0.9) 0049 border.color: colorFactory.switchBorderColor 0050 } 0051 0052 Rectangle { 0053 anchors { 0054 left: inactive.left 0055 top: inactive.top 0056 bottom: inactive.bottom 0057 right: handle.right 0058 } 0059 0060 radius: inactive.radius 0061 color: Qt.alpha(Kirigami.Theme.highlightColor, 0.5) 0062 } 0063 0064 Rectangle { 0065 id: handle 0066 0067 x: Math.max(0, Math.min(parent.width - width, control.visualPosition * parent.width - (width / 2))) 0068 0069 anchors { 0070 top: parent.top 0071 bottom: parent.bottom 0072 } 0073 0074 width: height 0075 radius: Math.floor(width / 2) 0076 color: colorFactory.handleColor 0077 border.color: colorFactory.handleBorderColor 0078 0079 Behavior on x { 0080 enabled: !control.pressed 0081 SmoothedAnimation { 0082 duration: Kirigami.Units.shortDuration 0083 } 0084 } 0085 0086 Behavior on color { 0087 ColorAnimation { 0088 easing.type: Easing.InCubic 0089 duration: Kirigami.Units.shortDuration 0090 } 0091 } 0092 } 0093 }