on xenial help sign in
Merge lp:~unity-team/unity8/unity8.preview_video
39b88dfMichal Hruby
qml/Dash/Previews/PreviewVideoPlayback.qmlnew file+71
@@ -0,0 +1,71 @@
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 video.
22+
23+ This widget shows video contained in widgetData["source"],
24+ with a placeholder screenshot specified by widgetData["screenshot"].
25+ */
26+
27+PreviewWidget {
28+ id: root
29+ implicitWidth: units.gu(35)
30+
31+ LazyImage {
32+ objectName: "screenshot"
33+ anchors {
34+ left: parent.left
35+ right: parent.right
36+ }
37+ scaleTo: "width"
38+ visible: state === "ready"
39+ source: {
40+ var screenshot = widgetData["screenshot"];
41+ if (screenshot) return screenshot;
42+
43+ var source = widgetData["source"];
44+ if (source) {
45+ if (source.toString().indexOf("file://") === 0) {
46+ return "image://thumbnailer/" + source.toString().substr(7);
47+ }
48+ }
49+
50+ return "";
51+ }
52+ initialHeight: width * 10 / 16
53+
54+ Image {
55+ objectName: "playButton"
56+
57+ readonly property bool bigButton: parent.width > units.gu(40)
58+
59+ anchors.centerIn: parent
60+ width: bigButton ? units.gu(8) : units.gu(4.5)
61+ height: width
62+ source: "../graphics/play_button%1%2.png".arg(previewImageMouseArea.pressed ? "_active" : "").arg(bigButton ? "_big" : "")
63+ }
64+
65+ MouseArea {
66+ id: previewImageMouseArea
67+ anchors.fill: parent
68+ onClicked: Qt.openUrlExternally(widgetData["source"])
69+ }
70+ }
71+}
qml/Dash/Previews/PreviewWidgetFactory.qml+2−1
@@ -46,8 +46,9 @@ Loader {
46 case "audio": return "PreviewAudioPlayback.qml";
46 case "audio": return "PreviewAudioPlayback.qml";
47 case "gallery": return "PreviewImageGallery.qml";
47 case "gallery": return "PreviewImageGallery.qml";
48 case "header": return "PreviewHeader.qml";
48 case "header": return "PreviewHeader.qml";
49− case "image": return "PreviewZoomableImage.qml"
49+ case "image": return "PreviewZoomableImage.qml";
50 case "text": return "PreviewTextSummary.qml";
50 case "text": return "PreviewTextSummary.qml";
51+ case "video": return "PreviewVideoPlayback.qml";
51 default: return "";
52 default: return "";
52 }
53 }
53 }
54 }
tests/qmltests/CMakeLists.txt+1
@@ -62,6 +62,7 @@ add_qml_test(Dash/Previews PreviewAudioPlayback IMPORT_PATHS ${qmltest_DEFAULT_I
62add_qml_test(Dash/Previews PreviewImageGallery IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks)
62add_qml_test(Dash/Previews PreviewImageGallery IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks)
63add_qml_test(Dash/Previews PreviewHeader IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks)
63add_qml_test(Dash/Previews PreviewHeader IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks)
64add_qml_test(Dash/Previews PreviewTextSummary IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks)
64add_qml_test(Dash/Previews PreviewTextSummary IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks)
65+add_qml_test(Dash/Previews PreviewVideoPlayback IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks)
65add_qml_test(Dash/Previews PreviewZoomableImage IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks)
66add_qml_test(Dash/Previews PreviewZoomableImage IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks)
66add_qml_test(Greeter Lockscreen IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS}
67add_qml_test(Greeter Lockscreen IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS}
67 PROPERTIES ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/libusermetrics:${CMAKE_BINARY_DIR}/tests/mocks/LightDM/full")
68 PROPERTIES ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/libusermetrics:${CMAKE_BINARY_DIR}/tests/mocks/LightDM/full")
tests/qmltests/Dash/Previews/tst_PreviewVideoPlayback.qmlnew file+67
@@ -0,0 +1,67 @@
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 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 QtTest 1.0
19+import "../../../../qml/Dash/Previews"
20+import Unity.Test 0.1 as UT
21+
22+Rectangle {
23+ id: root
24+ width: units.gu(40)
25+ height: units.gu(80)
26+ color: "lightgrey"
27+
28+ property var widgetData0: {
29+ "source": "",
30+ "screenshot": ""
31+ }
32+
33+ property var widgetData1: {
34+ "source": "",
35+ "screenshot": "../../../tests/qmltests/Components/tst_LazyImage/square.png"
36+ }
37+
38+ property var widgetData2: {
39+ "source": "file:///path/to/local/file",
40+ "screenshot": ""
41+ }
42+
43+ PreviewVideoPlayback {
44+ id: videoPlayback
45+ width: parent.width
46+ widgetData: widgetData1
47+ }
48+
49+ UT.UnityTestCase {
50+ name: "PreviewVideoPlaybackTest"
51+ when: windowShown
52+
53+ function test_loadScreenshot() {
54+ var screenshot = findChild(videoPlayback, "screenshot");
55+
56+ videoPlayback.widgetData = widgetData0;
57+ tryCompare(screenshot.visible, false);
58+
59+ videoPlayback.widgetData = widgetData1;
60+ tryCompare(screenshot.visible, true);
61+
62+ videoPlayback.widgetData = widgetData2;
63+ var screenshotSource = screenshot.source
64+ verify(screenshotSource.toString().indexOf("image://thumbnailer/") === 0)
65+ }
66+ }
67+}
tests/qmltests/Dash/Previews/tst_PreviewWidgetFactory.qml+4−3
@@ -75,12 +75,13 @@ Rectangle {
75
75
76 function test_mapping_data() {
76 function test_mapping_data() {
77 return [
77 return [
78+ { tag: "Actions", type: "actions", source: "PreviewActions.qml" },
78 { tag: "Audio", type: "audio", source: "PreviewAudioPlayback.qml" },
79 { tag: "Audio", type: "audio", source: "PreviewAudioPlayback.qml" },
79− { tag: "Text", type: "text", source: "PreviewTextSummary.qml" },
80− { tag: "Gallery", type: "gallery", source: "PreviewImageGallery.qml" },
81 { tag: "Image", type: "image", source: "PreviewZoomableImage.qml" },
80 { tag: "Image", type: "image", source: "PreviewZoomableImage.qml" },
82− { tag: "Actions", type: "actions", source: "PreviewActions.qml" },
81+ { tag: "Gallery", type: "gallery", source: "PreviewImageGallery.qml" },
83 { tag: "Header", type: "header", source: "PreviewHeader.qml" },
82 { tag: "Header", type: "header", source: "PreviewHeader.qml" },
83+ { tag: "Text", type: "text", source: "PreviewTextSummary.qml" },
84+ { tag: "Video", type: "video", source: "PreviewVideoPlayback.qml" },
84 ];
85 ];
85 }
86 }
86
87