Changeset View
Changeset View
Standalone View
Standalone View
src/mediaplaylist.cpp
Show First 20 Lines • Show All 299 Lines • ▼ Show 20 Line(s) | 287 | if (!d->mCurrentTrack.isValid()) { | |||
---|---|---|---|---|---|
300 | } | 300 | } | ||
301 | } | 301 | } | ||
302 | 302 | | |||
303 | if (!d->mCurrentTrack.isValid() && rowCount(parent) <= row) { | 303 | if (!d->mCurrentTrack.isValid() && rowCount(parent) <= row) { | ||
304 | resetCurrentTrack(); | 304 | resetCurrentTrack(); | ||
305 | } | 305 | } | ||
306 | 306 | | |||
307 | Q_EMIT tracksCountChanged(); | 307 | Q_EMIT tracksCountChanged(); | ||
308 | Q_EMIT remainingTracksChanged(); | ||||
308 | Q_EMIT persistentStateChanged(); | 309 | Q_EMIT persistentStateChanged(); | ||
309 | 310 | | |||
310 | return false; | 311 | return false; | ||
311 | } | 312 | } | ||
312 | 313 | | |||
313 | bool MediaPlayList::moveRows(const QModelIndex &sourceParent, int sourceRow, int count, const QModelIndex &destinationParent, int destinationChild) | 314 | bool MediaPlayList::moveRows(const QModelIndex &sourceParent, int sourceRow, int count, const QModelIndex &destinationParent, int destinationChild) | ||
314 | { | 315 | { | ||
315 | if (sourceParent != destinationParent) { | 316 | if (sourceParent != destinationParent) { | ||
Show All 40 Lines | 351 | { | |||
356 | endInsertRows(); | 357 | endInsertRows(); | ||
357 | 358 | | |||
358 | restorePlayListPosition(); | 359 | restorePlayListPosition(); | ||
359 | if (!d->mCurrentTrack.isValid()) { | 360 | if (!d->mCurrentTrack.isValid()) { | ||
360 | resetCurrentTrack(); | 361 | resetCurrentTrack(); | ||
361 | } | 362 | } | ||
362 | 363 | | |||
363 | Q_EMIT tracksCountChanged(); | 364 | Q_EMIT tracksCountChanged(); | ||
365 | Q_EMIT remainingTracksChanged(); | ||||
364 | Q_EMIT persistentStateChanged(); | 366 | Q_EMIT persistentStateChanged(); | ||
365 | 367 | | |||
366 | if (!newEntry.mIsValid) { | 368 | if (!newEntry.mIsValid) { | ||
367 | if (newEntry.mEntryType == ElisaUtils::Radio) { | 369 | if (newEntry.mEntryType == ElisaUtils::Radio) { | ||
368 | Q_EMIT newEntryInList(newEntry.mId, {}, ElisaUtils::Radio); | 370 | Q_EMIT newEntryInList(newEntry.mId, {}, ElisaUtils::Radio); | ||
369 | } else if (newEntry.mTrackUrl.isValid()) { | 371 | } else if (newEntry.mTrackUrl.isValid()) { | ||
370 | auto entryURL = newEntry.mTrackUrl.toUrl(); | 372 | auto entryURL = newEntry.mTrackUrl.toUrl(); | ||
371 | if (entryURL.isLocalFile()) { | 373 | if (entryURL.isLocalFile()) { | ||
Show All 37 Lines | 402 | { | |||
409 | endInsertRows(); | 411 | endInsertRows(); | ||
410 | 412 | | |||
411 | restorePlayListPosition(); | 413 | restorePlayListPosition(); | ||
412 | if (!d->mCurrentTrack.isValid()) { | 414 | if (!d->mCurrentTrack.isValid()) { | ||
413 | resetCurrentTrack(); | 415 | resetCurrentTrack(); | ||
414 | } | 416 | } | ||
415 | 417 | | |||
416 | Q_EMIT tracksCountChanged(); | 418 | Q_EMIT tracksCountChanged(); | ||
419 | Q_EMIT remainingTracksChanged(); | ||||
417 | Q_EMIT newEntryInList(0, artistName, newEntry.mEntryType); | 420 | Q_EMIT newEntryInList(0, artistName, newEntry.mEntryType); | ||
418 | Q_EMIT persistentStateChanged(); | 421 | Q_EMIT persistentStateChanged(); | ||
419 | } | 422 | } | ||
420 | 423 | | |||
421 | void MediaPlayList::enqueueFilesList(const ElisaUtils::EntryDataList &newEntries) | 424 | void MediaPlayList::enqueueFilesList(const ElisaUtils::EntryDataList &newEntries) | ||
422 | { | 425 | { | ||
423 | enqueueCommon(); | 426 | enqueueCommon(); | ||
424 | 427 | | |||
Show All 18 Lines | |||||
443 | endInsertRows(); | 446 | endInsertRows(); | ||
444 | 447 | | |||
445 | restorePlayListPosition(); | 448 | restorePlayListPosition(); | ||
446 | if (!d->mCurrentTrack.isValid()) { | 449 | if (!d->mCurrentTrack.isValid()) { | ||
447 | resetCurrentTrack(); | 450 | resetCurrentTrack(); | ||
448 | } | 451 | } | ||
449 | 452 | | |||
450 | Q_EMIT tracksCountChanged(); | 453 | Q_EMIT tracksCountChanged(); | ||
454 | Q_EMIT remainingTracksChanged(); | ||||
451 | Q_EMIT persistentStateChanged(); | 455 | Q_EMIT persistentStateChanged(); | ||
452 | 456 | | |||
453 | Q_EMIT dataChanged(index(rowCount() - 1, 0), index(rowCount() - 1, 0), {MediaPlayList::IsPlayingRole}); | 457 | Q_EMIT dataChanged(index(rowCount() - 1, 0), index(rowCount() - 1, 0), {MediaPlayList::IsPlayingRole}); | ||
454 | } | 458 | } | ||
455 | 459 | | |||
456 | void MediaPlayList::enqueueTracksListById(const ElisaUtils::EntryDataList &newEntries, ElisaUtils::PlayListEntryType type) | 460 | void MediaPlayList::enqueueTracksListById(const ElisaUtils::EntryDataList &newEntries, ElisaUtils::PlayListEntryType type) | ||
457 | { | 461 | { | ||
458 | enqueueCommon(); | 462 | enqueueCommon(); | ||
459 | 463 | | |||
460 | beginInsertRows(QModelIndex(), d->mData.size(), d->mData.size() + newEntries.size() - 1); | 464 | beginInsertRows(QModelIndex(), d->mData.size(), d->mData.size() + newEntries.size() - 1); | ||
461 | for (const auto &newTrack : newEntries) { | 465 | for (const auto &newTrack : newEntries) { | ||
462 | auto newMediaPlayListEntry = MediaPlayListEntry{std::get<0>(newTrack), std::get<1>(newTrack), type}; | 466 | auto newMediaPlayListEntry = MediaPlayListEntry{std::get<0>(newTrack), std::get<1>(newTrack), type}; | ||
463 | d->mData.push_back(newMediaPlayListEntry); | 467 | d->mData.push_back(newMediaPlayListEntry); | ||
464 | d->mTrackData.push_back({}); | 468 | d->mTrackData.push_back({}); | ||
465 | Q_EMIT newEntryInList(newMediaPlayListEntry.mId, newMediaPlayListEntry.mTitle.toString(), newMediaPlayListEntry.mEntryType); | 469 | Q_EMIT newEntryInList(newMediaPlayListEntry.mId, newMediaPlayListEntry.mTitle.toString(), newMediaPlayListEntry.mEntryType); | ||
466 | } | 470 | } | ||
467 | endInsertRows(); | 471 | endInsertRows(); | ||
468 | 472 | | |||
469 | restorePlayListPosition(); | 473 | restorePlayListPosition(); | ||
470 | if (!d->mCurrentTrack.isValid()) { | 474 | if (!d->mCurrentTrack.isValid()) { | ||
471 | resetCurrentTrack(); | 475 | resetCurrentTrack(); | ||
472 | } | 476 | } | ||
473 | 477 | | |||
474 | Q_EMIT tracksCountChanged(); | 478 | Q_EMIT tracksCountChanged(); | ||
479 | Q_EMIT remainingTracksChanged(); | ||||
475 | Q_EMIT persistentStateChanged(); | 480 | Q_EMIT persistentStateChanged(); | ||
476 | 481 | | |||
477 | Q_EMIT dataChanged(index(rowCount() - 1, 0), index(rowCount() - 1, 0), {MediaPlayList::IsPlayingRole}); | 482 | Q_EMIT dataChanged(index(rowCount() - 1, 0), index(rowCount() - 1, 0), {MediaPlayList::IsPlayingRole}); | ||
478 | } | 483 | } | ||
479 | 484 | | |||
480 | void MediaPlayList::enqueueOneEntry(const ElisaUtils::EntryData &entryData, ElisaUtils::PlayListEntryType type) | 485 | void MediaPlayList::enqueueOneEntry(const ElisaUtils::EntryData &entryData, ElisaUtils::PlayListEntryType type) | ||
481 | { | 486 | { | ||
482 | enqueueCommon(); | 487 | enqueueCommon(); | ||
483 | 488 | | |||
484 | beginInsertRows(QModelIndex(), d->mData.size(), d->mData.size()); | 489 | beginInsertRows(QModelIndex(), d->mData.size(), d->mData.size()); | ||
485 | d->mData.push_back(MediaPlayListEntry{std::get<0>(entryData), std::get<1>(entryData), type}); | 490 | d->mData.push_back(MediaPlayListEntry{std::get<0>(entryData), std::get<1>(entryData), type}); | ||
486 | d->mTrackData.push_back({}); | 491 | d->mTrackData.push_back({}); | ||
487 | Q_EMIT newEntryInList(std::get<0>(entryData), std::get<1>(entryData), type); | 492 | Q_EMIT newEntryInList(std::get<0>(entryData), std::get<1>(entryData), type); | ||
488 | endInsertRows(); | 493 | endInsertRows(); | ||
489 | 494 | | |||
490 | Q_EMIT tracksCountChanged(); | 495 | Q_EMIT tracksCountChanged(); | ||
496 | Q_EMIT remainingTracksChanged(); | ||||
491 | Q_EMIT persistentStateChanged(); | 497 | Q_EMIT persistentStateChanged(); | ||
492 | } | 498 | } | ||
493 | 499 | | |||
494 | void MediaPlayList::enqueueMultipleEntries(const ElisaUtils::EntryDataList &entriesData, ElisaUtils::PlayListEntryType type) | 500 | void MediaPlayList::enqueueMultipleEntries(const ElisaUtils::EntryDataList &entriesData, ElisaUtils::PlayListEntryType type) | ||
495 | { | 501 | { | ||
496 | enqueueCommon(); | 502 | enqueueCommon(); | ||
497 | 503 | | |||
498 | beginInsertRows(QModelIndex(), d->mData.size(), d->mData.size() + entriesData.size() - 1); | 504 | beginInsertRows(QModelIndex(), d->mData.size(), d->mData.size() + entriesData.size() - 1); | ||
499 | for (const auto &entryData : entriesData) { | 505 | for (const auto &entryData : entriesData) { | ||
500 | d->mData.push_back(MediaPlayListEntry{std::get<0>(entryData), std::get<1>(entryData), type}); | 506 | d->mData.push_back(MediaPlayListEntry{std::get<0>(entryData), std::get<1>(entryData), type}); | ||
501 | d->mTrackData.push_back({}); | 507 | d->mTrackData.push_back({}); | ||
502 | Q_EMIT newEntryInList(std::get<0>(entryData), std::get<1>(entryData), type); | 508 | Q_EMIT newEntryInList(std::get<0>(entryData), std::get<1>(entryData), type); | ||
503 | } | 509 | } | ||
504 | endInsertRows(); | 510 | endInsertRows(); | ||
505 | 511 | | |||
506 | Q_EMIT tracksCountChanged(); | 512 | Q_EMIT tracksCountChanged(); | ||
513 | Q_EMIT remainingTracksChanged(); | ||||
507 | Q_EMIT persistentStateChanged(); | 514 | Q_EMIT persistentStateChanged(); | ||
508 | } | 515 | } | ||
509 | 516 | | |||
510 | void MediaPlayList::replaceAndPlay(const ElisaUtils::EntryData &newEntry, | 517 | void MediaPlayList::replaceAndPlay(const ElisaUtils::EntryData &newEntry, | ||
511 | ElisaUtils::PlayListEntryType databaseIdType) | 518 | ElisaUtils::PlayListEntryType databaseIdType) | ||
512 | { | 519 | { | ||
513 | enqueue(newEntry, databaseIdType, ElisaUtils::PlayListEnqueueMode::ReplacePlayList, ElisaUtils::PlayListEnqueueTriggerPlay::TriggerPlay); | 520 | enqueue(newEntry, databaseIdType, ElisaUtils::PlayListEnqueueMode::ReplacePlayList, ElisaUtils::PlayListEnqueueTriggerPlay::TriggerPlay); | ||
514 | } | 521 | } | ||
Show All 15 Lines | 524 | { | |||
530 | endRemoveRows(); | 537 | endRemoveRows(); | ||
531 | 538 | | |||
532 | d->mCurrentPlayListPosition = 0; | 539 | d->mCurrentPlayListPosition = 0; | ||
533 | d->mCurrentTrack = QPersistentModelIndex{}; | 540 | d->mCurrentTrack = QPersistentModelIndex{}; | ||
534 | notifyCurrentTrackChanged(); | 541 | notifyCurrentTrackChanged(); | ||
535 | 542 | | |||
536 | displayOrHideUndoInline(true); | 543 | displayOrHideUndoInline(true); | ||
537 | Q_EMIT tracksCountChanged(); | 544 | Q_EMIT tracksCountChanged(); | ||
545 | Q_EMIT remainingTracksChanged(); | ||||
538 | Q_EMIT persistentStateChanged(); | 546 | Q_EMIT persistentStateChanged(); | ||
539 | } | 547 | } | ||
540 | 548 | | |||
541 | void MediaPlayList::clearPlayList() | 549 | void MediaPlayList::clearPlayList() | ||
542 | { | 550 | { | ||
543 | this->clearPlayList(true); | 551 | this->clearPlayList(true); | ||
544 | } | 552 | } | ||
545 | 553 | | |||
Show All 35 Lines | 555 | { | |||
581 | auto candidateTrack = index(dOld->mCurrentPlayListPosition, 0); | 589 | auto candidateTrack = index(dOld->mCurrentPlayListPosition, 0); | ||
582 | 590 | | |||
583 | if (candidateTrack.isValid() && candidateTrack.data(ColumnsRoles::IsValidRole).toBool()) { | 591 | if (candidateTrack.isValid() && candidateTrack.data(ColumnsRoles::IsValidRole).toBool()) { | ||
584 | d->mCurrentTrack = candidateTrack; | 592 | d->mCurrentTrack = candidateTrack; | ||
585 | notifyCurrentTrackChanged(); | 593 | notifyCurrentTrackChanged(); | ||
586 | } | 594 | } | ||
587 | 595 | | |||
588 | Q_EMIT tracksCountChanged(); | 596 | Q_EMIT tracksCountChanged(); | ||
597 | Q_EMIT remainingTracksChanged(); | ||||
589 | Q_EMIT persistentStateChanged(); | 598 | Q_EMIT persistentStateChanged(); | ||
590 | 599 | | |||
591 | Q_EMIT dataChanged(index(rowCount() - 1, 0), index(rowCount() - 1, 0), {MediaPlayList::IsPlayingRole}); | 600 | Q_EMIT dataChanged(index(rowCount() - 1, 0), index(rowCount() - 1, 0), {MediaPlayList::IsPlayingRole}); | ||
592 | displayOrHideUndoInline(false); | 601 | displayOrHideUndoInline(false); | ||
593 | Q_EMIT undoClearPlayListPlayer(); | 602 | Q_EMIT undoClearPlayListPlayer(); | ||
594 | } | 603 | } | ||
595 | 604 | | |||
596 | void MediaPlayList::updateRadioData(const QVariant &value, int role) | 605 | void MediaPlayList::updateRadioData(const QVariant &value, int role) | ||
▲ Show 20 Lines • Show All 315 Lines • ▼ Show 20 Line(s) | 913 | if (tracks.size() > 1) { | |||
912 | endInsertRows(); | 921 | endInsertRows(); | ||
913 | 922 | | |||
914 | restorePlayListPosition(); | 923 | restorePlayListPosition(); | ||
915 | if (!d->mCurrentTrack.isValid()) { | 924 | if (!d->mCurrentTrack.isValid()) { | ||
916 | resetCurrentTrack(); | 925 | resetCurrentTrack(); | ||
917 | } | 926 | } | ||
918 | 927 | | |||
919 | Q_EMIT tracksCountChanged(); | 928 | Q_EMIT tracksCountChanged(); | ||
929 | Q_EMIT remainingTracksChanged(); | ||||
920 | } | 930 | } | ||
921 | Q_EMIT persistentStateChanged(); | 931 | Q_EMIT persistentStateChanged(); | ||
922 | } | 932 | } | ||
923 | } | 933 | } | ||
924 | 934 | | |||
925 | void MediaPlayList::trackChanged(const TrackDataType &track) | 935 | void MediaPlayList::trackChanged(const TrackDataType &track) | ||
926 | { | 936 | { | ||
927 | for (int i = 0; i < d->mData.size(); ++i) { | 937 | for (int i = 0; i < d->mData.size(); ++i) { | ||
▲ Show 20 Lines • Show All 77 Lines • ▼ Show 20 Line(s) | 992 | } else if (oneEntry.mEntryType != ElisaUtils::Artist && !oneEntry.mIsValid && !oneEntry.mTrackUrl.isValid()) { | |||
1005 | oneEntry.mIsValid = true; | 1015 | oneEntry.mIsValid = true; | ||
1006 | 1016 | | |||
1007 | Q_EMIT dataChanged(index(i, 0), index(i, 0), {}); | 1017 | Q_EMIT dataChanged(index(i, 0), index(i, 0), {}); | ||
1008 | 1018 | | |||
1009 | restorePlayListPosition(); | 1019 | restorePlayListPosition(); | ||
1010 | 1020 | | |||
1011 | if (!d->mCurrentTrack.isValid()) { | 1021 | if (!d->mCurrentTrack.isValid()) { | ||
1012 | resetCurrentTrack(); | 1022 | resetCurrentTrack(); | ||
1023 | } else if (i == d->mCurrentTrack.row()) { | ||||
1024 | notifyCurrentTrackChanged(); | ||||
mgallien: What is the purpose of this ?
I do not understand why this change is needed and fear that this… | |||||
The current index needs to be re-emitted after current track has changed. The index will stay the same, but the data has changed. So we need to signal the manageHeaderBar to reload. astippich: The current index needs to be re-emitted after current track has changed. The index will stay… | |||||
1013 | } | 1025 | } | ||
1014 | 1026 | | |||
1015 | break; | 1027 | break; | ||
1016 | } else if (oneEntry.mEntryType != ElisaUtils::Artist && !oneEntry.mIsValid && oneEntry.mTrackUrl.isValid()) { | 1028 | } else if (oneEntry.mEntryType != ElisaUtils::Artist && !oneEntry.mIsValid && oneEntry.mTrackUrl.isValid()) { | ||
1017 | if (track.resourceURI() != oneEntry.mTrackUrl) { | 1029 | if (track.resourceURI() != oneEntry.mTrackUrl) { | ||
1018 | continue; | 1030 | continue; | ||
1019 | } | 1031 | } | ||
1020 | 1032 | | |||
1021 | d->mTrackData[i] = track; | 1033 | d->mTrackData[i] = track; | ||
1022 | oneEntry.mId = track.databaseId(); | 1034 | oneEntry.mId = track.databaseId(); | ||
1023 | oneEntry.mIsValid = true; | 1035 | oneEntry.mIsValid = true; | ||
1024 | 1036 | | |||
1025 | Q_EMIT dataChanged(index(i, 0), index(i, 0), {}); | 1037 | Q_EMIT dataChanged(index(i, 0), index(i, 0), {}); | ||
1026 | 1038 | | |||
1027 | restorePlayListPosition(); | 1039 | restorePlayListPosition(); | ||
1028 | 1040 | | |||
1029 | if (!d->mCurrentTrack.isValid()) { | 1041 | if (!d->mCurrentTrack.isValid()) { | ||
1030 | resetCurrentTrack(); | 1042 | resetCurrentTrack(); | ||
1043 | } else if (i == d->mCurrentTrack.row()) { | ||||
1044 | notifyCurrentTrackChanged(); | ||||
1031 | } | 1045 | } | ||
1032 | 1046 | | |||
1033 | break; | 1047 | break; | ||
1034 | } | 1048 | } | ||
1035 | } | 1049 | } | ||
1036 | } | 1050 | } | ||
1037 | 1051 | | |||
1038 | void MediaPlayList::trackRemoved(qulonglong trackId) | 1052 | void MediaPlayList::trackRemoved(qulonglong trackId) | ||
Show All 35 Lines | 1077 | { | |||
1074 | Q_EMIT musicListenersManagerChanged(); | 1088 | Q_EMIT musicListenersManagerChanged(); | ||
1075 | } | 1089 | } | ||
1076 | 1090 | | |||
1077 | void MediaPlayList::setRandomPlay(bool value) | 1091 | void MediaPlayList::setRandomPlay(bool value) | ||
1078 | { | 1092 | { | ||
1079 | if (d->mRandomPlay != value) { | 1093 | if (d->mRandomPlay != value) { | ||
1080 | d->mRandomPlay = value; | 1094 | d->mRandomPlay = value; | ||
1081 | Q_EMIT randomPlayChanged(); | 1095 | Q_EMIT randomPlayChanged(); | ||
1096 | Q_EMIT remainingTracksChanged(); | ||||
1082 | } | 1097 | } | ||
1083 | } | 1098 | } | ||
1084 | 1099 | | |||
1085 | void MediaPlayList::setRepeatPlay(bool value) | 1100 | void MediaPlayList::setRepeatPlay(bool value) | ||
1086 | { | 1101 | { | ||
1087 | if (d->mRepeatPlay != value) { | 1102 | if (d->mRepeatPlay != value) { | ||
1088 | d->mRepeatPlay = value; | 1103 | d->mRepeatPlay = value; | ||
1089 | Q_EMIT repeatPlayChanged(); | 1104 | Q_EMIT repeatPlayChanged(); | ||
1105 | Q_EMIT remainingTracksChanged(); | ||||
1090 | } | 1106 | } | ||
1091 | } | 1107 | } | ||
1092 | 1108 | | |||
1093 | void MediaPlayList::displayOrHideUndoInline(bool value) | 1109 | void MediaPlayList::displayOrHideUndoInline(bool value) | ||
1094 | { | 1110 | { | ||
1095 | if(value){ | 1111 | if(value){ | ||
1096 | Q_EMIT displayUndoInline(); | 1112 | Q_EMIT displayUndoInline(); | ||
1097 | }else { | 1113 | }else { | ||
▲ Show 20 Lines • Show All 132 Lines • ▼ Show 20 Line(s) | 1239 | for(int row = 0; row < rowCount(); ++row) { | |||
1230 | } | 1246 | } | ||
1231 | } | 1247 | } | ||
1232 | } | 1248 | } | ||
1233 | 1249 | | |||
1234 | void MediaPlayList::notifyCurrentTrackChanged() | 1250 | void MediaPlayList::notifyCurrentTrackChanged() | ||
1235 | { | 1251 | { | ||
1236 | Q_EMIT currentTrackChanged(d->mCurrentTrack); | 1252 | Q_EMIT currentTrackChanged(d->mCurrentTrack); | ||
1237 | Q_EMIT currentTrackRowChanged(); | 1253 | Q_EMIT currentTrackRowChanged(); | ||
1254 | Q_EMIT remainingTracksChanged(); | ||||
1238 | bool currentTrackIsValid = d->mCurrentTrack.isValid(); | 1255 | bool currentTrackIsValid = d->mCurrentTrack.isValid(); | ||
1239 | if (currentTrackIsValid) { | 1256 | if (currentTrackIsValid) { | ||
1240 | d->mCurrentPlayListPosition = d->mCurrentTrack.row(); | 1257 | d->mCurrentPlayListPosition = d->mCurrentTrack.row(); | ||
1241 | } | 1258 | } | ||
1242 | } | 1259 | } | ||
1243 | 1260 | | |||
1244 | void MediaPlayList::restorePlayListPosition() | 1261 | void MediaPlayList::restorePlayListPosition() | ||
1245 | { | 1262 | { | ||
Show All 28 Lines | |||||
1274 | } | 1291 | } | ||
1275 | 1292 | | |||
1276 | QDebug operator<<(const QDebug &stream, const MediaPlayListEntry &data) | 1293 | QDebug operator<<(const QDebug &stream, const MediaPlayListEntry &data) | ||
1277 | { | 1294 | { | ||
1278 | stream << data.mTitle << data.mAlbum << data.mArtist << data.mTrackUrl << data.mTrackNumber << data.mDiscNumber << data.mId << data.mIsValid; | 1295 | stream << data.mTitle << data.mAlbum << data.mArtist << data.mTrackUrl << data.mTrackNumber << data.mDiscNumber << data.mId << data.mIsValid; | ||
1279 | return stream; | 1296 | return stream; | ||
1280 | } | 1297 | } | ||
1281 | 1298 | | |||
1299 | int MediaPlayList::remainingTracks() const | ||||
1300 | { | ||||
1301 | if (!d->mCurrentTrack.isValid()) { | ||||
1302 | return -1; | ||||
1303 | } | ||||
1304 | | ||||
1305 | if (d->mRandomPlay || d->mRepeatPlay) { | ||||
1306 | return -1; | ||||
1307 | } else { | ||||
mgallien: Code style | |||||
1308 | return rowCount() - d->mCurrentTrack.row() - 1; | ||||
1309 | } | ||||
1310 | } | ||||
1311 | | ||||
1282 | #include "moc_mediaplaylist.cpp" | 1312 | #include "moc_mediaplaylist.cpp" |
What is the purpose of this ?
I do not understand why this change is needed and fear that this will introduce a loop.