on xenial help sign in
Better implement interface
24ebe83Andrea Cimitan
qml/Dash/Previews/AudioPlayer.qml+4−4
@@ -20,11 +20,11 @@ import Ubuntu.Components 0.1
20import Ubuntu.Components.ListItems 0.1
20import Ubuntu.Components.ListItems 0.1
21
21
22PreviewWidget {
22PreviewWidget {
23+ id: root
24+
23 implicitHeight: childrenRect.height
25 implicitHeight: childrenRect.height
24
26
25− function stop() {
26− audio.stop()
27+ onFocusedChanged: if (!focused) audio.stop()
27− }
28
28
29 Audio {
29 Audio {
30 id: audio
30 id: audio
@@ -48,7 +48,7 @@ PreviewWidget {
48 id: trackRepeater
48 id: trackRepeater
49 objectName: "trackRepeater"
49 objectName: "trackRepeater"
50
50
51− model: data
51+ model: root.widgetData["tracks"]
52
52
53 delegate: Item {
53 delegate: Item {
54 id: trackItem
54 id: trackItem
qml/Dash/Previews/PreviewWidget.qml+7−1
@@ -16,6 +16,12 @@
16
16
17import QtQuick 2.0
17import QtQuick 2.0
18
18
19+/*! \brief Interface for preview widgets. */
20+
19Item {
21Item {
22+ /// type:bool \brief Specifies the preview widget being focused or not
20− property var data
23+ property bool focused: true
24+
25+ /// Variable used to contain widget's data
26+ property var widgetData
21}
27}
tests/qmltests/Dash/Previews/tst_AudioPlayer.qml+21−20
@@ -27,23 +27,24 @@ Rectangle {
27 height: units.gu(80)
27 height: units.gu(80)
28 color: "grey"
28 color: "grey"
29
29
30− property var tracksModel0: [
30+ property var tracksModel0: {
31− ]
31+ "tracks": [ ]
32+ }
32
33
33− property var tracksModel1: [
34+ property var tracksModel1: {
34− { title: "Some track name", length: "30", source: "../../tests/qmltests/Dash/Music/data/testsound1.ogg" }
35+ "tracks": [ { title: "Some track name", length: "30", source: "../../tests/qmltests/Dash/Music/data/testsound1.ogg" } ]
35− ]
36+ }
36
37
37− property var tracksModel2: [
38+ property var tracksModel2: {
38− { title: "Some track name", length: "30", source: "../../tests/qmltests/Dash/Music/data/testsound1.ogg" },
39+ "tracks": [ { title: "Some track name", length: "30", source: "../../tests/qmltests/Dash/Music/data/testsound1.ogg" },
39− { title: "Some other track name", subtitle: "Subtitle", length: "83", source: "../../tests/qmltests/Dash/Music/data/testsound2.ogg" },
40+ { title: "Some other track name", subtitle: "Subtitle", length: "83", source: "../../tests/qmltests/Dash/Music/data/testsound2.ogg" },
40− { title: "And another one", length: "7425", source: "../../tests/qmltests/Dash/Music/data/testsound3.ogg" }
41+ { title: "And another one", length: "7425", source: "../../tests/qmltests/Dash/Music/data/testsound3.ogg" } ]
41− ]
42+ }
42
43
43 AudioPlayer {
44 AudioPlayer {
44 id: audioPlayer
45 id: audioPlayer
45 anchors.fill: parent
46 anchors.fill: parent
46− data: tracksModel2
47+ widgetData: tracksModel2
47 }
48 }
48
49
49 UT.UnityTestCase {
50 UT.UnityTestCase {
@@ -63,19 +64,19 @@ Rectangle {
63 }
64 }
64
65
65 function test_tracks(data) {
66 function test_tracks(data) {
66− audioPlayer.data = data.tracksModel;
67+ audioPlayer.widgetData = data.tracksModel;
67 waitForRendering(audioPlayer);
68 waitForRendering(audioPlayer);
68
69
69 var trackRepeater = findChild(audioPlayer, "trackRepeater");
70 var trackRepeater = findChild(audioPlayer, "trackRepeater");
70− compare(trackRepeater.count, data.tracksModel.length)
71+ compare(trackRepeater.count, data.tracksModel["tracks"].length)
71
72
72− for (var i = 0; i < data.tracksModel.length; ++i) {
73+ for (var i = 0; i < data.tracksModel["tracks"].length; ++i) {
73 var trackItem = findChild(audioPlayer, "trackItem" + i);
74 var trackItem = findChild(audioPlayer, "trackItem" + i);
74 var titleLabel = findChild(trackItem, "trackTitleLabel");
75 var titleLabel = findChild(trackItem, "trackTitleLabel");
75− compare(titleLabel.text, data.tracksModel[i]["title"])
76+ compare(titleLabel.text, data.tracksModel["tracks"][i]["title"])
76 var subtitleLabel = findChild(trackItem, "trackSubtitleLabel");
77 var subtitleLabel = findChild(trackItem, "trackSubtitleLabel");
77− if (data.tracksModel[i]["subtitle"] !== undefined) {
78+ if (data.tracksModel["tracks"][i]["subtitle"] !== undefined) {
78− compare(subtitleLabel.text, data.tracksModel[i]["subtitle"])
79+ compare(subtitleLabel.text, data.tracksModel["tracks"][i]["subtitle"])
79 } else {
80 } else {
80 compare(subtitleLabel.visible, false)
81 compare(subtitleLabel.visible, false)
81 }
82 }
@@ -84,14 +85,14 @@ Rectangle {
84 }
85 }
85
86
86 function checkPlayerSource(index) {
87 function checkPlayerSource(index) {
87− var modelFilename = audioPlayer.data[index]["source"].replace(/^.*[\\\/]/, '');
88+ var modelFilename = audioPlayer.widgetData["tracks"][index]["source"].replace(/^.*[\\\/]/, '');
88 var playerFilename = findInvisibleChild(audioPlayer, "audio").source.toString().replace(/^.*[\\\/]/, '');
89 var playerFilename = findInvisibleChild(audioPlayer, "audio").source.toString().replace(/^.*[\\\/]/, '');
89
90
90 compare(modelFilename, playerFilename, "Player source is not set correctly.");
91 compare(modelFilename, playerFilename, "Player source is not set correctly.");
91 }
92 }
92
93
93 function test_playback() {
94 function test_playback() {
94− audioPlayer.data = tracksModel2;
95+ audioPlayer.widgetData = tracksModel2;
95 waitForRendering(audioPlayer);
96 waitForRendering(audioPlayer);
96
97
97 var track0Item = findChild(audioPlayer, "trackItem0");
98 var track0Item = findChild(audioPlayer, "trackItem0");
@@ -155,7 +156,7 @@ Rectangle {
155 tryCompare(track2ProgressBar, "visible", true);
156 tryCompare(track2ProgressBar, "visible", true);
156
157
157 // Calling stop() should make all players shut up!
158 // Calling stop() should make all players shut up!
158− audioPlayer.stop()
159+ audioPlayer.focused = false
159 tryCompare(audio, "playbackState", Audio.StoppedState);
160 tryCompare(audio, "playbackState", Audio.StoppedState);
160 }
161 }
161 }
162 }