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 Ubuntu.Settings.Components 0.1
23 import Unity.Indicators 0.1 as Indicators
24 
25 Indicators.IndicatorBase {
26  id: indicatorWidget
27 
28  property int iconSize: units.gu(2)
29  property alias leftLabel: itemLeftLabel.text
30  property alias rightLabel: itemRightLabel.text
31  property var icons: undefined
32 
33  width: itemRow.width
34  enabled: false
35 
36  Row {
37  id: itemRow
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: contentWidth + units.gu(1)
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  horizontalAlignment: Text.AlignHCenter
56  }
57 
58  Row {
59  anchors {
60  top: parent.top
61  bottom: parent.bottom
62  }
63 
64  Repeater {
65  model: indicatorWidget.icons
66 
67  Item {
68  width: itemImage.width + units.gu(1)
69  anchors { top: parent.top; bottom: parent.bottom }
70 
71  StatusIcon {
72  id: itemImage
73  height: indicatorWidget.iconSize
74  anchors.centerIn: parent
75  source: modelData
76  sets: ["status", "actions"]
77  color: "#CCCCCC"
78  }
79  }
80  }
81  }
82 
83  Label {
84  id: itemRightLabel
85  width: contentWidth + units.gu(1)
86  objectName: "rightLabel"
87  color: Theme.palette.selected.backgroundText
88  opacity: 0.8
89  font.family: "Ubuntu"
90  fontSize: "medium"
91  anchors.verticalCenter: parent.verticalCenter
92  visible: text != ""
93  horizontalAlignment: Text.AlignHCenter
94  }
95  }
96 
97  onRootActionStateChanged: {
98  if (rootActionState == undefined) {
99  leftLabel = "";
100  rightLabel = "";
101  icons = undefined;
102  enabled = false;
103  return;
104  }
105 
106  leftLabel = rootActionState.leftLabel ? rootActionState.leftLabel : "";
107  rightLabel = rootActionState.rightLabel ? rootActionState.rightLabel : "";
108  icons = rootActionState.icons;
109  enabled = rootActionState.visible;
110  }
111 }