on bf4f7ea help sign in
unity8/Panel/Indicators/DefaultIndicatorWidget.qml
125 lines 3.8 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
22import Unity.Indicators 0.1 as Indicators
24Indicators.IndicatorWidget {
25 id: indicatorWidget
27 width: itemRow.width
29 property alias leftLabel: itemLeftLabel.text
30 property alias rightLabel: itemRightLabel.text
31 property var icons: undefined
33 Row {
34 id: itemRow
35 width: childrenRect.width
36 objectName: "itemRow"
37 anchors {
38 top: parent.top
39 bottom: parent.bottom
40 horizontalCenter: parent.horizontalCenter
41 }
43 Label {
44 id: itemLeftLabel
45 width: guRoundUp(implicitWidth)
46 objectName: "leftLabel"
47 color: Theme.palette.selected.backgroundText
48 opacity: 0.8
49 font.family: "Ubuntu"
50 fontSize: "medium"
51 anchors.verticalCenter: parent.verticalCenter
52 visible: text != ""
53 }
55 Row {
56 width: childrenRect.width
57 anchors {
58 top: parent.top
59 bottom: parent.bottom
60 }
62 Repeater {
63 model: indicatorWidget.icons
65 Item {
66 width: guRoundUp(itemImage.width)
67 height: indicatorWidget.iconSize
69 Image {
70 id: itemImage
71 objectName: "itemImage"
72 visible: source != ""
73 source: modelData
74 height: parent.height
75 anchors.horizontalCenter: parent.horizontalCenter
76 fillMode: Image.PreserveAspectFit
78 sourceSize {
79 width: indicatorWidget.iconSize
80 height: indicatorWidget.iconSize
81 }
82 }
83 }
84 }
85 }
87 Label {
88 id: itemRightLabel
89 width: guRoundUp(implicitWidth)
90 objectName: "rightLabel"
91 color: Theme.palette.selected.backgroundText
92 opacity: 0.8
93 font.family: "Ubuntu"
94 fontSize: "medium"
95 anchors.verticalCenter: parent.verticalCenter
96 visible: text != ""
97 }
98 }
100 // TODO: Use toolkit function https://bugs.launchpad.net/ubuntu-ui-toolkit/+bug/1242575
101 function guRoundUp(width) {
102 if (width == 0) {
103 return 0;
104 }
105 var gu1 = units.gu(1.0);
106 var mod = (width % gu1);
108 return mod == 0 ? width : width + (gu1 - mod);
109 }
111 onRootActionStateChanged: {
112 if (rootActionState == undefined) {
113 leftLabel = "";
114 rightLabel = "";
115 icons = undefined;
116 enabled = false;
117 return;
118 }
120 leftLabel = rootActionState.leftLabel ? rootActionState.leftLabel : "";
121 rightLabel = rootActionState.rightLabel ? rootActionState.rightLabel : "";
122 icons = rootActionState.icons;
123 enabled = rootActionState.visible;
124 }