Warning, /plasma/latte-dock/declarativeimports/components/private/SwitchStyle.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.2
0007 import QtQuick.Controls.Styles 1.2 as QtQuickControlStyle
0008 import QtQuick.Controls 1.2
0009 import org.kde.plasma.core 2.0 as PlasmaCore
0010
0011 QtQuickControlStyle.SwitchStyle {
0012 id: styleRoot
0013 padding { top: 0 ; left: 0 ; right: 0 ; bottom: 0 }
0014
0015 PlasmaCore.Svg {
0016 id: switchSvg
0017 imagePath: "widgets/switch"
0018 colorGroup: PlasmaCore.ColorScope.colorGroup
0019 }
0020
0021 property bool themeHasSwitch: false
0022
0023 handle: Item {
0024 implicitWidth: {
0025 if (fallbackHandle.visible) {
0026 return height;
0027 }
0028
0029 return switchSvg.hasElement("hint-handle-size") ? switchSvg.elementSize("hint-handle-size").width : themeHandleItem.width;
0030 }
0031 implicitHeight: {
0032 if (fallbackHandle.visible) {
0033 return theme.mSize(theme.defaultFont).height
0034 }
0035
0036 return switchSvg.hasElement("hint-handle-size") ? switchSvg.elementSize("hint-handle-size").height : themeHandleItem.height
0037 }
0038
0039 Item {
0040 id: fallbackHandle
0041 anchors.fill: parent
0042 visible: !themeHandleItem.visible
0043
0044 PlasmaCore.FrameSvgItem {
0045 anchors.fill: parent
0046 opacity: control.enabled ? 1.0 : 0.6
0047 imagePath: "widgets/button"
0048 prefix: "shadow"
0049 }
0050
0051 PlasmaCore.FrameSvgItem {
0052 id: button
0053 anchors.fill: parent
0054 imagePath: "widgets/button"
0055 prefix: "normal"
0056 }
0057 }
0058
0059 PlasmaCore.SvgItem {
0060 id: themeHandleShadow
0061 anchors.fill: themeHandleItem
0062 opacity: control.enabled ? 1.0 : 0.6
0063 svg: switchSvg
0064 elementId: control.activeFocus ? "handle-focus" : (control.hovered ? "handle-hover" : "handle-shadow")
0065 visible: styleRoot.themeHasSwitch
0066 }
0067
0068 PlasmaCore.SvgItem {
0069 id: themeHandleItem
0070 anchors.centerIn: parent
0071 width: naturalSize.width
0072 height: naturalSize.height
0073 svg: switchSvg
0074 elementId: "handle"
0075 visible: styleRoot.themeHasSwitch
0076 }
0077 }
0078
0079 groove: Item {
0080 width: theme.mSize(theme.defaultFont).height * 2
0081 height: themeGroove.visible ? themeGrooveItem.implicitHeight : theme.mSize(theme.defaultFont).height
0082
0083 Item{
0084 id: fallbackGroove
0085 anchors.fill: parent
0086 visible: !themeGroove.visible
0087
0088 PlasmaCore.FrameSvgItem {
0089 id: fallbackGrooveItem
0090 anchors.fill: parent
0091 imagePath: "widgets/slider"
0092 prefix: "groove"
0093 opacity: control.checked ? 0 : 1
0094 colorGroup: PlasmaCore.ColorScope.colorGroup
0095 visible: opacity > 0
0096
0097 Behavior on opacity {
0098 PropertyAnimation { duration: units.shortDuration * 2 }
0099 }
0100 }
0101
0102 PlasmaCore.FrameSvgItem {
0103 id: fallbackHighlight
0104 anchors.fill: fallbackGrooveItem
0105 imagePath: "widgets/slider"
0106 prefix: "groove-highlight"
0107 opacity: control.checked ? 1 : 0
0108 colorGroup: PlasmaCore.ColorScope.colorGroup
0109 visible: opacity > 0
0110
0111 Behavior on opacity {
0112 PropertyAnimation { duration: units.shortDuration * 2 }
0113 }
0114 }
0115 }
0116
0117 Item {
0118 id: themeGroove
0119 anchors.fill: parent
0120 visible: styleRoot.themeHasSwitch
0121
0122 PlasmaCore.FrameSvgItem {
0123 id: themeGrooveItem
0124 anchors.fill: parent
0125 imagePath: "widgets/switch"
0126 prefix: "groove"
0127 opacity: control.checked ? 0 : 1
0128 colorGroup: PlasmaCore.ColorScope.colorGroup
0129 visible: opacity > 0
0130
0131 Component.onCompleted: styleRoot.themeHasSwitch = fromCurrentTheme;
0132 onFromCurrentThemeChanged: styleRoot.themeHasSwitch = fromCurrentTheme;
0133
0134 Behavior on opacity {
0135 PropertyAnimation { duration: units.shortDuration * 2 }
0136 }
0137 }
0138
0139 PlasmaCore.FrameSvgItem {
0140 id: themeGrooveHighlight
0141 anchors.fill: parent
0142 imagePath: "widgets/switch"
0143 prefix: "groove-highlight"
0144 opacity: control.checked ? 1 : 0
0145 colorGroup: PlasmaCore.ColorScope.colorGroup
0146 visible: opacity > 0
0147
0148 Behavior on opacity {
0149 PropertyAnimation { duration: units.shortDuration * 2 }
0150 }
0151 }
0152 }
0153 }
0154 }