Unity 8
CheckableSetting.qml
1 /*
2  * Copyright (C) 2014,2015 Canonical, Ltd.
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; version 3.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  */
16 
17 import QtQuick 2.4
18 import Ubuntu.Components 1.3
19 import Ubuntu.Components.ListItems 1.3 as ListItem
20 
21 ListItem.Empty {
22  id: listItem
23 
24  property alias text: label.text
25  property bool checked: false
26  property real leftMargin
27  property real rightMargin
28 
29  readonly property real labelOffset: label.x
30 
31  signal linkActivated(string link)
32 
33  implicitHeight: Math.max(label.height, checkBox.height)
34 
35  Item {
36  anchors.fill: parent
37 
38  CheckBox {
39  id: checkBox
40 
41  anchors {
42  left: parent.left
43  top: parent.top
44  leftMargin: listItem.leftMargin
45  }
46 
47  Component.onCompleted: {
48  checked = listItem.checked;
49  }
50 
51  onClicked: {
52  listItem.checked = checked
53  listItem.triggered(listItem.checked)
54  }
55 
56  Connections {
57  target: listItem
58  onCheckedChanged: checkBox.checked = listItem.checked
59  }
60 
61  Connections {
62  target: listItem.__mouseArea
63  onClicked: {
64  listItem.checked = !listItem.checked
65  listItem.triggered(listItem.checked)
66  }
67  }
68  }
69 
70  Label {
71  id: label
72  anchors {
73  left: checkBox.right
74  right: parent.right
75  verticalCenter: parent.verticalCenter
76  leftMargin: units.gu(2)
77  rightMargin: listItem.rightMargin
78  }
79  wrapMode: Text.Wrap
80  linkColor: theme.palette.normal.foregroundText
81  onLinkActivated: listItem.linkActivated(link)
82  }
83  }
84 }