@@ -1,218 +0,0 @@
1−/*
2− * Copyright (C) 2013 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−
20−Rectangle {
21− id: root
22− property string title: ""
23− property url url: ""
24− property real previewWidthRatio: 0.5
25− property bool playable: false
26− property bool forceSquare: false
27− property Component buttons
28− property Component caption
29− property Component description
30−
31− readonly property bool narrowMode: width <= height
32− readonly property int contentSpacing: units.gu(3)
33−
34− signal close()
35− signal previewImageClicked()
36−
37− color: Qt.rgba(0, 0, 0, .3)
38− clip: true
39−
40− Connections {
41− target: shell.applicationManager
42− onMainStageFocusedApplicationChanged: {
43− root.close();
44− }
45− onSideStageFocusedApplicationChanged: {
46− root.close();
47− }
48− }
49−
50− MouseArea {
51− anchors.fill: parent
52− }
53−
54− Item {
55− id: headerRow
56− height: units.gu(4)
57− anchors {
58− top: parent.top
59− left: parent.left
60− right: parent.right
61− margins: root.contentSpacing
62− }
63−
64− MouseArea {
65− anchors {
66− fill: parent
67− leftMargin: -root.contentSpacing
68− rightMargin: -root.contentSpacing
69− topMargin: -root.contentSpacing
70− }
71−
72− onClicked: root.close();
73− }
74−
75− Item {
76− id: labelItem
77− anchors {
78− fill: parent
79− rightMargin: closePreviewImage.width + spacing
80− }
81−
82− property int spacing: units.gu(2)
83−
84− Label {
85− id: title
86− objectName: "titleLabel"
87− anchors {
88− left: parent.left
89− right: parent.right
90− }
91−
92− elide: Text.ElideRight
93− fontSize: "x-large"
94− font.weight: Font.Light
95− color: Theme.palette.selected.backgroundText
96− opacity: 0.9
97− text: root.title
98− style: Text.Raised
99− styleColor: "black"
100− }
101− Image {
102− id: closePreviewImage
103− source: "graphics/tablet/icon_close_preview.png"
104− width: units.gu(4)
105− height: units.gu(1.5)
106− anchors {
107− bottom: title.bottom
108− bottomMargin: units.dp(7)
109− left: parent.left
110− leftMargin: title.paintedWidth + labelItem.spacing
111− }
112− }
113− }
114− }
115−
116− Row {
117− id: contentRow
118− anchors {
119− left: parent.left
120− right: parent.right
121− top: headerRow.bottom
122− bottom: parent.bottom
123− margins: root.contentSpacing
124− }
125−
126− spacing: units.gu(2)
127−
128− Flickable {
129− id: leftFlickable
130− anchors.top: parent.top
131− anchors.bottom: parent.bottom
132− width: root.narrowMode ? contentRow.width : contentRow.width * root.previewWidthRatio
133− contentHeight: leftColumn.height
134− clip: true
135−
136− Column {
137− id: leftColumn
138− objectName: "leftColumn"
139− anchors {
140− left: parent.left
141− right: parent.right
142− }
143− height: childrenRect.height
144− spacing: root.contentSpacing
145−
146− // TODO: replace this UbuntuShape with the Video component once that lands
147− // with the player.
148− UbuntuShape {
149− id: urlLoader
150− anchors.left: parent.left
151− anchors.right: parent.right
152− height: root.forceSquare ? width : width * previewImage.sourceSize.height / previewImage.sourceSize.width
153− radius: "medium"
154− image: Image {
155− id: previewImage
156− asynchronous: true
157− source: root.url
158− fillMode: Image.PreserveAspectCrop
159− }
160−
161− Image {
162− objectName: "playButton"
163− anchors.centerIn: parent
164− visible: root.playable
165− readonly property bool bigButton: parent.width > units.gu(40)
166− width: bigButton ? units.gu(8) : units.gu(4.5)
167− height: width
168− source: "graphics/play_button%1%2.png".arg(previewImageMouseArea.pressed ? "_active" : "").arg(bigButton ? "_big" : "")
169− }
170−
171− MouseArea {
172− id: previewImageMouseArea
173− anchors.fill: parent
174− onClicked: root.previewImageClicked()
175− }
176− }
177− Loader {
178− id: buttonLoader
179− anchors.left: parent.left
180− anchors.right: parent.right
181− sourceComponent: root.buttons
182− }
183− Loader {
184− id: captionLoader
185− anchors.left: parent.left
186− anchors.right: parent.right
187− sourceComponent: root.caption
188− }
189− }
190− }
191−
192− Flickable {
193− id: rightFlickable
194− anchors.top: parent.top
195− anchors.bottom: parent.bottom
196− width: narrowMode ? 0 : (contentRow.width - leftColumn.width - contentRow.spacing)
197− contentHeight: rightColumn.height
198− clip: true
199−
200− Column {
201− id: rightColumn
202− objectName: "rightColumn"
203− height: childrenRect.height
204− anchors {
205− left: parent.left
206− right: parent.right
207− }
208− }
209− }
210− }
211−
212− Loader {
213− parent: root.narrowMode ? leftColumn : rightColumn
214− anchors.left: parent.left
215− anchors.right: parent.right
216− sourceComponent: root.description
217− }
218−}