Warning, /plasma/plasma-mobile/lookandfeel/contents/systemdialog/private/MobileSystemDialogButton.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: LGPL-2.0-or-later
0005  */
0006 
0007 import QtQuick 2.15
0008 import QtQuick.Controls 2.15
0009 import QtQuick.Layouts 1.15
0010 import QtQuick.Window 2.2
0011 import Qt5Compat.GraphicalEffects
0012 import org.kde.kirigami 2.18 as Kirigami
0013 
0014 AbstractButton {
0015     id: root
0016     
0017     property alias corners: background.corners
0018 
0019     property bool verticalSeparator: false
0020     property bool horizontalSeparator: false
0021 
0022     background: Kirigami.ShadowedRectangle {
0023         id: background
0024         Kirigami.Theme.colorSet: Kirigami.Theme.Button
0025         Kirigami.Theme.inherit: false
0026         color: {
0027             if (root.down) {
0028                 let avg = (Kirigami.Theme.backgroundColor.r + Kirigami.Theme.backgroundColor.g + Kirigami.Theme.backgroundColor.b) / 3;
0029                 // sample down
0030                 avg = Math.max(0, (avg - 0.8) * 5);
0031                 return Qt.darker(Kirigami.Theme.backgroundColor, 1.1 + 0.4 * (1 - avg));
0032             } else if (hoverHandler.hovered) {
0033                 return Qt.darker(Kirigami.Theme.backgroundColor, 1.05)
0034             } else {
0035                 return Kirigami.Theme.backgroundColor
0036             }
0037         }
0038 
0039         Kirigami.Separator {
0040             anchors.left: parent.left
0041             anchors.top: parent.top
0042             anchors.bottom: parent.bottom
0043             visible: root.verticalSeparator
0044         }
0045         Kirigami.Separator {
0046             anchors.left: parent.left
0047             anchors.right: parent.right
0048             anchors.top: parent.top
0049             visible: root.horizontalSeparator
0050         }
0051     }
0052     
0053     leftPadding: Kirigami.Units.largeSpacing
0054     rightPadding: Kirigami.Units.largeSpacing
0055     topPadding: Kirigami.Units.largeSpacing
0056     bottomPadding: Kirigami.Units.largeSpacing
0057     
0058     contentItem: Item {
0059         implicitHeight: row.height + Kirigami.Units.smallSpacing
0060         implicitWidth: row.implicitWidth
0061         RowLayout {
0062             id: row
0063             anchors.centerIn: parent
0064             spacing: 0
0065             
0066             Kirigami.Icon {
0067                 Layout.preferredHeight: label.height
0068                 Layout.preferredWidth: height
0069                 Layout.rightMargin: Kirigami.Units.smallSpacing
0070                 visible: root.icon.name
0071                 source: root.icon.name
0072             }
0073             Label {
0074                 id: label
0075                 text: root.text
0076             }
0077         }
0078         
0079         HoverHandler {
0080             id: hoverHandler
0081         }
0082     }
0083 }