Unity 8
PreviewIconActions.qml
1 /*
2  * Copyright (C) 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 Ubuntu.Components 1.3
19 
20 /*! This preview widget icons+label for number of items in widgetData["actions"].
21  * For each of the items we recognize the fields "label", "icon", "temporaryIcon" and "id".
22  * temporaryIcon is the icon that will be shown just after the user presses icon until the
23  * scope refreshes the preview
24  */
25 
26 PreviewWidget {
27  id: root
28 
29  implicitHeight: row.height
30 
31  Row {
32  id: row
33  readonly property var actions: root.widgetData ? root.widgetData["actions"] : null
34  width: parent.width
35 
36  spacing: units.gu(2)
37 
38  Repeater {
39  model: row.actions
40 
41  AbstractButton {
42  objectName: "button" + modelData.id
43  height: label.height
44  width: childrenRect.width
45 
46  Image {
47  id: icon
48  height: parent.height
49  width: height
50  source: modelData.icon
51  sourceSize { width: icon.width; height: icon.height }
52  }
53 
54  Label {
55  id: label
56  anchors.left: icon.right
57  anchors.leftMargin: visible ? units.gu(0.5) : 0
58  text: modelData.label
59  visible: text !== ""
60  }
61 
62  onClicked: {
63  if (modelData.temporaryIcon) {
64  icon.source = modelData.temporaryIcon;
65  }
66  root.triggered(root.widgetId, modelData.id, modelData);
67  }
68  }
69  }
70  }
71 
72 }