Changeset View
Changeset View
Standalone View
Standalone View
src/mediaplaylist.h
Show First 20 Lines • Show All 66 Lines • ▼ Show 20 Line(s) | 65 | Q_PROPERTY(bool randomPlay | |||
---|---|---|---|---|---|
67 | WRITE setRandomPlay | 67 | WRITE setRandomPlay | ||
68 | NOTIFY randomPlayChanged) | 68 | NOTIFY randomPlayChanged) | ||
69 | 69 | | |||
70 | Q_PROPERTY(bool repeatPlay | 70 | Q_PROPERTY(bool repeatPlay | ||
71 | READ repeatPlay | 71 | READ repeatPlay | ||
72 | WRITE setRepeatPlay | 72 | WRITE setRepeatPlay | ||
73 | NOTIFY repeatPlayChanged) | 73 | NOTIFY repeatPlayChanged) | ||
74 | 74 | | |||
75 | Q_PROPERTY(bool displayUndoInline | ||||
76 | READ displayUndoInline | ||||
77 | WRITE setDisplayUndoInline | ||||
78 | NOTIFY displayUndoInlineChanged) | ||||
79 | | ||||
75 | public: | 80 | public: | ||
76 | 81 | | |||
77 | enum ColumnsRoles { | 82 | enum ColumnsRoles { | ||
78 | TitleRole = DatabaseInterface::TitleRole, | 83 | TitleRole = DatabaseInterface::TitleRole, | ||
79 | SecondaryTextRole, | 84 | SecondaryTextRole, | ||
80 | ImageUrlRole, | 85 | ImageUrlRole, | ||
81 | ShadowForImageRole, | 86 | ShadowForImageRole, | ||
82 | ChildModelRole, | 87 | ChildModelRole, | ||
▲ Show 20 Lines • Show All 74 Lines • ▼ Show 20 Line(s) | |||||
157 | Q_INVOKABLE bool savePlaylist(const QUrl &fileName); | 162 | Q_INVOKABLE bool savePlaylist(const QUrl &fileName); | ||
158 | 163 | | |||
159 | QVariantMap persistentState() const; | 164 | QVariantMap persistentState() const; | ||
160 | 165 | | |||
161 | MusicListenersManager* musicListenersManager() const; | 166 | MusicListenersManager* musicListenersManager() const; | ||
162 | 167 | | |||
163 | int tracksCount() const; | 168 | int tracksCount() const; | ||
164 | 169 | | |||
170 | bool displayUndoInline() const; | ||||
171 | | ||||
mgallien: Better use isUndoDisplayedInline | |||||
165 | QPersistentModelIndex currentTrack() const; | 172 | QPersistentModelIndex currentTrack() const; | ||
166 | 173 | | |||
167 | int currentTrackRow() const; | 174 | int currentTrackRow() const; | ||
168 | 175 | | |||
169 | bool randomPlay() const; | 176 | bool randomPlay() const; | ||
170 | 177 | | |||
171 | bool repeatPlay() const; | 178 | bool repeatPlay() const; | ||
172 | 179 | | |||
173 | Q_SIGNALS: | 180 | Q_SIGNALS: | ||
174 | 181 | | |||
175 | void newTrackByNameInList(const QString &title, const QString &artist, const QString &album, int trackNumber, int discNumber); | 182 | void newTrackByNameInList(const QString &title, const QString &artist, const QString &album, int trackNumber, int discNumber); | ||
176 | 183 | | |||
177 | void newEntryInList(qulonglong newDatabaseId, | 184 | void newEntryInList(qulonglong newDatabaseId, | ||
178 | const QString &entryTitle, | 185 | const QString &entryTitle, | ||
179 | ElisaUtils::PlayListEntryType databaseIdType); | 186 | ElisaUtils::PlayListEntryType databaseIdType); | ||
180 | 187 | | |||
181 | void persistentStateChanged(); | 188 | void persistentStateChanged(); | ||
182 | 189 | | |||
183 | void musicListenersManagerChanged(); | 190 | void musicListenersManagerChanged(); | ||
184 | 191 | | |||
185 | void tracksCountChanged(); | 192 | void tracksCountChanged(); | ||
186 | 193 | | |||
187 | void currentTrackChanged(QPersistentModelIndex currentTrack); | 194 | void currentTrackChanged(QPersistentModelIndex currentTrack); | ||
188 | 195 | | |||
196 | void clearPlayListPlayer(); | ||||
197 | | ||||
198 | void undoClearPlayListPlayer(); | ||||
199 | | ||||
189 | void currentTrackRowChanged(); | 200 | void currentTrackRowChanged(); | ||
190 | 201 | | |||
191 | void randomPlayChanged(); | 202 | void randomPlayChanged(); | ||
192 | 203 | | |||
193 | void repeatPlayChanged(); | 204 | void repeatPlayChanged(); | ||
194 | 205 | | |||
206 | void displayUndoInlineChanged(); | ||||
207 | | ||||
195 | void playListFinished(); | 208 | void playListFinished(); | ||
196 | 209 | | |||
197 | void playListLoaded(); | 210 | void playListLoaded(); | ||
198 | 211 | | |||
199 | void playListLoadFailed(); | 212 | void playListLoadFailed(); | ||
200 | 213 | | |||
201 | void ensurePlay(); | 214 | void ensurePlay(); | ||
202 | 215 | | |||
Show All 13 Lines | 216 | public Q_SLOTS: | |||
216 | void trackRemoved(qulonglong trackId); | 229 | void trackRemoved(qulonglong trackId); | ||
217 | 230 | | |||
218 | void setMusicListenersManager(MusicListenersManager* musicListenersManager); | 231 | void setMusicListenersManager(MusicListenersManager* musicListenersManager); | ||
219 | 232 | | |||
220 | void setRandomPlay(bool value); | 233 | void setRandomPlay(bool value); | ||
221 | 234 | | |||
222 | void setRepeatPlay(bool value); | 235 | void setRepeatPlay(bool value); | ||
223 | 236 | | |||
237 | void setDisplayUndoInline(bool value); | ||||
238 | | ||||
224 | void skipNextTrack(); | 239 | void skipNextTrack(); | ||
225 | 240 | | |||
226 | void skipPreviousTrack(); | 241 | void skipPreviousTrack(); | ||
227 | 242 | | |||
228 | void seedRandomGenerator(uint seed); | 243 | void seedRandomGenerator(uint seed); | ||
229 | 244 | | |||
230 | void switchTo(int row); | 245 | void switchTo(int row); | ||
231 | 246 | | |||
Show All 19 Lines | 263 | void enqueue(const ElisaUtils::EntryDataList &newEntries, | |||
251 | ElisaUtils::PlayListEnqueueTriggerPlay triggerPlay); | 266 | ElisaUtils::PlayListEnqueueTriggerPlay triggerPlay); | ||
252 | 267 | | |||
253 | void replaceAndPlay(const ElisaUtils::EntryData &newEntry, ElisaUtils::PlayListEntryType databaseIdType); | 268 | void replaceAndPlay(const ElisaUtils::EntryData &newEntry, ElisaUtils::PlayListEntryType databaseIdType); | ||
254 | 269 | | |||
255 | void enqueueRestoredEntry(const MediaPlayListEntry &newEntry); | 270 | void enqueueRestoredEntry(const MediaPlayListEntry &newEntry); | ||
256 | 271 | | |||
257 | void trackInError(const QUrl &sourceInError, QMediaPlayer::Error playerError); | 272 | void trackInError(const QUrl &sourceInError, QMediaPlayer::Error playerError); | ||
258 | 273 | | |||
274 | Q_SCRIPTABLE void undoClearPlayList(); | ||||
275 | | ||||
As far as I know, Q_SCRIPTABLE is not necessary to call it from qml. Can you remove it ? mgallien: As far as I know, Q_SCRIPTABLE is not necessary to call it from qml. Can you remove it ? | |||||
276 | Q_SCRIPTABLE void closeUndoClearMessage(); | ||||
277 | | ||||
259 | private Q_SLOTS: | 278 | private Q_SLOTS: | ||
260 | 279 | | |||
261 | void loadPlayListLoaded(); | 280 | void loadPlayListLoaded(); | ||
262 | 281 | | |||
263 | void loadPlayListLoadFailed(); | 282 | void loadPlayListLoadFailed(); | ||
264 | 283 | | |||
265 | private: | 284 | private: | ||
266 | 285 | | |||
286 | void clearPlayList(bool prepareUndo); | ||||
287 | | ||||
267 | void resetCurrentTrack(); | 288 | void resetCurrentTrack(); | ||
268 | 289 | | |||
269 | void notifyCurrentTrackChanged(); | 290 | void notifyCurrentTrackChanged(); | ||
270 | 291 | | |||
271 | void restorePlayListPosition(); | 292 | void restorePlayListPosition(); | ||
272 | 293 | | |||
273 | void restoreRandomPlay(); | 294 | void restoreRandomPlay(); | ||
274 | 295 | | |||
275 | void restoreRepeatPlay(); | 296 | void restoreRepeatPlay(); | ||
276 | 297 | | |||
277 | void enqueueArtist(const QString &artistName); | 298 | void enqueueArtist(const QString &artistName); | ||
278 | 299 | | |||
279 | void enqueueFilesList(const ElisaUtils::EntryDataList &newEntries); | 300 | void enqueueFilesList(const ElisaUtils::EntryDataList &newEntries); | ||
280 | 301 | | |||
281 | void enqueueTracksListById(const ElisaUtils::EntryDataList &newEntries); | 302 | void enqueueTracksListById(const ElisaUtils::EntryDataList &newEntries); | ||
282 | 303 | | |||
283 | void enqueueOneEntry(const ElisaUtils::EntryData &entryData, ElisaUtils::PlayListEntryType type); | 304 | void enqueueOneEntry(const ElisaUtils::EntryData &entryData, ElisaUtils::PlayListEntryType type); | ||
284 | 305 | | |||
285 | void enqueueMultipleEntries(const ElisaUtils::EntryDataList &entriesData, ElisaUtils::PlayListEntryType type); | 306 | void enqueueMultipleEntries(const ElisaUtils::EntryDataList &entriesData, ElisaUtils::PlayListEntryType type); | ||
286 | 307 | | |||
308 | void enqueueCommon(); | ||||
309 | | ||||
310 | void copyD(); | ||||
311 | | ||||
287 | std::unique_ptr<MediaPlayListPrivate> d; | 312 | std::unique_ptr<MediaPlayListPrivate> d; | ||
288 | 313 | | |||
314 | std::unique_ptr<MediaPlayListPrivate> dOld; | ||||
289 | }; | 315 | }; | ||
290 | 316 | | |||
291 | class MediaPlayListEntry | 317 | class MediaPlayListEntry | ||
292 | { | 318 | { | ||
293 | public: | 319 | public: | ||
294 | 320 | | |||
295 | MediaPlayListEntry() = default; | 321 | MediaPlayListEntry() = default; | ||
296 | 322 | | |||
297 | explicit MediaPlayListEntry(qulonglong id) : mId(id), mIsValid(true) { | 323 | explicit MediaPlayListEntry(qulonglong id) : mId(id), mIsValid(true) { | ||
298 | } | 324 | } | ||
299 | 325 | | |||
300 | MediaPlayListEntry(QString title, QString artist, QString album, int trackNumber, int discNumber) | 326 | MediaPlayListEntry(QString title, QString artist, QString album, int trackNumber, int discNumber, ElisaUtils::PlayListEntryType entryType = ElisaUtils::Unknown) | ||
301 | : mTitle(std::move(title)), mAlbum(std::move(album)), mArtist(std::move(artist)), | 327 | : mTitle(std::move(title)), mAlbum(std::move(album)), mArtist(std::move(artist)), | ||
302 | mTrackNumber(trackNumber), mDiscNumber(discNumber) { | 328 | mTrackNumber(trackNumber), mDiscNumber(discNumber), mEntryType(entryType) { | ||
303 | } | 329 | } | ||
304 | 330 | | |||
305 | explicit MediaPlayListEntry(const MusicAudioTrack &track) | 331 | explicit MediaPlayListEntry(const MusicAudioTrack &track) | ||
306 | : mTitle(track.title()), mAlbum(track.albumName()), mTrackNumber(track.trackNumber()), | 332 | : mTitle(track.title()), mAlbum(track.albumName()), mTrackNumber(track.trackNumber()), | ||
307 | mDiscNumber(track.discNumber()), mId(track.databaseId()), mIsValid(true) { | 333 | mDiscNumber(track.discNumber()), mId(track.databaseId()), mIsValid(true) { | ||
308 | } | 334 | } | ||
309 | 335 | | |||
310 | explicit MediaPlayListEntry(const MediaPlayList::TrackDataType &track) | 336 | explicit MediaPlayListEntry(const MediaPlayList::TrackDataType &track) | ||
▲ Show 20 Lines • Show All 47 Lines • Show Last 20 Lines |
Better use isUndoDisplayedInline