summaryrefslogtreecommitdiff
path: root/share/qtcreator/qmldesigner/contentLibraryQmlSource/ContentLibraryTabButton.qml
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
            }
        }
    ]
}