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