Initial commit
[quicknewsreader] / qml / QuickNewsReader / main.qml
1 import QtQuick 1.0
2 import "content/view"
3 import "content/modelimpl"
4 import "content/modelitf"
5
6 Rectangle {
7     id: window
8     width: 800; height: 480
9
10     property int currentJournalIndex: 0
11     property int currentCategoryIndex: -1
12     property int currentNewsIndex: -1
13
14     property list<JournalModel> listJournalModel: [
15         LeMondeJournalModel{},
16         FavoriteFeedsJournalModel{},
17         YahooJournalModel{}
18     ]
19
20     ListModel {
21         id: journalList
22
23         ListElement {
24             journalName: 'Le Monde'
25             journalHierarchy: [
26                 // list of journals
27                 ListElement { component: "content/view/Journals.qml"; componentId: "journalsRect" },
28                 // list of categories for a given journal
29                 ListElement { component: "content/view/Categories.qml"; componentId: "categoriesRect" },
30                 // list of news for a given category
31                 ListElement { component: "content/view/News.qml"; componentId: "newsRect" },
32                 // Details for a given news
33                 ListElement { component: "content/view/NewsDetail.qml"; componentId: "newsDetailRect" }
34             ]
35         }
36         ListElement {
37             journalName: 'Favorite RSS'
38             journalHierarchy: [
39                 // list of journals
40                 ListElement { component: "content/view/Journals.qml"; componentId: "journalsRect" },
41                 // list of categories for a given journal
42                 ListElement { component: "content/view/Categories.qml"; componentId: "categoriesRect" },
43                 // list of news for a given category
44                 ListElement { component: "content/view/News.qml"; componentId: "newsRect" }
45             ]
46         }
47         ListElement {
48             journalName: 'Yahoo! News'
49             journalHierarchy: [
50                 // list of journals
51                 ListElement { component: "content/view/Journals.qml"; componentId: "journalsRect" },
52                 // list of categories for a given journal
53                 ListElement { component: "content/view/Categories.qml"; componentId: "categoriesRect" },
54                 // list of news for a given category
55                 ListElement { component: "content/view/News.qml"; componentId: "newsRect" }
56             ]
57         }
58     }
59
60     property variant currentJournal: listJournalModel[currentJournalIndex]
61     property bool loading: currentJournal.loading
62
63     ListView {
64         id: viewsList
65
66         anchors.fill: window
67         orientation: ListView.Horizontal
68         snapMode: ListView.SnapOneItem
69         flickDeceleration: 500
70
71         model: journalList.get(currentJournalIndex).journalHierarchy
72         delegate: Loader {
73             id: componentId
74             source: component
75         }
76     }
77
78     Component {
79         id: quitButtonDelegate
80         Item {
81             width: parent.width; height: 60
82             Text {
83                 text: "Quit"
84                 font { family: "Helvetica"; pixelSize: 16; bold: true }
85                 anchors {
86                     left: parent.left; leftMargin: 15
87                     verticalCenter: parent.verticalCenter
88                 }
89             }
90             MouseArea {
91                 anchors.fill: parent
92                 onClicked: Qt.quit()
93             }
94         }
95     }
96 }