add some comments
[makneto-zunavac1.git] / src / ui-mobile / declarative / ContactListPanel.qml
blob6572e01e4b930f663ab2234fa453040f9eb4ee3e
1 /*
2  *   Copyright (C) 2011 Lukáš Karas <lukas.karas@centrum.cz>
3  *
4  *   This program is free software; you can redistribute it and/or modify
5  *   it under the terms of the GNU General Public License as published by
6  *   the Free Software Foundation; either version 2 of the License, or
7  *   (at your option) any later version.
8  *
9  *   This program is distributed in the hope that it will be useful,
10  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
11  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  *   GNU General Public License for more details.
13  *
14  *   You should have received a copy of the GNU General Public License
15  *   along with this program; if not, write to the
16  *   Free Software Foundation, Inc.,
17  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
18  */
20 import Qt 4.7
21 import QtQuick 1.0
22 import org.makneto 0.1 as Makneto
23 import "components"
25 TopPanel {
26   id: contactListPanel
28   property variant _model: ListModel {}
31   function log(msg){
32       console.log("II [ContatListPanel.qml]: "+msg);
33   }
34   function error(msg){
35       console.log("EE [ContatListPanel.qml]: "+msg);
36   }
37   function warn(msg){
38       console.log("WW [ContatListPanel.qml]: "+msg);
39   }
40   function onContactsModelChanged(model){
41       _model = model;
42   }
43   function changeTextFilter(text){
44       //log("contact filter: "+text);
45       backGroundText.text = (text.length > 0)?"": backGroundText.defaultText;
46       _model.contactStringFilter = text;
47       // TODO: return filtered contacts as array
48       return [];
49   }
51   Component.onCompleted: {
52       //main.addContactsModelListener( contactListPanel );
53       main.contactsModelChanged.connect(onContactsModelChanged);
54     }
56   SystemPalette{ id: syspal }
58   Rectangle{
59       id: topPanel
60       anchors{top: parent.top; left: parent.left; right: parent.right}
61       height: parent.height
62       color: "transparent"
64       GlobalStatus{
65           id: accountManager
66           BorderImage { source: "img/lineedit.sci"; anchors.fill: parent; opacity: .5 }
68           anchors.top: parent.top
69           anchors.right: parent.right;
70           anchors.bottom: parent.bottom
71           anchors.left: filterText.right
72           anchors.leftMargin: 20
73           anchors.topMargin: 2
74           anchors.bottomMargin: 5
75           height: parent.height
76       }
79       Rectangle{
80           id: filterText
81           anchors{ verticalCenter: parent.verticalCenter; horizontalCenter: parent.horizontalCenter}
82           width: (parent.width * 0.3)
83           height: (parent.height - 10)
84           BorderImage { source: "img/lineedit.sci"; anchors.fill: parent }
85           color: "transparent"
87           TextInput{
88               id: editor
89               anchors {
90                   left: parent.left; right: parent.right; leftMargin: 10; rightMargin: 10
91                   verticalCenter: parent.verticalCenter
92               }
93               cursorVisible: true; font.bold: true
94               color:  main.useSyspal? syspal.windowText :"white"
95               selectionColor: "gray"
97               Keys.onReleased: {
98                   var items = changeTextFilter(editor.text);
99                   if (items.length == 1 && contactsFlickable.interactive && event.key == Qt.Key_Return){
100                       log("show enter contact details ");
101                       //items[0].component.state = "detail"
102                   }
103               }
104               focus: true
105           }
107           Keys.forwardTo: [ (editor)]
109           Text {
110               id: backGroundText
111               text: defaultText
112               property string defaultText: "Search contact..."
114               color:  main.useSyspal? syspal.highlightedText :"white"
115               anchors{verticalCenter: parent.verticalCenter; left: parent.left; leftMargin: 10}
116               opacity: 0.2
117               font.italic: true
118               font.bold: false
119               style: Text.Raised; styleColor:  main.useSyspal? syspal.highlightedText :"white"
120           }
122       }
124       Rectangle{
125           id: checkBoxWrapper
126           //border{ color: "white"; width: 1 }
127           width: showOfflineCheckBox.width + checkBoxText.width + 10
128           height: 20
129           color: "transparent"
130           anchors.verticalCenter: filterText.verticalCenter
131           anchors.left: parent.left
132           anchors.leftMargin: 10
134           CheckBox {
135               id: showOfflineCheckBox
136               height: parent.height
137               width: height
138               checked: true
139               anchors.left: parent.left
140               onCheckedChanged: (contactListPanel._model.hideOffline !== undefined)? contactListPanel._model.hideOffline = !checked: 0
141           }
142           Text {
143               id: checkBoxText
144               text: "Show offline contacts"
145               anchors.right: parent.right
146               anchors.verticalCenter: parent.verticalCenter
147               color:  main.useSyspal? syspal.highlightedText :"white"
148           }
149           MouseArea{
150               anchors.fill: parent
151               onClicked: showOfflineCheckBox.checked = !showOfflineCheckBox.checked
152           }
153       }
154   }