Unity 8
PreviewTable.qml
1 /*
2  * Copyright (C) 2014,2015 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.4
18 import QtQuick.Layouts 1.1
19 import Ubuntu.Components 1.3
20 import "../../Components"
21 
22 /*! \brief Preview widget for table.
23 
24  This widget shows two columns contained in widgetData["values"]
25  as arrays of label,value along with a title that comes from widgetData["title"].
26 
27  In case the widget is collapsed it only shows 3 lines of values.
28  */
29 
30 PreviewWidget {
31  id: root
32  implicitHeight: column.implicitHeight
33 
34  readonly property int maximumCollapsedRowCount: 3
35 
36  Column {
37  id: column
38  objectName: "column"
39  spacing: units.gu(1)
40  width: parent.width
41 
42  Label {
43  id: titleLabel
44  objectName: "titleLabel"
45  anchors {
46  left: parent.left
47  right: parent.right
48  }
49  height: visible ? implicitHeight : 0
50  fontSize: "large"
51  color: root.scopeStyle ? root.scopeStyle.foreground : theme.palette.normal.baseText
52  visible: text !== ""
53  opacity: .8
54  text: widgetData["title"] || ""
55  elide: Text.ElideRight
56  }
57 
58  GridLayout {
59  objectName: "gridLayout"
60  columns: 2
61  columnSpacing: units.gu(2)
62  Repeater {
63  id: rowsRepeater
64  model: widgetData["values"]
65 
66  delegate: Repeater {
67  id: perRowRepeater
68  readonly property int rowIndex: index
69  model: widgetData["values"][index]
70  delegate: Label {
71  objectName: "label"+rowIndex+index
72  fontSize: "small"
73  text: perRowRepeater.model[index]
74  visible: root.expanded || rowIndex < maximumCollapsedRowCount
75  color: root.scopeStyle ? root.scopeStyle.foreground : theme.palette.normal.baseText
76  font.bold: index == 0
77  wrapMode: Text.Wrap
78  Layout.alignment: Qt.AlignTop
79  Layout.maximumWidth: column.width - x
80  }
81  }
82  }
83  }
84  }
85 }