1/****************************************************************************
2**
3** Copyright (C) 2016 The Qt Company Ltd.
4** Contact: https://www.qt.io/licensing/
5**
6** This file is part of the Qt Charts module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:GPL$
9** Commercial License Usage
10** Licensees holding valid commercial Qt licenses may use this file in
11** accordance with the commercial license agreement provided with the
12** Software or, alternatively, in accordance with the terms contained in
13** a written agreement between you and The Qt Company. For licensing terms
14** and conditions see https://www.qt.io/terms-conditions. For further
15** information use the contact form at https://www.qt.io/contact-us.
16**
17** GNU General Public License Usage
18** Alternatively, this file may be used under the terms of the GNU
19** General Public License version 3 or (at your option) any later version
20** approved by the KDE Free Qt Foundation. The licenses are as published by
21** the Free Software Foundation and appearing in the file LICENSE.GPL3
22** included in the packaging of this file. Please review the following
23** information to ensure the GNU General Public License requirements will
24** be met: https://www.gnu.org/licenses/gpl-3.0.html.
25**
26** $QT_END_LICENSE$
27**
28****************************************************************************/
29
30import QtQuick 2.0
31
32Item {
33    width: 440
34    height: 330
35    property bool sourceLoaded: false
36
37    ListView {
38        id: root
39        focus: true
40        anchors.fill: parent
41        snapMode: ListView.SnapOneItem
42        highlightRangeMode: ListView.StrictlyEnforceRange
43        highlightMoveDuration: 250
44        orientation: ListView.Horizontal
45        boundsBehavior: Flickable.StopAtBounds
46
47        onCurrentIndexChanged: {
48            if (infoText.opacity > 0.0) {
49                if (sourceLoaded)
50                    infoText.opacity = 0.0;
51                else if (currentIndex != 0)
52                    currentIndex = 0;
53            }
54        }
55
56        model: ListModel {
57            ListElement {component: "View1.qml"}
58            ListElement {component: "View2.qml"}
59            ListElement {component: "View3.qml"}
60        }
61
62        delegate: Loader {
63            width: root.width
64            height: root.height
65
66            source: component
67            asynchronous: true
68
69            onLoaded: sourceLoaded = true
70        }
71    }
72
73    Rectangle {
74        id: infoText
75        anchors.centerIn: parent
76        width: parent.width
77        height: 40
78        color: "black"
79        Text {
80            color: "white"
81            anchors.centerIn: parent
82            text: "You can navigate between views using swipe or arrow keys"
83        }
84
85        Behavior on opacity {
86            NumberAnimation { duration: 400 }
87        }
88    }
89}
90