House keeping in QML resource dir
[opentodolist:opentodolist.git] / OpenTodoList / qml / OpenTodoList / controls / Button.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 Rectangle {
22     id: button
23
24     property alias label: label.text
25     property alias pressed: mouseArea.pressed
26     property alias containsMouse: mouseArea.containsMouse
27     property alias font: label.font
28     property color backgroundColor: colors.primary
29     property color highlightColor: colors.primaryLighter1
30     property bool down: false
31     property int padding: 5
32     property bool autoSize: true
33     
34     signal clicked
35
36     height: label.height + 2 * padding
37     width: label.width + 4 * padding
38     color: backgroundColor
39
40     Behavior on color {
41         ColorAnimation { duration: 200 }
42     }
43
44     
45     Text {
46         id: label
47         text: "Button"
48         color: colors.fontColorFor( button.color )
49         x: button.autoSize ?  ( button.width - width ) / 2 : button.padding * 2
50         y: button.padding
51         font.pointSize: fonts.p
52     }
53     
54     MouseArea {
55         anchors.fill: parent
56         id: mouseArea
57         hoverEnabled: true
58
59         onClicked: button.clicked()
60     }
61     
62     states: [
63         State {
64             name: "down"
65             when: pressed || ( containsMouse && !layout.disableHover ) || button.down
66             PropertyChanges {
67                 target: button
68                 color: button.highlightColor
69             }
70         }
71     ]
72     
73 }