Lomiri
Loading...
Searching...
No Matches
CheckableSetting.qml
1/*
2 * Copyright (C) 2014-2016 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
17import QtQuick 2.12
18import Lomiri.Components 1.3
19import Lomiri.Components.ListItems 1.3 as ListItem
20
21ListItem.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 highlightWhenPressed: false
35
36 FocusScope {
37 anchors.fill: parent
38 focus: true
39
40 CheckBox {
41 id: checkBox
42
43 anchors {
44 left: parent.left
45 top: parent.top
46 leftMargin: listItem.leftMargin
47 }
48
49 Component.onCompleted: {
50 checked = listItem.checked;
51 }
52
53 onClicked: {
54 listItem.checked = checked
55 listItem.triggered(listItem.checked)
56 }
57
58 Connections {
59 target: listItem
60 onCheckedChanged: checkBox.checked = listItem.checked
61 }
62
63 Connections {
64 target: listItem.__mouseArea
65 onClicked: {
66 listItem.checked = !listItem.checked
67 listItem.triggered(listItem.checked)
68 }
69 }
70 }
71
72 Label {
73 id: label
74 anchors {
75 left: checkBox.right
76 right: parent.right
77 verticalCenter: parent.verticalCenter
78 leftMargin: units.gu(2)
79 rightMargin: listItem.rightMargin
80 }
81 wrapMode: Text.Wrap
82 linkColor: LomiriColors.orange
83 color: textColor
84 font.weight: Font.Light
85 fontSize: "small"
86 lineHeight: 1.2
87 onLinkActivated: listItem.linkActivated(link)
88 }
89
90 Keys.onSpacePressed: checkBox.trigger()
91 }
92}