|
34 | 34 | using namespace mu::learn;
|
35 | 35 | using namespace mu::network;
|
36 | 36 |
|
| 37 | +static const Playlist s_startedPlaylist = { |
| 38 | + { "Nc08RhOQDR4", "Announcing MuseScore 4 - a gigantic overhaul!", "Musescore", |
| 39 | + "https://s3.amazonaws.com/s.musescore.org/video_thumbs/announcing.jpg", 241 }, |
| 40 | + { "qM1CcIRzJHE", "Important Differences Between MuseScore 3 & MuseScore 4", "Musescore", |
| 41 | + "https://s3.amazonaws.com/s.musescore.org/video_thumbs/differences_v3.jpg", 341 }, |
| 42 | + { "n7UgN69e2Y8", "MuseScore 4 - Installing Our FREE Orchestral Plugin: Muse Sounds", "Musescore", |
| 43 | + "https://s3.amazonaws.com/s.musescore.org/video_thumbs/installing.jpg", 63 }, |
| 44 | + { "U7dagae87eM", "Engraving Improvements in MuseScore 4: How They Affect Your Older Scores", "Musescore", |
| 45 | + "https://s3.amazonaws.com/s.musescore.org/video_thumbs/engraving.jpg", 144 }, |
| 46 | + { "jZtlJ57AheA", "MuseScore in Minutes: Setting up your Score", "Musescore", |
| 47 | + "https://s3.amazonaws.com/s.musescore.org/video_thumbs/setting_up.jpg", 92 }, |
| 48 | + { "0X8G59wJcXc", "MuseScore in Minutes: The Basics of Score Writing", "Musescore", |
| 49 | + "https://s3.amazonaws.com/s.musescore.org/video_thumbs/basics_writing.jpg", 262 }, |
| 50 | + { "ailUD3wBBrM", "MuseScore in Minutes: Dynamics, Articulations, Tempo & Text", "Musescore", |
| 51 | + "https://s3.amazonaws.com/s.musescore.org/video_thumbs/dynamics.jpg", 200 }, |
| 52 | + { "3s3o-01p_5o", "MuseScore in Minutes: Guitar & Percussion", "Musescore", |
| 53 | + "https://s3.amazonaws.com/s.musescore.org/video_thumbs/guitar.jpg", 167 }, |
| 54 | + { "owDxvIQK4mE", "MuseScore in Minutes: Layouts & Parts", "Musescore", |
| 55 | + "https://s3.amazonaws.com/s.musescore.org/video_thumbs/layouts.jpg", 297 }, |
| 56 | + { "z4Ecaaqwg8U", "MuseScore in Minutes: Text, Lyrics & Chords", "Musescore", |
| 57 | + "https://s3.amazonaws.com/s.musescore.org/video_thumbs/text.jpg", 165 }, |
| 58 | + { "a5_GsbdTpKo", "MuseScore in Minutes: Repeats & Jumps", "Musescore", |
| 59 | + "https://s3.amazonaws.com/s.musescore.org/video_thumbs/repeats.jpg", 161 }, |
| 60 | + { "MAqF3Ok8_Rs", "MuseScore in Minutes: Using MIDI Keyboards", "Musescore", |
| 61 | + "https://s3.amazonaws.com/s.musescore.org/video_thumbs/midi.jpg", 148 }, |
| 62 | + { "6LP4U_BF23w", "MuseScore in Minutes: Publishing and Saving to the Cloud", "Musescore", |
| 63 | + "https://s3.amazonaws.com/s.musescore.org/video_thumbs/publishing.jpg", 131 }, |
| 64 | + { "XGo4PJd1lng", "How I Designed a Free Music Font for 5 Million Musicians (MuseScore 3.6)", "Musescore", |
| 65 | + "https://s3.amazonaws.com/s.musescore.org/video_thumbs/designing.jpg", 1180 } |
| 66 | +}; |
| 67 | + |
37 | 68 | static int videoDurationSecs(const QString& durationInIsoFormat)
|
38 | 69 | {
|
39 | 70 | // NOTE Available ISO8601 duration format: P#Y#M#DT#H#M#S
|
@@ -64,41 +95,42 @@ static int videoDurationSecs(const QString& durationInIsoFormat)
|
64 | 95 |
|
65 | 96 | void LearnService::refreshPlaylists()
|
66 | 97 | {
|
67 |
| - auto startedPlaylistCallBack = [this](const RetVal<Playlist>& result) { |
68 |
| - if (!result.ret) { |
69 |
| - LOGW() << result.ret.toString(); |
70 |
| - return; |
71 |
| - } |
72 |
| - |
73 |
| - if (m_startedPlaylist == result.val) { |
74 |
| - return; |
75 |
| - } |
76 |
| - |
77 |
| - m_startedPlaylist = result.val; |
78 |
| - m_startedPlaylistChannel.send(m_startedPlaylist); |
79 |
| - }; |
80 |
| - |
81 |
| - auto advancedPlaylistCallBack = [this](const RetVal<Playlist>& result) { |
82 |
| - if (!result.ret) { |
83 |
| - LOGW() << result.ret.toString(); |
84 |
| - return; |
85 |
| - } |
86 |
| - |
87 |
| - if (m_advancedPlaylist == result.val) { |
88 |
| - return; |
89 |
| - } |
90 |
| - |
91 |
| - m_advancedPlaylist = result.val; |
92 |
| - m_advancedPlaylistChannel.send(m_advancedPlaylist); |
93 |
| - }; |
94 |
| - |
95 |
| - QtConcurrent::run(this, &LearnService::th_requestPlaylist, configuration()->startedPlaylistUrl(), startedPlaylistCallBack); |
96 |
| - QtConcurrent::run(this, &LearnService::th_requestPlaylist, configuration()->advancedPlaylistUrl(), advancedPlaylistCallBack); |
| 98 | + //! TODO: Temporary disabled |
| 99 | +// auto startedPlaylistCallBack = [this](const RetVal<Playlist>& result) { |
| 100 | +// if (!result.ret) { |
| 101 | +// LOGW() << result.ret.toString(); |
| 102 | +// return; |
| 103 | +// } |
| 104 | + |
| 105 | +// if (m_startedPlaylist == result.val) { |
| 106 | +// return; |
| 107 | +// } |
| 108 | + |
| 109 | +// m_startedPlaylist = result.val; |
| 110 | +// m_startedPlaylistChannel.send(m_startedPlaylist); |
| 111 | +// }; |
| 112 | + |
| 113 | +// auto advancedPlaylistCallBack = [this](const RetVal<Playlist>& result) { |
| 114 | +// if (!result.ret) { |
| 115 | +// LOGW() << result.ret.toString(); |
| 116 | +// return; |
| 117 | +// } |
| 118 | + |
| 119 | +// if (m_advancedPlaylist == result.val) { |
| 120 | +// return; |
| 121 | +// } |
| 122 | + |
| 123 | +// m_advancedPlaylist = result.val; |
| 124 | +// m_advancedPlaylistChannel.send(m_advancedPlaylist); |
| 125 | +// }; |
| 126 | + |
| 127 | +// QtConcurrent::run(this, &LearnService::th_requestPlaylist, configuration()->startedPlaylistUrl(), startedPlaylistCallBack); |
| 128 | +// QtConcurrent::run(this, &LearnService::th_requestPlaylist, configuration()->advancedPlaylistUrl(), advancedPlaylistCallBack); |
97 | 129 | }
|
98 | 130 |
|
99 | 131 | Playlist LearnService::startedPlaylist() const
|
100 | 132 | {
|
101 |
| - return m_startedPlaylist; |
| 133 | + return s_startedPlaylist; |
102 | 134 | }
|
103 | 135 |
|
104 | 136 | mu::async::Channel<Playlist> LearnService::startedPlaylistChanged() const
|
|
0 commit comments