on 551c708 help sign in
unity8/plugins/Unity/Indicators/qml/StandardMenuItem.qml
71 lines 2.0 kB history raw
1/*
2 * Copyright 2013 Canonical Ltd.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser 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 Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Authors:
17 * Nick Dedekind <nick.dedekind@canonical.com>
18 */
20import QtQuick 2.0
21import Ubuntu.Components 0.1 as Components
22import Unity.Indicators 0.1 as Indicators
24FramedMenuItem {
25 id: menuItem
27 property bool checkable: false
28 property bool checked: false
30 signal activate()
32 // FIXME : need a radio button from sdk
33 // https://bugs.launchpad.net/ubuntu-ui-toolkit/+bug/1211866
34 onCheckableChanged: {
35 if (checkable) {
36 icon = checkComponent.createObject(menuItem);
37 }
38 }
40 onCheckedChanged: {
41 // Can't rely on binding. Checked is assigned on click.
42 if (icon) {
43 icon.checked = checked;
44 }
45 }
47 onClicked: {
48 if (checkable && icon) {
49 icon.clicked();
50 } else {
51 menuItem.activate();
52 }
53 }
55 property var checkComponent: Component {
56 Components.CheckBox {
57 anchors.verticalCenter: parent.verticalCenter
58 anchors.left: parent.left
60 Component.onCompleted: {
61 checked = menuItem.checked;
62 }
64 // FIXME : should use Checkbox.toggled signal
65 // lp:~nick-dedekind/ubuntu-ui-toolkit/checkbox.toggled
66 onClicked: {
67 menuItem.activate();
68 }
69 }
70 }