Unity 8
 All Classes Functions Properties
DefaultIndicatorWidget.qml
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  */
19 
20 import QtQuick 2.0
21 import Ubuntu.Components 0.1
22 import Unity.Indicators 0.1 as Indicators
23 
24 Indicators.IndicatorBase {
25  id: indicatorWidget
26 
27  property int iconSize: height
28  property alias leftLabel: itemLeftLabel.text
29  property alias rightLabel: itemRightLabel.text
30  property var icons: undefined
31 
32  width: itemRow.width
33  enabled: false
34 
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  }
44 
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  }
56 
57  Row {
58  width: childrenRect.width
59  anchors {
60  top: parent.top
61  bottom: parent.bottom
62  }
63 
64  Repeater {
65  model: indicatorWidget.icons
66 
67  Item {
68  width: guRoundUp(itemImage.width)
69  height: indicatorWidget.iconSize
70 
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
79 
80  sourceSize {
81  width: indicatorWidget.iconSize
82  height: indicatorWidget.iconSize
83  }
84  }
85  }
86  }
87  }
88 
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  }
101 
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);
109 
110  return mod == 0 ? width : width + (gu1 - mod);
111  }
112 
113  onRootActionStateChanged: {
114  if (rootActionState == undefined) {
115  leftLabel = "";
116  rightLabel = "";
117  icons = undefined;
118  enabled = false;
119  return;
120  }
121 
122  leftLabel = rootActionState.leftLabel ? rootActionState.leftLabel : "";
123  rightLabel = rootActionState.rightLabel ? rootActionState.rightLabel : "";
124  icons = rootActionState.icons;
125  enabled = rootActionState.visible;
126  }
127 }