blob: 587f846a10b7b4888ebad01c2fba8eb979558181 (
plain)
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
|
// Copyright (C) 2022 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import HelperWidgets 2.0 as HelperWidgets
import StudioControls 1.0 as StudioControls
import StudioTheme 1.0 as StudioTheme
Rectangle {
id: root
signal clicked()
property alias icon: button.buttonIcon
property alias name: label.text
property bool selected: false
height: button.height
width: button.width + label.width + contentRow.spacing + 6
color: StudioTheme.Values.themeToolbarBackground
radius: StudioTheme.Values.smallRadius
state: "default"
Row {
id: contentRow
spacing: 6
HelperWidgets.AbstractButton {
id: button
style: StudioTheme.Values.viewBarButtonStyle
buttonIcon: StudioTheme.Constants.material_medium
hover: mouseArea.containsMouse
checked: root.selected
checkable: true
checkedInverted: true
autoExclusive: true
}
Text {
id: label
height: StudioTheme.Values.statusbarButtonStyle.controlSize.height
color: StudioTheme.Values.themeTextColor
text: qsTr("Materials")
font.pixelSize: StudioTheme.Values.baseFontSize
horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
elide: Text.ElideRight
}
}
MouseArea {
id: mouseArea
anchors.fill: parent
hoverEnabled: true
onClicked: root.clicked()
}
states: [
State {
name: "default"
when: !mouseArea.containsMouse && !button.checked
},
State {
name: "hover"
when: mouseArea.containsMouse && !button.checked
PropertyChanges {
target: root
color: StudioTheme.Values.themeControlBackground_topToolbarHover
}
},
State {
name: "checked"
when: !mouseArea.containsMouse && button.checked
PropertyChanges {
target: root
color: StudioTheme.Values.themeInteraction
}
PropertyChanges {
target: label
color: StudioTheme.Values.themeTextSelectedTextColor
}
},
State {
name: "hoverChecked"
when: mouseArea.containsMouse && button.checked
PropertyChanges {
target: root
color: StudioTheme.Values.themeInteractionHover
}
PropertyChanges {
target: label
color: StudioTheme.Values.themeTextSelectedTextColor
}
}
]
}
|