Some changes for better touch support and scripts
[opentodolist:opentodolist.git] / OpenTodoList / qml / OpenTodoList / TodoListContents.qml
1 /*
2  *  OpenTodoListDesktopQml - Desktop QML frontend for OpenTodoList
3  *  Copyright (C) 2013  Martin Höher <martin@rpdev.net>
4  *
5  *  This program is free software: you can redistribute it and/or modify
6  *  it under the terms of the GNU General Public License as published by
7  *  the Free Software Foundation, either version 3 of the License, or
8  *  (at your option) any later version.
9  *
10  *  This program is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  *  GNU General Public License for more details.
14  *
15  *  You should have received a copy of the GNU General Public License
16  *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
17  */
18
19 import QtQuick 2.0
20
21 Item {
22     id: todoListContents
23
24     clip: true
25
26     property alias filterText: filterText.text
27
28     signal todoSelected(QtObject todo)
29
30     Column {
31         id: controlsColumns
32         spacing: 5
33         height: childrenRect.height
34
35         Item {
36             height: todoListView.currentList ? Math.max( newTodoTitle.height, addNewTodoButton.height ) : 0
37             width: todoListContents.width
38             SimpleTextInput {
39                 id: newTodoTitle
40                 anchors { left: parent.left; right: parent.right; rightMargin: addNewTodoButton.width + 10 }
41                 text: ""
42                 placeholderText: "Add new todo"
43
44                 onApply: addNewTodoButton.createNewTodo()
45             }
46             Button {
47                 id: addNewTodoButton
48                 label: "\uf067"
49                 font.family: symbolFont.name
50
51                 anchors.right: parent.right
52
53                 onClicked: createNewTodo()
54
55                 function createNewTodo() {
56                     if ( newTodoTitle.text != "" ) {
57                         var todo = todoListView.currentList.addTodo();
58                         todo.title = newTodoTitle.text;
59                         newTodoTitle.text = "";
60                     }
61                 }
62             }
63             Behavior on height { SmoothedAnimation { velocity: 120 } }
64         }
65
66         Item {
67             id: filterItem
68             height: childrenRect.height
69             width: todoListContents.width
70             SimpleTextInput {
71                 id: filterText
72                 anchors { left: parent.left; right: parent.right }
73                 text: ""
74                 placeholderText: "Filter todos"
75
76                 onTextChanged: todoListView.filterText = text
77             }
78         }
79     }
80
81     TodoView {
82         width: todoListContents.width
83         anchors.top: controlsColumns.bottom
84         anchors.bottom: parent.bottom
85         model: todoListView.model
86
87         onTodoSelected: todoListContents.todoSelected(todo)
88     }
89 }