Unity 8
 All Classes Functions
CardAttributes.qml
1 /*
2  * Copyright 2014 Canonical Ltd.
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU 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 General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  */
16 
17 import QtQuick 2.2
18 import QtQuick.Layouts 1.1
19 import Ubuntu.Components 1.1
20 import Ubuntu.Settings.Components 0.1
21 
22 GridLayout {
23  id: grid
24  anchors {
25  left: parent.left;
26  right: parent.right;
27  }
28  columns: 2 + repeater.count % 2
29  rowSpacing: units.gu(.5)
30  property alias model: repeater.model
31  property color color: Theme.palette.normal.baseText
32  property real fontScale: 1.0
33 
34  Repeater {
35  id: repeater
36  delegate: Row {
37  spacing: units.gu(0.5)
38  readonly property int column: index % grid.columns;
39  Layout.alignment: {
40  if (column == 0) return Qt.AlignLeft;
41  if (column == grid.columns - 1 || index == repeater.count - 1) return Qt.AlignRight;
42  if (column == 1) return Qt.AlignHCenter;
43  }
44  Layout.column: index % grid.columns
45  Layout.row: index / grid.columns
46  Layout.columnSpan: index == repeater.count - 1 && grid.columns == 3 && column == 1 ? 2 : 1
47  Layout.maximumWidth: Math.max(icon.width, label.x + label.implicitWidth)
48  Layout.fillWidth: true
49  height: units.gu(2)
50  StatusIcon {
51  id: icon
52  height: units.gu(2)
53  sets: ["actions", "status", "apps"]
54  source: "icon" in modelData && modelData["icon"] || ""
55  color: grid.color
56  }
57  Label {
58  id: label
59  width: parent.width - x
60  anchors.verticalCenter: parent.verticalCenter
61  text: "value" in modelData && modelData["value"] || "";
62  elide: Text.ElideRight
63  maximumLineCount: 1
64  font.weight: "style" in modelData && modelData["style"] === "highlighted" ? Font.Bold : Font.Light
65  fontSize: "small"
66  font.pixelSize: Math.round(FontUtils.sizeToPixels(fontSize) * fontScale)
67  color: grid.color
68  }
69  }
70  }
71 }