Warning, /plasma-mobile/plasma-settings/src/qml/SidebarButton.qml is written in an unsupported language. File is not indexed.

0001 /*
0002  * SPDX-FileCopyrightText: 2021 Devin Lin <espidev@gmail.com>
0003  *
0004  * SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 import QtQuick 2.15
0008 import QtQuick.Controls 2.15 as Controls
0009 import QtQuick.Layouts 1.15
0010 import org.kde.kirigami 2.12 as Kirigami
0011 
0012 Controls.AbstractButton {
0013     id: button
0014     
0015     readonly property color baseColor: Kirigami.Theme.highlightColor
0016     readonly property color pressedColor: Qt.rgba(baseColor.r, baseColor.g, baseColor.b, 0.3)
0017     readonly property color hoverSelectColor: Qt.rgba(baseColor.r, baseColor.g, baseColor.b, 0.2)
0018     readonly property color checkedBorderColor: Qt.rgba(baseColor.r, baseColor.g, baseColor.b, 0.7)
0019     readonly property color pressedBorderColor: Qt.rgba(baseColor.r, baseColor.g, baseColor.b, 0.9)
0020     
0021     background: Rectangle {
0022         radius: Kirigami.Units.smallSpacing
0023         Kirigami.Theme.colorSet: Kirigami.Theme.Button
0024         Kirigami.Theme.inherit: false
0025         
0026         color: button.pressed ? pressedColor : (button.checked || (hoverHandler.hovered && !Kirigami.Settings.tabletMode) ? hoverSelectColor : "transparent")
0027 
0028         border.color: button.checked ? checkedBorderColor : (button.pressed ? pressedBorderColor : color)
0029         border.width: 1
0030 
0031         Behavior on color { ColorAnimation { duration: Kirigami.Units.shortDuration } }
0032         Behavior on border.color { ColorAnimation { duration: Kirigami.Units.shortDuration } }
0033         
0034         HoverHandler {
0035             id: hoverHandler
0036         }
0037     }
0038     
0039     contentItem: RowLayout {
0040         spacing: Kirigami.Units.gridUnit
0041         
0042         Kirigami.Icon {
0043             Layout.leftMargin: Kirigami.Units.gridUnit
0044             implicitHeight: Kirigami.Units.iconSizes.smallMedium
0045             implicitWidth: Kirigami.Units.iconSizes.smallMedium
0046             Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
0047             source: button.icon.name ? button.icon.name : "question"
0048         }
0049         
0050         Controls.Label {
0051             id: label
0052             Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
0053             text: button.text
0054             opacity: button.display !== Controls.AbstractButton.TextOnly ? 1 : 0
0055             
0056             Behavior on opacity {
0057                 NumberAnimation {
0058                     duration: Kirigami.Units.longDuration 
0059                     easing.type: Easing.InOutQuad
0060                 } 
0061             }
0062         }
0063         
0064         Item { Layout.fillWidth: true }
0065     }
0066 }