-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathBaseButton.qml
More file actions
117 lines (92 loc) · 2.5 KB
/
BaseButton.qml
File metadata and controls
117 lines (92 loc) · 2.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
// BaseButton.qml
import QtQuick
import QtQuick.Controls
import Quickshell
import Quickshell.Widgets
import qs.Services
import qs
AbstractButton {
id: button
property real fontSize: 11
property alias mouseAreaAlias: mouseArea
property alias backgroundAlias: rectangle
property alias textAlias: textItem
property bool buttonHovered: mouseArea.hovered
property bool buttonPressed: down
property bool transparent: false
property bool visuallyDisabled: false
property string tooltipText
contentItem: Text {
id: textItem
font.pointSize: button.fontSize
font.family: Config.style.font.value
color: Colors.text
topPadding: button.textTopPadding
bottomPadding: button.textBottomPadding
leftPadding: button.textLeftPadding
rightPadding: button.textRightPadding
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
Behavior on opacity {
PropertyAnimation {
duration: Colors.colorTransitionTime
}
}
text: button.text
}
property alias cursorShape: mouseArea.cursorShape
property real textTopPadding
property real textBottomPadding
property real textLeftPadding
property real textRightPadding
opacity: visuallyDisabled ? 0.5 : 1
HoverHandler {
id: mouseArea
blocking: false
cursorShape: visuallyDisabled ? Qt.ArrowCursor : Qt.PointingHandCursor
}
HoverPopup {
anchor.item: button
hovered: {
buttonHovered
// Make popup show only when mouse is stationary
//mouseArea.point.state == EventPoint.Stationary ? buttonHovered : false
}
text: button.tooltipText
}
property color pressedBackgroundColor: Colors.itemPressedBackground
property color hoveredBackgroundColor: Colors.itemHoveredBackground
property color backgroundColor: Colors.itemBackground
background: Rectangle {
id: rectangle
color: {
if (button.buttonPressed & !visuallyDisabled) {
pressedBackgroundColor
}
else if (button.buttonHovered & !visuallyDisabled) {
hoveredBackgroundColor
}
else {
backgroundColor
}
}
opacity: {
if (button.transparent & !button.buttonHovered & !button.buttonPressed || visuallyDisabled) {
0
} else {
1
}
}
Behavior on color {
PropertyAnimation {
duration: Colors.colorTransitionTime;
}
}
Behavior on opacity {
PropertyAnimation {
duration: Colors.colorTransitionTime;
}
}
radius: 10
}
}