File: main.qml

package info (click to toggle)
qt6-declarative 6.9.1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 308,920 kB
  • sloc: cpp: 775,911; javascript: 514,247; xml: 10,855; python: 2,806; ansic: 2,253; java: 810; sh: 262; makefile: 41; php: 27
file content (219 lines) | stat: -rw-r--r-- 6,255 bytes parent folder | download | duplicates (2)
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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
// Copyright (C) 2022 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause

import QtQuick
import QtQuick.Window
import QtQuick.Controls
import QtQuick.Controls.Material

Rectangle {
    id: mainWindow

    // Multiplier for resolution independency
    readonly property real dp: 0.2 + Math.min(width, height) / 1200

    width: 1280
    height: 720
    visible: true
    color: "#404040"

    QtObject {
        id: settings
        property real settingsViewWidth: 100 + 150 * dp
        property int effectIndex: 0
        property int switchDuration: 1500
        property int itemSize: mainWindow.height * 0.6
    }

    Item {
        id: testItem1
        width: 1
        height: 1
    }

    Rectangle {
        id: testItem2
        anchors.fill: itemSwitcher
        color: "#d0d0d0"
        visible: false
        Image {
            anchors.fill: parent
            anchors.margins: 4
            source: "images/background.png"
        }
        Text {
            anchors.centerIn: parent
            font.pixelSize: 40 * dp
            horizontalAlignment: Text.AlignHCenter
            text: "This is the\nfirst item"
            color: "#ffffff"
            style: Text.Outline
            styleColor: "#202020"
        }
    }

    Rectangle {
        id: testItem3Content
        anchors.fill: itemSwitcher
        color: "white"
        border.width: 5
        visible: itemSwitcher.currentIndex === 2
        Text {
            anchors.centerIn: parent
            font.pixelSize: 48 * dp
            horizontalAlignment: Text.AlignHCenter
            text: "This is a\nDIFFERENT\nsecond item"
            rotation: slider.value * 360
        }
        Slider {
            id: slider
            anchors.top: parent.top
            anchors.topMargin: 20 * dp
            anchors.horizontalCenter: parent.horizontalCenter
            from: 0
            to: 1
            width: parent.width * 0.8
        }
        Button {
            anchors.bottom: parent.bottom
            anchors.bottomMargin: 20 * dp
            anchors.horizontalCenter: parent.horizontalCenter
            text: "Controls Button"
        }
    }
    ShaderEffectSource {
        // Wrap testItem3 into ShaderEffectSource so it doesn't need
        // visible = false and can be interactive.
        id: testItem3
        anchors.fill: testItem3Content
        sourceItem: testItem3Content
        hideSource: true
        visible: false
    }

    Image {
        id: testItem4
        source: "images/Built_with_Qt.png"
        anchors.fill: itemSwitcher
        visible: false
    }

    Image {
        id: testItem5
        source: "images/quit_coding.png"
        anchors.fill: itemSwitcher
        visible: false
    }

    Item {
        id: mainArea
        anchors.left: settingsView.right
        anchors.right: parent.right
        anchors.top: parent.top
        anchors.bottom: parent.bottom

        PagesView {
            id: pagesView
            anchors.horizontalCenter: parent.horizontalCenter
            anchors.top: parent.top
            anchors.topMargin: 20 * dp
            PagesItem {
                width: pagesView.itemSize
                height: pagesView.itemSize
                source: testItem1
                text: "(EMPTY)"
                selected: itemSwitcher.currentIndex === 0
                onClicked: {
                    itemSwitcher.currentIndex = 0;
                }
            }
            PagesItem {
                width: pagesView.itemSize
                height: pagesView.itemSize
                source: testItem2
                selected: itemSwitcher.currentIndex === 1
                onClicked: {
                    itemSwitcher.currentIndex = 1;
                }
            }
            PagesItem {
                width: pagesView.itemSize
                height: pagesView.itemSize
                source: testItem3
                selected: itemSwitcher.currentIndex === 2
                onClicked: {
                    itemSwitcher.currentIndex = 2;
                }
            }
            PagesItem {
                width: pagesView.itemSize
                height: pagesView.itemSize
                source: testItem4
                selected: itemSwitcher.currentIndex === 3
                onClicked: {
                    itemSwitcher.currentIndex = 3;
                }
            }
            PagesItem {
                width: pagesView.itemSize
                height: pagesView.itemSize
                source: testItem5
                selected: itemSwitcher.currentIndex === 4
                onClicked: {
                    itemSwitcher.currentIndex = 4;
                }
            }
        }
    }
    ItemSwitcher {
        id: itemSwitcher
        anchors.centerIn: mainArea
        anchors.verticalCenterOffset: pagesView.height / 2
        width: settings.itemSize
        height: settings.itemSize
        duration: settings.switchDuration
        Component.onCompleted: {
            // Add all switchable items into switcher
            sourceItems.push(testItem1);
            sourceItems.push(testItem2);
            sourceItems.push(testItem3);
            sourceItems.push(testItem4);
            sourceItems.push(testItem5);
            // From item is the currently selected one
            currentIndex = settings.effectIndex;
        }

        SwitchEffectBlinds {
            id: blindsEffect
            visible: settings.effectIndex == 0
            rotation: 45
        }
        SwitchEffectBlur {
            id: blurEffect
            visible: settings.effectIndex == 1
        }
        SwitchEffectHeart {
            id: heartEffect
            visible: settings.effectIndex == 2
        }
        SwitchEffectStars {
            id: starsEffect
            visible: settings.effectIndex == 3
        }
        SwitchEffectThunder {
            id: thunderEffect
            visible: settings.effectIndex == 4
        }
        SwitchEffect3DFlip {
            id: flipEffect
            visible: settings.effectIndex == 5
        }
    }

    SettingsView {
        id: settingsView
        anchors.top: parent.top
        anchors.bottom: parent.bottom
        anchors.margins: 20
    }
}