Warning, /utilities/kirogi/src/ui/components/TouchButton.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 * Copyright 2019 Eike Hein <hein@kde.org> 0003 * 0004 * This program is free software; you can redistribute it and/or 0005 * modify it under the terms of the GNU General Public License as 0006 * published by the Free Software Foundation; either version 2 of 0007 * the License or (at your option) version 3 or any later version 0008 * accepted by the membership of KDE e.V. (or its successor approved 0009 * by the membership of KDE e.V.), which shall act as a proxy 0010 * defined in Section 14 of version 3 of the license. 0011 * 0012 * This program is distributed in the hope that it will be useful, 0013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0015 * GNU General Public License for more details. 0016 * 0017 * You should have received a copy of the GNU General Public License 0018 * along with this program. If not, see <http://www.gnu.org/licenses/>. 0019 */ 0020 0021 import QtQuick 2.12 0022 import QtQuick.Window 2.12 0023 import QtQuick.Controls 2.12 as QQC2 0024 0025 import org.kde.kirigami 2.6 as Kirigami 0026 0027 Item { 0028 id: button 0029 0030 width: Math.max(Kirigami.Units.iconSizes.medium, fontMetrics.height) + Kirigami.Units.smallSpacing * 2 0031 height: width 0032 0033 signal tapped 0034 0035 property string iconColor: "white" 0036 property string toolTipText: "" 0037 0038 property alias background: blurredBackground.sourceItem 0039 property alias icon: icon.source 0040 property alias backgroundOpacity: plate.opacity 0041 property alias pressed: tapHandler.pressed 0042 property alias hovered: hoverHandler.hovered 0043 property alias containsMouse: hoverHandler.hovered 0044 0045 Kirigami.Theme.colorSet: Kirigami.Theme.Button 0046 0047 BlurredBackground { id: blurredBackground; mask: plate } 0048 0049 Rectangle { 0050 id: plate 0051 0052 anchors.fill: parent 0053 0054 radius: width / 2 0055 0056 color: "black" 0057 opacity: 0.31 0058 0059 Behavior on border.color { ColorAnimation { duration: Kirigami.Units.shortDuration } } 0060 } 0061 0062 Rectangle { 0063 id: border 0064 0065 anchors.fill: parent 0066 0067 radius: width / 2 0068 0069 color: "transparent" 0070 opacity: (button.containsMouse || button.pressed) ? 1.0 : 0.7 0071 0072 border.width: 2 0073 border.color: button.containsMouse ? Kirigami.Theme.hoverColor : (button.pressed ? Kirigami.Theme.highlightColor : "white") 0074 0075 Behavior on opacity { NumberAnimation { duration: Kirigami.Units.shortDuration } } 0076 Behavior on border.color { ColorAnimation { duration: Kirigami.Units.shortDuration } } 0077 } 0078 0079 Kirigami.Icon { 0080 id: icon 0081 0082 anchors.centerIn: parent 0083 0084 width: parent.height * 0.65 0085 height: width 0086 0087 color: button.containsMouse ? Kirigami.Theme.hoverColor : (button.pressed ? Kirigami.Theme.highlightColor : iconColor) 0088 smooth: true 0089 isMask: true 0090 0091 Behavior on color { ColorAnimation { duration: Kirigami.Units.shortDuration } } 0092 } 0093 0094 QQC2.ToolTip.visible: containsMouse && !tapHandler.pressed 0095 QQC2.ToolTip.delay: Kirigami.Units.toolTipDelay 0096 QQC2.ToolTip.text: toolTipText 0097 0098 HoverHandler { 0099 id: hoverHandler 0100 0101 enabled: !page.touched 0102 } 0103 0104 TapHandler { 0105 id: tapHandler 0106 0107 gesturePolicy: TapHandler.ReleaseWithinBounds 0108 0109 onTapped: button.tapped() 0110 } 0111 }