initial import
[meego-ux:meego-app-satk.git] / StkMenu.qml
1 /*
2  * satk - SIM application toolkit
3  * Copyright © 2011, Intel Corporation.
4  *
5  * This program is licensed under the terms and conditions of the
6  * Apache License, version 2.0.  The full text of the Apache License is at
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Written by - Luc Yriarte <luc.yriarte@linux.intel.com>
10  */
11
12
13 /*!
14     \file StkMenu.qml
15     \section StkMenu
16     \brief Menu list view.
17
18     \subsection Signals
19     \li itemSelected(int selection)
20     \li goBack()
21     \li endSession()
22
23     \subsection Objects
24     - \b menuView : Menu list view.
25       - Signals
26         - itemSelected(int selection)
27       - Properties
28         - menuModel
29       - Delegate roles
30         - title
31         - icon
32 */
33
34 import Qt 4.7
35 import MeeGo.Components 0.1
36
37 Rectangle {
38     id: view
39     objectName: "view"
40
41     width: stkTheme.viewWidth
42     height: stkTheme.viewHeight
43
44     Theme { id: theme }
45     StkTheming { id: stkTheme }
46     color: stkTheme.viewBackgroundColor
47
48     signal itemSelected(int selection)
49     onItemSelected: console.log("Item selected: " + selection)
50     signal goBack()
51     onGoBack: console.log("Go back")
52     signal endSession()
53     onEndSession: console.log("End session")
54
55     ListView {
56         id: menuView
57         objectName: "menuView"
58         model: menuModel
59         delegate: menuDelegate
60         highlight: Rectangle {
61             color: theme.fontColorHighlight
62             width: menuView.width
63         }
64         highlightFollowsCurrentItem: true
65         anchors.top: icon.bottom
66         anchors.topMargin: 10
67         anchors.left: parent.left
68         anchors.leftMargin: 10
69         anchors.bottom: parent.bottom
70         anchors.bottomMargin: 10
71         anchors.right: parent.right
72         anchors.rightMargin: 10
73         signal itemSelected(int selection)
74         onItemSelected: {
75             currentIndex = selection;
76             view.itemSelected(selection)
77         }
78     }
79
80     Component {
81         id: menuDelegate
82         Row {
83             spacing: 10
84             Image {
85                 width: 32
86                 height: 32
87                 anchors.verticalCenter: parent.verticalCenter
88                 source: icon
89                 MouseArea {
90                     anchors.fill: parent
91                     onClicked: menuView.itemSelected(index)
92                 }
93             }
94             Text {
95                 height: 48
96                 verticalAlignment: Text.AlignVCenter
97                 color: stkTheme.menuItemFontColor
98                 font.pixelSize: stkTheme.menuItemFontPixelSize
99                 text: title
100                 MouseArea {
101                     width: menuView.width
102                     anchors.top: parent.top
103                     anchors.left: parent.left
104                     anchors.bottom: parent.bottom
105                     onClicked: menuView.itemSelected(index)
106                 }
107             }
108         }
109     }
110
111     StkPanel {
112         id: panel
113         objectName: "panel"
114         anchors.right: parent.right
115         anchors.bottom: parent.bottom
116         onGoBack: view.goBack();
117         onEndSession: view.endSession();
118     }
119
120     Label {
121         id: title
122         objectName: "title"
123         text: "SIM Application Toolkit"
124         anchors.top: parent.top
125         anchors.topMargin: 10
126         anchors.left: icon.right
127         anchors.leftMargin: 10
128         anchors.right: parent.right
129         anchors.rightMargin: 10
130         wrapMode: Text.WordWrap
131         color: stkTheme.titleFontColor
132         font.pixelSize: stkTheme.titleFontPixelSize
133     }
134
135     Image {
136         id: icon
137         objectName: "icon"
138         width: 64
139         height: 64
140         anchors.top: parent.top
141         anchors.topMargin: 10
142         anchors.left: parent.left
143         anchors.leftMargin: 10
144     }
145
146 }
147
148
149