Changeset View
Changeset View
Standalone View
Standalone View
src/managemediaplayercontrol.cpp
Show All 11 Lines | |||||
12 | * Lesser General Public License for more details. | 12 | * Lesser General Public License for more details. | ||
13 | * | 13 | * | ||
14 | * You should have received a copy of the GNU Lesser General Public License | 14 | * You should have received a copy of the GNU Lesser General Public License | ||
15 | * along with this program. If not, see <https://www.gnu.org/licenses/>. | 15 | * along with this program. If not, see <https://www.gnu.org/licenses/>. | ||
16 | */ | 16 | */ | ||
17 | 17 | | |||
18 | #include "managemediaplayercontrol.h" | 18 | #include "managemediaplayercontrol.h" | ||
19 | 19 | | |||
20 | #include <QDataStream> | 20 | #include <QDebug> | ||
21 | 21 | | |||
22 | ManageMediaPlayerControl::ManageMediaPlayerControl(QObject *parent) : QObject(parent) | 22 | ManageMediaPlayerControl::ManageMediaPlayerControl(QObject *parent) : QObject(parent) | ||
23 | { | 23 | { | ||
24 | 24 | | |||
25 | } | 25 | } | ||
26 | 26 | | |||
27 | bool ManageMediaPlayerControl::playControlEnabled() const | 27 | bool ManageMediaPlayerControl::playControlEnabled() const | ||
28 | { | 28 | { | ||
29 | if (!mPlayListModel) { | | |||
30 | return false; | | |||
31 | } | | |||
32 | | ||||
33 | if (!mCurrentTrack.isValid()) { | 29 | if (!mCurrentTrack.isValid()) { | ||
34 | return false; | 30 | return false; | ||
31 | } else { | ||||
32 | return true; | ||||
35 | } | 33 | } | ||
36 | | ||||
37 | return mPlayListModel->rowCount() > 0; | | |||
38 | } | 34 | } | ||
39 | 35 | | |||
40 | bool ManageMediaPlayerControl::skipBackwardControlEnabled() const | 36 | bool ManageMediaPlayerControl::skipBackwardControlEnabled() const | ||
41 | { | 37 | { | ||
42 | if (!mPlayListModel) { | 38 | if (mPreviousTrack.isValid() && mIsInPlayingState) { | ||
39 | return true; | ||||
40 | } else { | ||||
43 | return false; | 41 | return false; | ||
44 | } | 42 | } | ||
45 | | ||||
46 | if (!mCurrentTrack.isValid()) { | | |||
47 | return false; | | |||
48 | } | | |||
49 | | ||||
50 | return (mRandomOrContinuePlay || (mCurrentTrack.row() > 0)) && mIsInPlayingState; | | |||
51 | } | 43 | } | ||
52 | 44 | | |||
53 | bool ManageMediaPlayerControl::skipForwardControlEnabled() const | 45 | bool ManageMediaPlayerControl::skipForwardControlEnabled() const | ||
54 | { | 46 | { | ||
55 | if (!mPlayListModel) { | 47 | if (mNextTrack.isValid() && mIsInPlayingState) { | ||
48 | return true; | ||||
49 | } else { | ||||
56 | return false; | 50 | return false; | ||
57 | } | 51 | } | ||
58 | | ||||
59 | if (!mCurrentTrack.isValid()) { | | |||
60 | return false; | | |||
61 | } | | |||
62 | | ||||
63 | return (mRandomOrContinuePlay || (mCurrentTrack.row() < mPlayListModel->rowCount() - 1)) && mIsInPlayingState; | | |||
64 | } | 52 | } | ||
65 | 53 | | |||
66 | bool ManageMediaPlayerControl::musicPlaying() const | 54 | bool ManageMediaPlayerControl::musicPlaying() const | ||
67 | { | 55 | { | ||
68 | return mPlayerState == ManageMediaPlayerControl::PlayerState::Playing; | 56 | return mIsInPlayingState; | ||
69 | } | 57 | } | ||
70 | 58 | | |||
71 | void ManageMediaPlayerControl::playerPaused() | 59 | void ManageMediaPlayerControl::playerPausedOrStopped() | ||
72 | { | 60 | { | ||
73 | //qDebug() << "ManageMediaPlayerControl::playerPaused"; | 61 | if (mIsInPlayingState) { | ||
74 | | ||||
75 | if (!mIsInPlayingState) { | | |||
76 | auto oldPreviousTrackIsEnabled = skipBackwardControlEnabled(); | 62 | auto oldPreviousTrackIsEnabled = skipBackwardControlEnabled(); | ||
77 | auto oldNextTrackIsEnabled = skipForwardControlEnabled(); | 63 | auto oldNextTrackIsEnabled = skipForwardControlEnabled(); | ||
78 | 64 | | |||
79 | mIsInPlayingState = true; | 65 | mIsInPlayingState = false; | ||
66 | Q_EMIT musicPlayingChanged(); | ||||
80 | 67 | | |||
81 | if (!mCurrentTrack.isValid()) { | 68 | if (!mCurrentTrack.isValid()) { | ||
82 | return; | 69 | return; | ||
83 | } | 70 | } | ||
84 | 71 | | |||
85 | auto newNextTrackIsEnabled = skipForwardControlEnabled(); | 72 | if (oldNextTrackIsEnabled != skipForwardControlEnabled()) { | ||
86 | if (oldNextTrackIsEnabled != newNextTrackIsEnabled) { | | |||
87 | Q_EMIT skipForwardControlEnabledChanged(); | 73 | Q_EMIT skipForwardControlEnabledChanged(); | ||
88 | } | 74 | } | ||
89 | 75 | | |||
90 | auto newPreviousTrackIsEnabled = skipBackwardControlEnabled(); | 76 | if (oldPreviousTrackIsEnabled != skipBackwardControlEnabled()) { | ||
91 | if (oldPreviousTrackIsEnabled != newPreviousTrackIsEnabled) { | | |||
92 | Q_EMIT skipBackwardControlEnabledChanged(); | 77 | Q_EMIT skipBackwardControlEnabledChanged(); | ||
93 | } | 78 | } | ||
94 | } | 79 | } | ||
95 | | ||||
96 | mPlayerState = ManageMediaPlayerControl::PlayerState::Paused; | | |||
97 | Q_EMIT musicPlayingChanged(); | | |||
98 | } | 80 | } | ||
99 | 81 | | |||
100 | void ManageMediaPlayerControl::playerPlaying() | 82 | void ManageMediaPlayerControl::playerPlaying() | ||
101 | { | 83 | { | ||
102 | if (!mIsInPlayingState) { | 84 | if (!mIsInPlayingState) { | ||
103 | auto oldPreviousTrackIsEnabled = skipBackwardControlEnabled(); | 85 | auto oldPreviousTrackIsEnabled = skipBackwardControlEnabled(); | ||
104 | auto oldNextTrackIsEnabled = skipForwardControlEnabled(); | 86 | auto oldNextTrackIsEnabled = skipForwardControlEnabled(); | ||
105 | 87 | | |||
106 | mIsInPlayingState = true; | 88 | mIsInPlayingState = true; | ||
89 | Q_EMIT musicPlayingChanged(); | ||||
107 | 90 | | |||
108 | if (!mCurrentTrack.isValid()) { | 91 | if (!mCurrentTrack.isValid()) { | ||
109 | return; | 92 | return; | ||
110 | } | 93 | } | ||
111 | 94 | | |||
112 | auto newNextTrackIsEnabled = skipForwardControlEnabled(); | 95 | if (oldNextTrackIsEnabled != skipForwardControlEnabled()) { | ||
113 | if (oldNextTrackIsEnabled != newNextTrackIsEnabled) { | | |||
114 | Q_EMIT skipForwardControlEnabledChanged(); | 96 | Q_EMIT skipForwardControlEnabledChanged(); | ||
115 | } | 97 | } | ||
116 | 98 | | |||
117 | auto newPreviousTrackIsEnabled = skipBackwardControlEnabled(); | 99 | if (oldPreviousTrackIsEnabled != skipBackwardControlEnabled()) { | ||
118 | if (oldPreviousTrackIsEnabled != newPreviousTrackIsEnabled) { | | |||
119 | Q_EMIT skipBackwardControlEnabledChanged(); | 100 | Q_EMIT skipBackwardControlEnabledChanged(); | ||
120 | } | 101 | } | ||
121 | } | 102 | } | ||
122 | | ||||
123 | mPlayerState = ManageMediaPlayerControl::PlayerState::Playing; | | |||
124 | Q_EMIT musicPlayingChanged(); | | |||
125 | } | 103 | } | ||
126 | 104 | | |||
127 | void ManageMediaPlayerControl::playerStopped() | 105 | void ManageMediaPlayerControl::setPreviousTrack(const QPersistentModelIndex &previousTrack) | ||
128 | { | 106 | { | ||
129 | //qDebug() << "ManageMediaPlayerControl::playerStopped"; | 107 | if (mPreviousTrack == previousTrack) { | ||
130 | 108 | return; | |||
131 | if (mIsInPlayingState) { | 109 | } | ||
132 | auto oldPreviousTrackIsEnabled = skipBackwardControlEnabled(); | | |||
133 | auto oldNextTrackIsEnabled = skipForwardControlEnabled(); | | |||
134 | 110 | | |||
135 | mIsInPlayingState = false; | 111 | bool oldValueSkipBackward = skipBackwardControlEnabled(); | ||
136 | 112 | | |||
137 | if (mCurrentTrack.isValid()) { | 113 | mPreviousTrack = previousTrack; | ||
138 | auto newNextTrackIsEnabled = skipForwardControlEnabled(); | 114 | Q_EMIT previousTrackChanged(); | ||
139 | if (oldNextTrackIsEnabled != newNextTrackIsEnabled) { | | |||
140 | Q_EMIT skipForwardControlEnabledChanged(); | | |||
141 | } | | |||
142 | 115 | | |||
143 | auto newPreviousTrackIsEnabled = skipBackwardControlEnabled(); | 116 | if (oldValueSkipBackward != skipBackwardControlEnabled()) { | ||
144 | if (oldPreviousTrackIsEnabled != newPreviousTrackIsEnabled) { | | |||
145 | Q_EMIT skipBackwardControlEnabledChanged(); | 117 | Q_EMIT skipBackwardControlEnabledChanged(); | ||
146 | } | 118 | } | ||
147 | } | 119 | } | ||
148 | } | | |||
149 | | ||||
150 | mPlayerState = ManageMediaPlayerControl::PlayerState::Stopped; | | |||
151 | Q_EMIT musicPlayingChanged(); | | |||
152 | } | | |||
153 | 120 | | |||
154 | void ManageMediaPlayerControl::setCurrentTrack(const QPersistentModelIndex ¤tTrack) | 121 | void ManageMediaPlayerControl::setCurrentTrack(const QPersistentModelIndex ¤tTrack) | ||
155 | { | 122 | { | ||
156 | if (mCurrentTrack == currentTrack) { | 123 | if (mCurrentTrack == currentTrack) { | ||
157 | return; | 124 | return; | ||
158 | } | 125 | } | ||
159 | 126 | | |||
160 | bool oldPlayControlEnabled = playControlEnabled(); | 127 | bool oldPlayControlEnabled = playControlEnabled(); | ||
161 | bool oldValueSkipBackward = skipBackwardControlEnabled(); | | |||
162 | bool oldValueSkipForward = skipForwardControlEnabled(); | | |||
163 | 128 | | |||
164 | mCurrentTrack = currentTrack; | 129 | mCurrentTrack = currentTrack; | ||
165 | Q_EMIT currentTrackChanged(); | 130 | Q_EMIT currentTrackChanged(); | ||
166 | 131 | | |||
167 | if (oldPlayControlEnabled != playControlEnabled()) { | 132 | if (oldPlayControlEnabled != playControlEnabled()) { | ||
168 | Q_EMIT playControlEnabledChanged(); | 133 | Q_EMIT playControlEnabledChanged(); | ||
169 | } | 134 | } | ||
170 | | ||||
171 | if (!mIsInPlayingState) { | | |||
172 | return; | | |||
173 | } | | |||
174 | | ||||
175 | if (oldValueSkipBackward != skipBackwardControlEnabled()) { | | |||
176 | Q_EMIT skipBackwardControlEnabledChanged(); | | |||
177 | } | | |||
178 | | ||||
179 | if (oldValueSkipForward != skipForwardControlEnabled()) { | | |||
180 | Q_EMIT skipForwardControlEnabledChanged(); | | |||
181 | } | | |||
182 | } | | |||
183 | | ||||
184 | bool ManageMediaPlayerControl::randomOrContinuePlay() const | | |||
185 | { | | |||
186 | return mRandomOrContinuePlay; | | |||
187 | } | | |||
188 | | ||||
189 | void ManageMediaPlayerControl::setRandomOrContinuePlay(bool randomOrContinuePlay) | | |||
190 | { | | |||
191 | if (mRandomOrContinuePlay == randomOrContinuePlay) { | | |||
192 | return; | | |||
193 | } | | |||
194 | | ||||
195 | auto oldPreviousTrackIsEnabled = skipBackwardControlEnabled(); | | |||
196 | auto oldNextTrackIsEnabled = skipForwardControlEnabled(); | | |||
197 | | ||||
198 | mRandomOrContinuePlay = randomOrContinuePlay; | | |||
199 | Q_EMIT randomOrContinuePlayChanged(); | | |||
200 | | ||||
201 | auto newNextTrackIsEnabled = skipForwardControlEnabled(); | | |||
202 | if (oldNextTrackIsEnabled != newNextTrackIsEnabled) { | | |||
203 | Q_EMIT skipForwardControlEnabledChanged(); | | |||
204 | } | | |||
205 | | ||||
206 | auto newPreviousTrackIsEnabled = skipBackwardControlEnabled(); | | |||
207 | if (oldPreviousTrackIsEnabled != newPreviousTrackIsEnabled) { | | |||
208 | Q_EMIT skipBackwardControlEnabledChanged(); | | |||
209 | } | | |||
210 | } | | |||
211 | | ||||
212 | void ManageMediaPlayerControl::playListTracksWillBeInserted(const QModelIndex &parent, int first, int last) | | |||
213 | { | | |||
214 | Q_UNUSED(parent); | | |||
215 | Q_UNUSED(first); | | |||
216 | Q_UNUSED(last); | | |||
217 | | ||||
218 | mSkipBackwardControlWasEnabled = skipBackwardControlEnabled(); | | |||
219 | mSkipForwardControlWasEnabled = skipForwardControlEnabled(); | | |||
220 | } | | |||
221 | | ||||
222 | void ManageMediaPlayerControl::playListTracksInserted(const QModelIndex &parent, int first, int last) | | |||
223 | { | | |||
224 | Q_UNUSED(parent); | | |||
225 | Q_UNUSED(first); | | |||
226 | Q_UNUSED(last); | | |||
227 | | ||||
228 | if (!mCurrentTrack.isValid()) { | | |||
229 | mSkipBackwardControlWasEnabled = false; | | |||
230 | mSkipForwardControlWasEnabled = false; | | |||
231 | | ||||
232 | return; | | |||
233 | } | | |||
234 | | ||||
235 | auto newNextTrackIsEnabled = skipForwardControlEnabled(); | | |||
236 | if (mSkipForwardControlWasEnabled != newNextTrackIsEnabled) { | | |||
237 | Q_EMIT skipForwardControlEnabledChanged(); | | |||
238 | } | | |||
239 | | ||||
240 | auto newPreviousTrackIsEnabled = skipBackwardControlEnabled(); | | |||
241 | if (mSkipBackwardControlWasEnabled != newPreviousTrackIsEnabled) { | | |||
242 | Q_EMIT skipBackwardControlEnabledChanged(); | | |||
243 | } | | |||
244 | } | 135 | } | ||
245 | 136 | | |||
246 | void ManageMediaPlayerControl::playListTracksWillBeRemoved(const QModelIndex &parent, int first, int last) | 137 | void ManageMediaPlayerControl::setNextTrack(const QPersistentModelIndex &nextTrack) | ||
247 | { | 138 | { | ||
248 | Q_UNUSED(parent); | 139 | if (mNextTrack == nextTrack) { | ||
249 | | ||||
250 | if (!mCurrentTrack.isValid()) { | | |||
251 | mCurrentTrackWillBeRemoved = false; | | |||
252 | mSkipBackwardControlWasEnabled = false; | | |||
253 | mSkipForwardControlWasEnabled = false; | | |||
254 | | ||||
255 | return; | 140 | return; | ||
256 | } | 141 | } | ||
257 | 142 | | |||
258 | mCurrentTrackWillBeRemoved = (mCurrentTrack.row() >= first && mCurrentTrack.row() <= last); | 143 | bool oldValueSkipForward = skipForwardControlEnabled(); | ||
259 | mSkipBackwardControlWasEnabled = skipBackwardControlEnabled(); | | |||
260 | mSkipForwardControlWasEnabled = skipForwardControlEnabled(); | | |||
261 | } | | |||
262 | | ||||
263 | void ManageMediaPlayerControl::playListTracksRemoved(const QModelIndex &parent, int first, int last) | | |||
264 | { | | |||
265 | Q_UNUSED(parent); | | |||
266 | Q_UNUSED(first); | | |||
267 | Q_UNUSED(last); | | |||
268 | | ||||
269 | if (mCurrentTrackWillBeRemoved) { | | |||
270 | Q_EMIT currentTrackChanged(); | | |||
271 | Q_EMIT playControlEnabledChanged(); | | |||
272 | } | | |||
273 | | ||||
274 | if (!mCurrentTrack.isValid()) { | | |||
275 | if (mSkipBackwardControlWasEnabled) { | | |||
276 | Q_EMIT skipBackwardControlEnabledChanged(); | | |||
277 | } | | |||
278 | | ||||
279 | if (mSkipForwardControlWasEnabled) { | | |||
280 | Q_EMIT skipForwardControlEnabledChanged(); | | |||
281 | } | | |||
282 | | ||||
283 | return; | | |||
284 | } | | |||
285 | | ||||
286 | auto newNextTrackIsEnabled = skipForwardControlEnabled(); | | |||
287 | if (mSkipForwardControlWasEnabled != newNextTrackIsEnabled) { | | |||
288 | Q_EMIT skipForwardControlEnabledChanged(); | | |||
289 | } | | |||
290 | | ||||
291 | auto newPreviousTrackIsEnabled = skipBackwardControlEnabled(); | | |||
292 | if (mSkipBackwardControlWasEnabled != newPreviousTrackIsEnabled) { | | |||
293 | Q_EMIT skipBackwardControlEnabledChanged(); | | |||
294 | } | | |||
295 | } | | |||
296 | | ||||
297 | void ManageMediaPlayerControl::playListReset() | | |||
298 | { | | |||
299 | } | | |||
300 | | ||||
301 | void ManageMediaPlayerControl::tracksAboutToBeMoved(const QModelIndex &parent, int start, int end, const QModelIndex &destination, int row) | | |||
302 | { | | |||
303 | Q_UNUSED(parent); | | |||
304 | Q_UNUSED(start); | | |||
305 | Q_UNUSED(end); | | |||
306 | Q_UNUSED(destination); | | |||
307 | Q_UNUSED(row); | | |||
308 | 144 | | |||
309 | mSkipBackwardControlWasEnabled = skipBackwardControlEnabled(); | 145 | mNextTrack = nextTrack; | ||
310 | mSkipForwardControlWasEnabled = skipForwardControlEnabled(); | 146 | Q_EMIT nextTrackChanged(); | ||
311 | } | | |||
312 | 147 | | |||
313 | void ManageMediaPlayerControl::tracksMoved(const QModelIndex &parent, int start, int end, const QModelIndex &destination, int row) | 148 | if (oldValueSkipForward != skipForwardControlEnabled()) { | ||
314 | { | | |||
315 | Q_UNUSED(parent); | | |||
316 | Q_UNUSED(start); | | |||
317 | Q_UNUSED(end); | | |||
318 | Q_UNUSED(destination); | | |||
319 | Q_UNUSED(row); | | |||
320 | | ||||
321 | auto newNextTrackIsEnabled = skipForwardControlEnabled(); | | |||
322 | if (mSkipForwardControlWasEnabled != newNextTrackIsEnabled) { | | |||
323 | Q_EMIT skipForwardControlEnabledChanged(); | 149 | Q_EMIT skipForwardControlEnabledChanged(); | ||
324 | } | 150 | } | ||
325 | | ||||
326 | auto newPreviousTrackIsEnabled = skipBackwardControlEnabled(); | | |||
327 | if (mSkipBackwardControlWasEnabled != newPreviousTrackIsEnabled) { | | |||
328 | Q_EMIT skipBackwardControlEnabledChanged(); | | |||
329 | } | | |||
330 | } | 151 | } | ||
331 | 152 | | |||
332 | void ManageMediaPlayerControl::setPlayListModel(QAbstractItemModel *aPlayListModel) | 153 | QPersistentModelIndex ManageMediaPlayerControl::previousTrack() const | ||
333 | { | 154 | { | ||
334 | if (mPlayListModel) { | 155 | return mPreviousTrack; | ||
335 | disconnect(mPlayListModel, &QAbstractItemModel::rowsAboutToBeInserted, this, &ManageMediaPlayerControl::playListTracksWillBeInserted); | | |||
336 | disconnect(mPlayListModel, &QAbstractItemModel::rowsInserted, this, &ManageMediaPlayerControl::playListTracksInserted); | | |||
337 | disconnect(mPlayListModel, &QAbstractItemModel::rowsAboutToBeRemoved, this, &ManageMediaPlayerControl::playListTracksWillBeRemoved); | | |||
338 | disconnect(mPlayListModel, &QAbstractItemModel::rowsRemoved, this, &ManageMediaPlayerControl::playListTracksRemoved); | | |||
339 | disconnect(mPlayListModel, &QAbstractItemModel::rowsMoved, this, &ManageMediaPlayerControl::tracksMoved); | | |||
340 | disconnect(mPlayListModel, &QAbstractItemModel::rowsAboutToBeMoved, this, &ManageMediaPlayerControl::tracksAboutToBeMoved); | | |||
341 | disconnect(mPlayListModel, &QAbstractItemModel::modelReset, this, &ManageMediaPlayerControl::playListReset); | | |||
342 | } | | |||
343 | | ||||
344 | mPlayListModel = aPlayListModel; | | |||
345 | | ||||
346 | if (mPlayListModel) { | | |||
347 | connect(mPlayListModel, &QAbstractItemModel::rowsAboutToBeInserted, this, &ManageMediaPlayerControl::playListTracksWillBeInserted); | | |||
348 | connect(mPlayListModel, &QAbstractItemModel::rowsInserted, this, &ManageMediaPlayerControl::playListTracksInserted); | | |||
349 | connect(mPlayListModel, &QAbstractItemModel::rowsAboutToBeRemoved, this, &ManageMediaPlayerControl::playListTracksWillBeRemoved); | | |||
350 | connect(mPlayListModel, &QAbstractItemModel::rowsRemoved, this, &ManageMediaPlayerControl::playListTracksRemoved); | | |||
351 | connect(mPlayListModel, &QAbstractItemModel::rowsMoved, this, &ManageMediaPlayerControl::tracksMoved); | | |||
352 | connect(mPlayListModel, &QAbstractItemModel::rowsAboutToBeMoved, this, &ManageMediaPlayerControl::tracksAboutToBeMoved); | | |||
353 | connect(mPlayListModel, &QAbstractItemModel::modelReset, this, &ManageMediaPlayerControl::playListReset); | | |||
354 | } | | |||
355 | | ||||
356 | Q_EMIT playListModelChanged(); | | |||
357 | } | | |||
358 | | ||||
359 | QAbstractItemModel *ManageMediaPlayerControl::playListModel() const | | |||
360 | { | | |||
361 | return mPlayListModel; | | |||
362 | } | 156 | } | ||
363 | 157 | | |||
364 | QPersistentModelIndex ManageMediaPlayerControl::currentTrack() const | 158 | QPersistentModelIndex ManageMediaPlayerControl::currentTrack() const | ||
365 | { | 159 | { | ||
366 | return mCurrentTrack; | 160 | return mCurrentTrack; | ||
367 | } | 161 | } | ||
368 | 162 | | |||
369 | QDataStream &operator<<(QDataStream &out, const ManageMediaPlayerControl::PlayerState &state) | 163 | QPersistentModelIndex ManageMediaPlayerControl::nextTrack() const | ||
370 | { | 164 | { | ||
371 | out << static_cast<int>(state); | 165 | return mNextTrack; | ||
372 | return out; | | |||
373 | } | 166 | } | ||
374 | 167 | | |||
375 | QDataStream &operator>>(QDataStream &in, ManageMediaPlayerControl::PlayerState &state) | | |||
376 | { | | |||
377 | int value; | | |||
378 | in >> value; | | |||
379 | state = static_cast<ManageMediaPlayerControl::PlayerState>(value); | | |||
380 | return in; | | |||
381 | } | | |||
382 | | ||||
383 | | ||||
384 | #include "moc_managemediaplayercontrol.cpp" | 168 | #include "moc_managemediaplayercontrol.cpp" |