0.9.3-1 release
[ubi] / qml / ubi / PageStack.qml
1 import QtQuick 1.0
2
3 /* copyright (C) 2010-2012 Stuart Howarth */
4
5 Item {
6     id: root
7
8     property alias initialPage: initalPage.source
9     property Item currentPage: pageView.currentItem.item
10     property int index: pageView.currentIndex
11
12     function prevPage() {
13         return pageModel.children[pageView.currentIndex-1].item;
14     }
15
16     function push(item, immediate) {
17         var loader = pageModel.children[pageView.currentIndex + 1];
18         loader.source = item;
19         if (immediate) {
20             pageView.highlightMoveDuration = 0;
21         }
22         else {
23             pageView.highlightMoveDuration = 200;
24         }
25         pageView.incrementCurrentIndex();
26     }
27
28     function pop(immediate) {
29         var i = pageView.currentIndex;
30         if (immediate) {
31             pageView.highlightMoveDuration = 0;
32         }
33         else {
34             pageView.highlightMoveDuration = 300;
35         }
36         pageView.decrementCurrentIndex();
37         pageModel.children[i].source = "";
38         currentPage.taskMenu.close();
39     }
40
41     function clear(immediate) {
42         if (immediate) {
43             pageView.highlightMoveDuration = 0;
44         }
45         else {
46             pageView.highlightMoveDuration = 300;
47         }
48         pageView.currentIndex = 0;
49         for (var i = 1; i < pageModel.children.length; i++) {
50             pageModel.children[i].source = "";
51         }
52     }
53
54     function replace(item, immediate) {
55         root.pop(true);
56         root.push(item, immediate);
57     }
58
59     function dim() {
60         root.state = "dim";
61     }
62
63     function undim() {
64         root.state = "";
65     }
66
67     anchors.fill: parent
68
69     VisualItemModel {
70         id: pageModel
71
72         Loader {
73             id: initalPage
74
75             width: mainWindow.width
76             height: mainWindow.height
77             opacity: index == pageView.currentIndex ? 1 : 0
78         }
79
80         Loader {
81             width: mainWindow.width
82             height: mainWindow.height
83             opacity: index == pageView.currentIndex ? 1 : 0
84         }
85
86         Loader {
87             width: mainWindow.width
88             height: mainWindow.height
89             opacity: index == pageView.currentIndex ? 1 : 0
90         }
91
92         Loader {
93             width: mainWindow.width
94             height: mainWindow.height
95             opacity: index == pageView.currentIndex ? 1 : 0
96         }
97
98         Loader {
99             width: mainWindow.width
100             height: mainWindow.height
101             opacity: index == pageView.currentIndex ? 1 : 0
102         }
103
104         Loader {
105             width: mainWindow.width
106             height: mainWindow.height
107             opacity: index == pageView.currentIndex ? 1 : 0
108         }
109
110         Loader {
111             width: mainWindow.width
112             height: mainWindow.height
113             opacity: index == pageView.currentIndex ? 1 : 0
114         }
115
116         Loader {
117             width: mainWindow.width
118             height: mainWindow.height
119             opacity: index == pageView.currentIndex ? 1 : 0
120         }
121
122         Loader {
123             width: mainWindow.width
124             height: mainWindow.height
125             opacity: index == pageView.currentIndex ? 1 : 0
126         }
127
128         Loader {
129             width: mainWindow.width
130             height: mainWindow.height
131             opacity: index == pageView.currentIndex ? 1 : 0
132         }
133
134         Loader {
135             width: mainWindow.width
136             height: mainWindow.height
137             opacity: index == pageView.currentIndex ? 1 : 0
138         }
139
140         Loader {
141             width: mainWindow.width
142             height: mainWindow.height
143             opacity: index == pageView.currentIndex ? 1 : 0
144         }
145
146         Loader {
147             width: mainWindow.width
148             height: mainWindow.height
149             opacity: index == pageView.currentIndex ? 1 : 0
150         }
151
152         Loader {
153             width: mainWindow.width
154             height: mainWindow.height
155             opacity: index == pageView.currentIndex ? 1 : 0
156         }
157
158         Loader {
159             width: mainWindow.width
160             height: mainWindow.height
161             opacity: index == pageView.currentIndex ? 1 : 0
162         }
163
164         Loader {
165             width: mainWindow.width
166             height: mainWindow.height
167             opacity: index == pageView.currentIndex ? 1 : 0
168         }
169
170         Loader {
171             width: mainWindow.width
172             height: mainWindow.height
173             opacity: index == pageView.currentIndex ? 1 : 0
174         }
175
176         Loader {
177             width: mainWindow.width
178             height: mainWindow.height
179             opacity: index == pageView.currentIndex ? 1 : 0
180         }
181
182         Loader {
183             width: mainWindow.width
184             height: mainWindow.height
185             opacity: index == pageView.currentIndex ? 1 : 0
186         }
187
188         Loader {
189             width: mainWindow.width
190             height: mainWindow.height
191             opacity: index == pageView.currentIndex ? 1 : 0
192         }
193
194         Loader {
195             width: mainWindow.width
196             height: mainWindow.height
197             opacity: index == pageView.currentIndex ? 1 : 0
198         }
199
200         Loader {
201             width: mainWindow.width
202             height: mainWindow.height
203             opacity: index == pageView.currentIndex ? 1 : 0
204         }
205
206         Loader {
207             width: mainWindow.width
208             height: mainWindow.height
209             opacity: index == pageView.currentIndex ? 1 : 0
210         }
211
212         Loader {
213             width: mainWindow.width
214             height: mainWindow.height
215             opacity: index == pageView.currentIndex ? 1 : 0
216         }
217
218         Loader {
219             width: mainWindow.width
220             height: mainWindow.height
221             opacity: index == pageView.currentIndex ? 1 : 0
222         }
223
224         Loader {
225             width: mainWindow.width
226             height: mainWindow.height
227             opacity: index == pageView.currentIndex ? 1 : 0
228         }
229
230         Loader {
231             width: mainWindow.width
232             height: mainWindow.height
233             opacity: index == pageView.currentIndex ? 1 : 0
234         }
235
236         Loader {
237             width: mainWindow.width
238             height: mainWindow.height
239             opacity: index == pageView.currentIndex ? 1 : 0
240         }
241
242         Loader {
243             width: mainWindow.width
244             height: mainWindow.height
245             opacity: index == pageView.currentIndex ? 1 : 0
246         }
247
248         Loader {
249             width: mainWindow.width
250             height: mainWindow.height
251             opacity: index == pageView.currentIndex ? 1 : 0
252         }
253
254         Loader {
255             width: mainWindow.width
256             height: mainWindow.height
257             opacity: index == pageView.currentIndex ? 1 : 0
258         }
259     }
260
261     ListView {
262         id: pageView
263         anchors.fill: parent
264         model: pageModel
265         orientation: ListView.Horizontal
266         interactive: false
267         highlightMoveDuration: 100
268     }
269
270     states: State {
271         name: "dim"
272         PropertyChanges { target: root; opacity: 0.1 }
273     }
274
275     transitions: Transition {
276         PropertyAnimation { target: root; properties: "opacity"; duration: 300 }
277     }
278 }
279