Unity 8
PreviewRatingDisplay.qml
1 /*
2  * Copyright (C) 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.0
18 import Ubuntu.Components 0.1
19 import "../../Components"
20 
21 /*! \brief Preview widget for rating display.
22 
23  The widget can show a rating widget and a field showing a comment.
24  The icons used in the rating widget can be customised with
25  widgetData["rating-icon-empty"], widgetData["rating-icon-full"]
26  and widgetData["rating-icon-half"].
27 
28  This widget shows reviews contained in widgetData["reviews"], each of which should be of the form:
29 
30  \code{.json}
31  {
32  "rating": null,
33  "review": null,
34  "author": null
35  }
36  \endcode
37  */
38 
39 PreviewWidget {
40  id: root
41  height: childrenRect.height
42 
43  Column {
44  anchors { left: parent.left; right: parent.right; }
45  visible: reviewsRepeater.count > 0
46 
47  Repeater {
48  id: reviewsRepeater
49  objectName: "reviewsRepeater"
50  model: root.widgetData["reviews"]
51 
52  delegate: Column {
53  id: reviewItem
54  objectName: "reviewItem" + index
55  anchors { left: parent.left; right: parent.right;}
56  spacing: units.gu(1)
57 
58  Rating {
59  id: rating
60  objectName: "rating"
61  size: 5
62  value: modelData["rating"] || -1
63  visible: value >= 0
64  interactive: false
65 
66  property var urlIconEmpty: widgetData["rating-icon-empty"]
67  property var urlIconFull: widgetData["rating-icon-full"]
68  property var urlIconHalf: widgetData["rating-icon-half"]
69  }
70 
71  Label {
72  id: authorLabel
73  objectName: "authorLabel"
74  anchors { left: parent.left; right: parent.right }
75  color: scopeStyle ? scopeStyle.foreground : Theme.palette.normal.baseText
76  opacity: .8
77  text: modelData["author"] || ""
78  visible: text !== ""
79  wrapMode: Text.Wrap
80  }
81 
82  Label {
83  id: reviewLabel
84  objectName: "reviewLabel"
85  anchors { left: parent.left; right: parent.right }
86  color: scopeStyle ? scopeStyle.foreground : Theme.palette.normal.baseText
87  opacity: .8
88  text: modelData["review"] || ""
89  visible: text !== ""
90  wrapMode: Text.Wrap
91  }
92 
93  Item {
94  id: spacing
95  anchors { left: parent.left; right: parent.right }
96  height: units.gu(2)
97  visible: rating.visible || authorLabel.visible || reviewLabel.visible
98  }
99  }
100  }
101  }
102 }