Unity 8
PreviewWidgetFactory.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 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  */
17 
18 import QtQuick 2.0
19 
20 //! \brief This component loads the widgets based on widgetData["type"].
21 
22 Loader {
23  id: root
24 
25  //! Identifier of the widget.
26  property string widgetId: ""
27 
28  //! Type of the widget to display.
29  property string widgetType: ""
30 
31  //! Widget data, forwarded to the widget as is.
32  property var widgetData: null
33 
34  //! The ScopeStyle component.
35  property var scopeStyle: null
36 
37  //! Should the widget show in expanded mode (For those that support it)
38  property bool expanded: widgetType !== "expandable"
39 
40  //! Set to true if the parent preview is displayed.
41  property bool isCurrentPreview: false
42 
43  //! Triggered signal forwarded from the widgets.
44  signal triggered(string widgetId, string actionId, var data)
45 
46  source: widgetSource
47 
48  //! \cond private
49  property url widgetSource: {
50  switch (widgetType) {
51  case "actions": return "PreviewActions.qml";
52  case "audio": return "PreviewAudioPlayback.qml";
53  case "comment": return "PreviewComment.qml";
54  case "comment-input": return "PreviewCommentInput.qml";
55  case "expandable": return "PreviewExpandable.qml";
56  case "gallery": return "PreviewImageGallery.qml";
57  case "header": return "PreviewHeader.qml";
58  case "icon-actions": return "PreviewIconActions.qml";
59  case "image": return "PreviewZoomableImage.qml";
60  case "progress": return "PreviewProgress.qml";
61  case "payments": return "PreviewPayments.qml";
62  case "rating-input": return "PreviewRatingInput.qml";
63  case "rating-edit": return "PreviewRatingEdit.qml";
64  case "reviews": return "PreviewRatingDisplay.qml";
65  case "table": return "PreviewTable.qml";
66  case "text": return "PreviewTextSummary.qml";
67  case "video": return "PreviewVideoPlayback.qml";
68  default: return "";
69  }
70  }
71  //! \endcond
72 
73  onLoaded: {
74  item.widgetId = Qt.binding(function() { return root.widgetId } )
75  item.widgetData = Qt.binding(function() { return root.widgetData } )
76  item.isCurrentPreview = Qt.binding(function() { return root.isCurrentPreview } )
77  item.expanded = Qt.binding(function() { return root.expanded } )
78  item.scopeStyle = Qt.binding(function() { return root.scopeStyle } )
79  }
80 
81  Connections {
82  target: root.item
83  onTriggered: root.triggered(widgetId, actionId, data)
84  }
85 }