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