on xenial help sign in
Merged audioplayer branch
commit408f00ceb52fa87fc0cffa45016a27c32354901e authorAndrea Cimitan <andrea.cimitan@gmail.com> dateTue 4 Feb 2014, 14:56 (13 years ago) parentee2b67dae5ff2d
4 files changed+42−27
qml/Dash/Previews/AudioPlayer.qml → qml/Dash/Previews/AudioWidget.qml+16−1 qml/Dash/Previews/PreviewWidget.qml+2−2 tests/qmltests/CMakeLists.txt+1−1 tests/qmltests/Dash/Previews/tst_AudioPlayer.qml → tests/qmltests/Dash/Previews/tst_AudioWidget.qml+23−23
qml/Dash/Previews/AudioPlayer.qml → qml/Dash/Previews/AudioWidget.qmlrenamed+16−1
@@ -19,11 +19,25 @@ import QtMultimedia 5.0
1919import Ubuntu.Components 0.1
2020import Ubuntu.Components.ListItems 0.1
2121
22+/*! \brief Preview widget for audio tracks.
23+
24+ This widget shows tracks contained in widgetData["tracks"], each of which should be of the form:
25+
26+ \code{.json}
27+ {
28+ "source" "uri://to/file",
29+ "title": "Title",
30+ "subtitle": "Subtitle", // optional
31+ "length": 125 // in seconds
32+ }
33+ \endcode
34+ */
35+
2236PreviewWidget {
2337 id: root
2438 implicitHeight: childrenRect.height
2539
26− onFocusedChanged: if (!focused) audio.stop()
40+ onIsCurrentPreviewChanged: if (!isCurrentPreview) audio.stop()
2741
2842 Audio {
2943 id: audio
@@ -33,6 +47,7 @@ PreviewWidget {
3347 property Item playingItem
3448
3549 Component.onDestruction: {
50+ // destructing the component doesn't automatically send stop to the media service, probably a bug in QtMultimedia
3651 audio.stop();
3752 }
3853
qml/Dash/Previews/PreviewWidget.qml+2−2
@@ -19,8 +19,8 @@ import QtQuick 2.0
1919/*! Interface for preview widgets. */
2020
2121Item {
22− /// type:bool Specifies the preview widget being focused or not
23− property bool focused: true
22+ /// type:bool Specifies the preview widget being currently used or not
23+ property bool isCurrentPreview: true
2424
2525 /// Variable used to contain widget's data
2626 property var widgetData
tests/qmltests/CMakeLists.txt+1−1
@@ -54,7 +54,7 @@ add_qml_test(Dash/Apps RunningApplicationsGrid IMPORT_PATHS ${qmltest_DEFAULT_IM
5454add_qml_test(Dash/Apps AppPreview IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks)
5555add_qml_test(Dash/Movie MoviePreview IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks)
5656add_qml_test(Dash/Music MusicPreview IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks)
57−add_qml_test(Dash/Previews AudioPlayer IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks)
57+add_qml_test(Dash/Previews AudioWidget IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks)
5858add_qml_test(Dash/Previews TextWidget IMPORT_PATHS ${qmltest_DEFAULT_IMPORT_PATHS} ${CMAKE_BINARY_DIR}/tests/mocks)
5959add_qml_test(Greeter Lockscreen IMPORT_PATHS ${CMAKE_BINARY_DIR}/plugins ${qmltest_DEFAULT_IMPORT_PATHS}
6060 PROPERTIES ENVIRONMENT "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/tests/mocks/libusermetrics:${CMAKE_BINARY_DIR}/tests/mocks/LightDM/full")
tests/qmltests/Dash/Previews/tst_AudioPlayer.qml → tests/qmltests/Dash/Previews/tst_AudioWidget.qmlrenamed+23−23
@@ -32,27 +32,27 @@ Rectangle {
3232 }
3333
3434 property var tracksModel1: {
35− "tracks": [ { title: "Some track name", length: "30", source: "../../tests/qmltests/Dash/Music/data/testsound1.ogg" } ]
35+ "tracks": [ { title: "Some track name", length: "30", source: "/not/existing/path/testsound1" } ]
3636 }
3737
3838 property var tracksModel2: {
39− "tracks": [ { title: "Some track name", length: "30", source: "../../tests/qmltests/Dash/Music/data/testsound1.ogg" },
40− { title: "Some other track name", subtitle: "Subtitle", length: "83", source: "../../tests/qmltests/Dash/Music/data/testsound2.ogg" },
41− { title: "And another one", length: "7425", source: "../../tests/qmltests/Dash/Music/data/testsound3.ogg" } ]
39+ "tracks": [ { title: "Some track name", length: "30", source: "/not/existing/path/testsound1" },
40+ { title: "Some other track name", subtitle: "Subtitle", length: "83", source: "/not/existing/path/testsound2" },
41+ { title: "And another one", length: "7425", source: "/not/existing/path/testsound3" } ]
4242 }
4343
44− AudioPlayer {
45− id: audioPlayer
44+ AudioWidget {
45+ id: audioWidget
4646 anchors.fill: parent
4747 widgetData: tracksModel2
4848 }
4949
5050 UT.UnityTestCase {
51− name: "AudioPlayerTest"
51+ name: "AudioWidgetTest"
5252 when: windowShown
5353
5454 function init() {
55− waitForRendering(audioPlayer);
55+ waitForRendering(audioWidget);
5656 }
5757
5858 function test_time_formatter_data() {
@@ -66,7 +66,7 @@ Rectangle {
6666 }
6767
6868 function test_time_formatter(data) {
69− var audio = findInvisibleChild(audioPlayer, "audio");
69+ var audio = findInvisibleChild(audioWidget, "audio");
7070 compare(audio.lengthToString(data.value), data.result)
7171 }
7272
@@ -79,14 +79,14 @@ Rectangle {
7979 }
8080
8181 function test_tracks(data) {
82− audioPlayer.widgetData = data.tracksModel;
83− waitForRendering(audioPlayer);
82+ audioWidget.widgetData = data.tracksModel;
83+ waitForRendering(audioWidget);
8484
85− var trackRepeater = findChild(audioPlayer, "trackRepeater");
85+ var trackRepeater = findChild(audioWidget, "trackRepeater");
8686 compare(trackRepeater.count, data.tracksModel["tracks"].length)
8787
8888 for (var i = 0; i < data.tracksModel["tracks"].length; ++i) {
89− var trackItem = findChild(audioPlayer, "trackItem" + i);
89+ var trackItem = findChild(audioWidget, "trackItem" + i);
9090 var titleLabel = findChild(trackItem, "trackTitleLabel");
9191 compare(titleLabel.text, data.tracksModel["tracks"][i]["title"])
9292 var subtitleLabel = findChild(trackItem, "trackSubtitleLabel");
@@ -100,19 +100,19 @@ Rectangle {
100100 }
101101
102102 function checkPlayerSource(index) {
103− var modelFilename = audioPlayer.widgetData["tracks"][index]["source"].replace(/^.*[\\\/]/, '');
104− var playerFilename = findInvisibleChild(audioPlayer, "audio").source.toString().replace(/^.*[\\\/]/, '');
103+ var modelFilename = audioWidget.widgetData["tracks"][index]["source"].replace(/^.*[\\\/]/, '');
104+ var playerFilename = findInvisibleChild(audioWidget, "audio").source.toString().replace(/^.*[\\\/]/, '');
105105
106106 compare(modelFilename, playerFilename, "Player source is not set correctly.");
107107 }
108108
109109 function test_playback() {
110− audioPlayer.widgetData = tracksModel2;
111− waitForRendering(audioPlayer);
110+ audioWidget.widgetData = tracksModel2;
111+ waitForRendering(audioWidget);
112112
113− var track0Item = findChild(audioPlayer, "trackItem0");
114− var track1Item = findChild(audioPlayer, "trackItem1");
115− var track2Item = findChild(audioPlayer, "trackItem2");
113+ var track0Item = findChild(audioWidget, "trackItem0");
114+ var track1Item = findChild(audioWidget, "trackItem1");
115+ var track2Item = findChild(audioWidget, "trackItem2");
116116
117117 var track0ProgressBar = findChild(track0Item, "progressBarFill");
118118 var track1ProgressBar = findChild(track1Item, "progressBarFill");
@@ -122,7 +122,7 @@ Rectangle {
122122 var track1PlayButton = findChild(track1Item, "playButton");
123123 var track2PlayButton = findChild(track2Item, "playButton");
124124
125− var audio = findInvisibleChild(audioPlayer, "audio");
125+ var audio = findInvisibleChild(audioWidget, "audio");
126126
127127 // All progress bars must be hidden in the beginning
128128 compare(track0ProgressBar.visible, false);
@@ -170,8 +170,8 @@ Rectangle {
170170 tryCompare(track1ProgressBar, "visible", false);
171171 tryCompare(track2ProgressBar, "visible", true);
172172
173− // Calling stop() should make all players shut up!
174− audioPlayer.focused = false
173+ // Changing preview should make all players shut up!
174+ audioWidget.isCurrentPreview = false
175175 tryCompare(audio, "playbackState", Audio.StoppedState);
176176 }
177177 }