summaryrefslogtreecommitdiff
path: root/share/qtcreator/qmldesigner/itemLibraryQmlSources/AddModuleView.qml
blob: 585c6a6d14c89071dd53ceb0dfa5795482c82771 (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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0

import QtQuick 2.15
import QtQuick.Controls 2.15
import QtQuickDesignerTheme 1.0
import HelperWidgets 2.0
import StudioTheme 1.0 as StudioTheme
import ItemLibraryBackend

Column {
    id: root

    spacing: 5

    signal back()

    Row {
        spacing: 5
        anchors.horizontalCenter: parent.horizontalCenter

        Button {
            anchors.verticalCenter: parent.verticalCenter
            text: "<"
            width: 25
            height: 25
            onClicked: back()
        }

        Text {
            text: qsTr("Select a Module to Add")
            color: StudioTheme.Values.themeTextColor
            font.pixelSize: 16
        }
    }

    ScrollView { // ListView not used because of QTBUG-52941
        id: listView
        width: parent.width
        height: parent.height - y
        clip: true

        Column {
            spacing: 2

            Repeater {
                model: ItemLibraryBackend.addModuleModel

                delegate: Rectangle {
                    id: itemBackground
                    width: listView.width
                    height: isSeparator ? 4 : 25
                    color: StudioTheme.Values.themeListItemBackground
                    visible: importVisible

                    Text {
                        id: itemText
                        text: importUrl
                        color: StudioTheme.Values.themeListItemText
                        anchors.verticalCenter: parent.verticalCenter
                        anchors.left: parent.left
                        anchors.right: parent.right
                        anchors.leftMargin: 10
                        anchors.rightMargin: 10
                    }

                    MouseArea {
                        id: mouseArea
                        anchors.fill: parent
                        hoverEnabled: true
                        onClicked: ItemLibraryBackend.rootView.handleAddImport(index)
                        enabled: !isSeparator
                    }

                    states: [
                        State {
                            name: "default"
                            when: !isSeparator && !mouseArea.containsMouse && !mouseArea.pressed
                            PropertyChanges {
                                target: itemBackground
                                color: StudioTheme.Values.themeListItemBackground
                            }
                            PropertyChanges {
                                target: itemText
                                color: StudioTheme.Values.themeListItemText
                            }
                        },
                        State {
                            name: "separator"
                            when: isSeparator
                            PropertyChanges {
                                target: itemBackground
                                color: StudioTheme.Values.themePanelBackground
                            }
                        },
                        State {
                            name: "hover"
                            when: !isSeparator && mouseArea.containsMouse && !mouseArea.containsPress
                            PropertyChanges {
                                target: itemBackground
                                color: StudioTheme.Values.themeListItemBackgroundHover
                            }
                            PropertyChanges {
                                target: itemText
                                color: StudioTheme.Values.themeListItemTextHover
                            }
                        },
                        State {
                            name: "press"
                            when: !isSeparator && mouseArea.containsPress
                            PropertyChanges {
                                target: itemBackground
                                color: StudioTheme.Values.themeListItemBackgroundPress
                            }
                            PropertyChanges {
                                target: itemText
                                color: StudioTheme.Values.themeListItemTextPress
                            }
                        }
                    ]
                }
            }
        }
    }
}