Changeset View
Changeset View
Standalone View
Standalone View
src/mediaplaylist.cpp
Show First 20 Lines • Show All 273 Lines • ▼ Show 20 Line(s) | 261 | if (!d->mCurrentTrack.isValid()) { | |||
---|---|---|---|---|---|
274 | } | 274 | } | ||
275 | } | 275 | } | ||
276 | 276 | | |||
277 | if (!d->mCurrentTrack.isValid() && rowCount(parent) <= row) { | 277 | if (!d->mCurrentTrack.isValid() && rowCount(parent) <= row) { | ||
278 | resetCurrentTrack(); | 278 | resetCurrentTrack(); | ||
279 | } | 279 | } | ||
280 | 280 | | |||
281 | Q_EMIT tracksCountChanged(); | 281 | Q_EMIT tracksCountChanged(); | ||
282 | Q_EMIT remainingTracksChanged(); | ||||
282 | Q_EMIT persistentStateChanged(); | 283 | Q_EMIT persistentStateChanged(); | ||
283 | 284 | | |||
284 | return false; | 285 | return false; | ||
285 | } | 286 | } | ||
286 | 287 | | |||
287 | bool MediaPlayList::moveRows(const QModelIndex &sourceParent, int sourceRow, int count, const QModelIndex &destinationParent, int destinationChild) | 288 | bool MediaPlayList::moveRows(const QModelIndex &sourceParent, int sourceRow, int count, const QModelIndex &destinationParent, int destinationChild) | ||
288 | { | 289 | { | ||
289 | if (sourceParent != destinationParent) { | 290 | if (sourceParent != destinationParent) { | ||
Show All 40 Lines | 325 | { | |||
330 | endInsertRows(); | 331 | endInsertRows(); | ||
331 | 332 | | |||
332 | restorePlayListPosition(); | 333 | restorePlayListPosition(); | ||
333 | if (!d->mCurrentTrack.isValid()) { | 334 | if (!d->mCurrentTrack.isValid()) { | ||
334 | resetCurrentTrack(); | 335 | resetCurrentTrack(); | ||
335 | } | 336 | } | ||
336 | 337 | | |||
337 | Q_EMIT tracksCountChanged(); | 338 | Q_EMIT tracksCountChanged(); | ||
339 | Q_EMIT remainingTracksChanged(); | ||||
338 | Q_EMIT persistentStateChanged(); | 340 | Q_EMIT persistentStateChanged(); | ||
339 | 341 | | |||
340 | if (!newEntry.mIsValid) { | 342 | if (!newEntry.mIsValid) { | ||
341 | if (newEntry.mTrackUrl.isValid()) { | 343 | if (newEntry.mTrackUrl.isValid()) { | ||
342 | auto entryURL = newEntry.mTrackUrl.toUrl(); | 344 | auto entryURL = newEntry.mTrackUrl.toUrl(); | ||
343 | if (entryURL.isLocalFile()) { | 345 | if (entryURL.isLocalFile()) { | ||
344 | auto entryString = entryURL.toLocalFile(); | 346 | auto entryString = entryURL.toLocalFile(); | ||
345 | QFileInfo newTrackFile(entryString); | 347 | QFileInfo newTrackFile(entryString); | ||
Show All 35 Lines | 374 | { | |||
381 | endInsertRows(); | 383 | endInsertRows(); | ||
382 | 384 | | |||
383 | restorePlayListPosition(); | 385 | restorePlayListPosition(); | ||
384 | if (!d->mCurrentTrack.isValid()) { | 386 | if (!d->mCurrentTrack.isValid()) { | ||
385 | resetCurrentTrack(); | 387 | resetCurrentTrack(); | ||
386 | } | 388 | } | ||
387 | 389 | | |||
388 | Q_EMIT tracksCountChanged(); | 390 | Q_EMIT tracksCountChanged(); | ||
391 | Q_EMIT remainingTracksChanged(); | ||||
389 | Q_EMIT newEntryInList(0, artistName, newEntry.mEntryType); | 392 | Q_EMIT newEntryInList(0, artistName, newEntry.mEntryType); | ||
390 | Q_EMIT persistentStateChanged(); | 393 | Q_EMIT persistentStateChanged(); | ||
391 | } | 394 | } | ||
392 | 395 | | |||
393 | void MediaPlayList::enqueueFilesList(const ElisaUtils::EntryDataList &newEntries) | 396 | void MediaPlayList::enqueueFilesList(const ElisaUtils::EntryDataList &newEntries) | ||
394 | { | 397 | { | ||
395 | enqueueCommon(); | 398 | enqueueCommon(); | ||
396 | 399 | | |||
Show All 18 Lines | |||||
415 | endInsertRows(); | 418 | endInsertRows(); | ||
416 | 419 | | |||
417 | restorePlayListPosition(); | 420 | restorePlayListPosition(); | ||
418 | if (!d->mCurrentTrack.isValid()) { | 421 | if (!d->mCurrentTrack.isValid()) { | ||
419 | resetCurrentTrack(); | 422 | resetCurrentTrack(); | ||
420 | } | 423 | } | ||
421 | 424 | | |||
422 | Q_EMIT tracksCountChanged(); | 425 | Q_EMIT tracksCountChanged(); | ||
426 | Q_EMIT remainingTracksChanged(); | ||||
423 | Q_EMIT persistentStateChanged(); | 427 | Q_EMIT persistentStateChanged(); | ||
424 | 428 | | |||
425 | Q_EMIT dataChanged(index(rowCount() - 1, 0), index(rowCount() - 1, 0), {MediaPlayList::IsPlayingRole}); | 429 | Q_EMIT dataChanged(index(rowCount() - 1, 0), index(rowCount() - 1, 0), {MediaPlayList::IsPlayingRole}); | ||
426 | } | 430 | } | ||
427 | 431 | | |||
428 | void MediaPlayList::enqueueTracksListById(const ElisaUtils::EntryDataList &newEntries) | 432 | void MediaPlayList::enqueueTracksListById(const ElisaUtils::EntryDataList &newEntries) | ||
429 | { | 433 | { | ||
430 | enqueueCommon(); | 434 | enqueueCommon(); | ||
431 | 435 | | |||
432 | beginInsertRows(QModelIndex(), d->mData.size(), d->mData.size() + newEntries.size() - 1); | 436 | beginInsertRows(QModelIndex(), d->mData.size(), d->mData.size() + newEntries.size() - 1); | ||
433 | for (const auto &newTrack : newEntries) { | 437 | for (const auto &newTrack : newEntries) { | ||
434 | auto newMediaPlayListEntry = MediaPlayListEntry{std::get<0>(newTrack), std::get<1>(newTrack), ElisaUtils::Track}; | 438 | auto newMediaPlayListEntry = MediaPlayListEntry{std::get<0>(newTrack), std::get<1>(newTrack), ElisaUtils::Track}; | ||
435 | d->mData.push_back(newMediaPlayListEntry); | 439 | d->mData.push_back(newMediaPlayListEntry); | ||
436 | d->mTrackData.push_back({}); | 440 | d->mTrackData.push_back({}); | ||
437 | Q_EMIT newEntryInList(newMediaPlayListEntry.mId, newMediaPlayListEntry.mTitle.toString(), newMediaPlayListEntry.mEntryType); | 441 | Q_EMIT newEntryInList(newMediaPlayListEntry.mId, newMediaPlayListEntry.mTitle.toString(), newMediaPlayListEntry.mEntryType); | ||
438 | } | 442 | } | ||
439 | endInsertRows(); | 443 | endInsertRows(); | ||
440 | 444 | | |||
441 | restorePlayListPosition(); | 445 | restorePlayListPosition(); | ||
442 | if (!d->mCurrentTrack.isValid()) { | 446 | if (!d->mCurrentTrack.isValid()) { | ||
443 | resetCurrentTrack(); | 447 | resetCurrentTrack(); | ||
444 | } | 448 | } | ||
445 | 449 | | |||
446 | Q_EMIT tracksCountChanged(); | 450 | Q_EMIT tracksCountChanged(); | ||
451 | Q_EMIT remainingTracksChanged(); | ||||
447 | Q_EMIT persistentStateChanged(); | 452 | Q_EMIT persistentStateChanged(); | ||
448 | 453 | | |||
449 | Q_EMIT dataChanged(index(rowCount() - 1, 0), index(rowCount() - 1, 0), {MediaPlayList::IsPlayingRole}); | 454 | Q_EMIT dataChanged(index(rowCount() - 1, 0), index(rowCount() - 1, 0), {MediaPlayList::IsPlayingRole}); | ||
450 | } | 455 | } | ||
451 | 456 | | |||
452 | void MediaPlayList::enqueueOneEntry(const ElisaUtils::EntryData &entryData, ElisaUtils::PlayListEntryType type) | 457 | void MediaPlayList::enqueueOneEntry(const ElisaUtils::EntryData &entryData, ElisaUtils::PlayListEntryType type) | ||
453 | { | 458 | { | ||
454 | enqueueCommon(); | 459 | enqueueCommon(); | ||
455 | 460 | | |||
456 | beginInsertRows(QModelIndex(), d->mData.size(), d->mData.size()); | 461 | beginInsertRows(QModelIndex(), d->mData.size(), d->mData.size()); | ||
457 | d->mData.push_back(MediaPlayListEntry{std::get<0>(entryData), std::get<1>(entryData), type}); | 462 | d->mData.push_back(MediaPlayListEntry{std::get<0>(entryData), std::get<1>(entryData), type}); | ||
458 | d->mTrackData.push_back({}); | 463 | d->mTrackData.push_back({}); | ||
459 | Q_EMIT newEntryInList(std::get<0>(entryData), std::get<1>(entryData), type); | 464 | Q_EMIT newEntryInList(std::get<0>(entryData), std::get<1>(entryData), type); | ||
460 | endInsertRows(); | 465 | endInsertRows(); | ||
461 | 466 | | |||
462 | Q_EMIT tracksCountChanged(); | 467 | Q_EMIT tracksCountChanged(); | ||
468 | Q_EMIT remainingTracksChanged(); | ||||
463 | Q_EMIT persistentStateChanged(); | 469 | Q_EMIT persistentStateChanged(); | ||
464 | } | 470 | } | ||
465 | 471 | | |||
466 | void MediaPlayList::enqueueMultipleEntries(const ElisaUtils::EntryDataList &entriesData, ElisaUtils::PlayListEntryType type) | 472 | void MediaPlayList::enqueueMultipleEntries(const ElisaUtils::EntryDataList &entriesData, ElisaUtils::PlayListEntryType type) | ||
467 | { | 473 | { | ||
468 | enqueueCommon(); | 474 | enqueueCommon(); | ||
469 | 475 | | |||
470 | beginInsertRows(QModelIndex(), d->mData.size(), d->mData.size() + entriesData.size() - 1); | 476 | beginInsertRows(QModelIndex(), d->mData.size(), d->mData.size() + entriesData.size() - 1); | ||
471 | for (const auto &entryData : entriesData) { | 477 | for (const auto &entryData : entriesData) { | ||
472 | d->mData.push_back(MediaPlayListEntry{std::get<0>(entryData), std::get<1>(entryData), type}); | 478 | d->mData.push_back(MediaPlayListEntry{std::get<0>(entryData), std::get<1>(entryData), type}); | ||
473 | d->mTrackData.push_back({}); | 479 | d->mTrackData.push_back({}); | ||
474 | Q_EMIT newEntryInList(std::get<0>(entryData), std::get<1>(entryData), type); | 480 | Q_EMIT newEntryInList(std::get<0>(entryData), std::get<1>(entryData), type); | ||
475 | } | 481 | } | ||
476 | endInsertRows(); | 482 | endInsertRows(); | ||
477 | 483 | | |||
478 | Q_EMIT tracksCountChanged(); | 484 | Q_EMIT tracksCountChanged(); | ||
485 | Q_EMIT remainingTracksChanged(); | ||||
479 | Q_EMIT persistentStateChanged(); | 486 | Q_EMIT persistentStateChanged(); | ||
480 | } | 487 | } | ||
481 | 488 | | |||
482 | void MediaPlayList::replaceAndPlay(const ElisaUtils::EntryData &newEntry, | 489 | void MediaPlayList::replaceAndPlay(const ElisaUtils::EntryData &newEntry, | ||
483 | ElisaUtils::PlayListEntryType databaseIdType) | 490 | ElisaUtils::PlayListEntryType databaseIdType) | ||
484 | { | 491 | { | ||
485 | enqueue(newEntry, databaseIdType, ElisaUtils::PlayListEnqueueMode::ReplacePlayList, ElisaUtils::PlayListEnqueueTriggerPlay::TriggerPlay); | 492 | enqueue(newEntry, databaseIdType, ElisaUtils::PlayListEnqueueMode::ReplacePlayList, ElisaUtils::PlayListEnqueueTriggerPlay::TriggerPlay); | ||
486 | } | 493 | } | ||
Show All 15 Lines | 496 | { | |||
502 | endRemoveRows(); | 509 | endRemoveRows(); | ||
503 | 510 | | |||
504 | d->mCurrentPlayListPosition = 0; | 511 | d->mCurrentPlayListPosition = 0; | ||
505 | d->mCurrentTrack = QPersistentModelIndex{}; | 512 | d->mCurrentTrack = QPersistentModelIndex{}; | ||
506 | notifyCurrentTrackChanged(); | 513 | notifyCurrentTrackChanged(); | ||
507 | 514 | | |||
508 | displayOrHideUndoInline(true); | 515 | displayOrHideUndoInline(true); | ||
509 | Q_EMIT tracksCountChanged(); | 516 | Q_EMIT tracksCountChanged(); | ||
517 | Q_EMIT remainingTracksChanged(); | ||||
510 | Q_EMIT persistentStateChanged(); | 518 | Q_EMIT persistentStateChanged(); | ||
511 | } | 519 | } | ||
512 | 520 | | |||
513 | void MediaPlayList::clearPlayList() | 521 | void MediaPlayList::clearPlayList() | ||
514 | { | 522 | { | ||
515 | this->clearPlayList(true); | 523 | this->clearPlayList(true); | ||
516 | } | 524 | } | ||
517 | 525 | | |||
Show All 35 Lines | 527 | { | |||
553 | auto candidateTrack = index(dOld->mCurrentPlayListPosition, 0); | 561 | auto candidateTrack = index(dOld->mCurrentPlayListPosition, 0); | ||
554 | 562 | | |||
555 | if (candidateTrack.isValid() && candidateTrack.data(ColumnsRoles::IsValidRole).toBool()) { | 563 | if (candidateTrack.isValid() && candidateTrack.data(ColumnsRoles::IsValidRole).toBool()) { | ||
556 | d->mCurrentTrack = candidateTrack; | 564 | d->mCurrentTrack = candidateTrack; | ||
557 | notifyCurrentTrackChanged(); | 565 | notifyCurrentTrackChanged(); | ||
558 | } | 566 | } | ||
559 | 567 | | |||
560 | Q_EMIT tracksCountChanged(); | 568 | Q_EMIT tracksCountChanged(); | ||
569 | Q_EMIT remainingTracksChanged(); | ||||
561 | Q_EMIT persistentStateChanged(); | 570 | Q_EMIT persistentStateChanged(); | ||
562 | 571 | | |||
563 | Q_EMIT dataChanged(index(rowCount() - 1, 0), index(rowCount() - 1, 0), {MediaPlayList::IsPlayingRole}); | 572 | Q_EMIT dataChanged(index(rowCount() - 1, 0), index(rowCount() - 1, 0), {MediaPlayList::IsPlayingRole}); | ||
564 | displayOrHideUndoInline(false); | 573 | displayOrHideUndoInline(false); | ||
565 | Q_EMIT undoClearPlayListPlayer(); | 574 | Q_EMIT undoClearPlayListPlayer(); | ||
566 | } | 575 | } | ||
567 | 576 | | |||
568 | void MediaPlayList::enqueueCommon() | 577 | void MediaPlayList::enqueueCommon() | ||
▲ Show 20 Lines • Show All 303 Lines • ▼ Show 20 Line(s) | 873 | if (tracks.size() > 1) { | |||
872 | endInsertRows(); | 881 | endInsertRows(); | ||
873 | 882 | | |||
874 | restorePlayListPosition(); | 883 | restorePlayListPosition(); | ||
875 | if (!d->mCurrentTrack.isValid()) { | 884 | if (!d->mCurrentTrack.isValid()) { | ||
876 | resetCurrentTrack(); | 885 | resetCurrentTrack(); | ||
877 | } | 886 | } | ||
878 | 887 | | |||
879 | Q_EMIT tracksCountChanged(); | 888 | Q_EMIT tracksCountChanged(); | ||
889 | Q_EMIT remainingTracksChanged(); | ||||
880 | } | 890 | } | ||
881 | Q_EMIT persistentStateChanged(); | 891 | Q_EMIT persistentStateChanged(); | ||
882 | } | 892 | } | ||
883 | } | 893 | } | ||
884 | 894 | | |||
885 | void MediaPlayList::trackChanged(const TrackDataType &track) | 895 | void MediaPlayList::trackChanged(const TrackDataType &track) | ||
886 | { | 896 | { | ||
887 | for (int i = 0; i < d->mData.size(); ++i) { | 897 | for (int i = 0; i < d->mData.size(); ++i) { | ||
▲ Show 20 Lines • Show All 59 Lines • ▼ Show 20 Line(s) | 934 | } else if (oneEntry.mEntryType != ElisaUtils::Artist && !oneEntry.mIsValid && !oneEntry.mTrackUrl.isValid()) { | |||
947 | oneEntry.mIsValid = true; | 957 | oneEntry.mIsValid = true; | ||
948 | 958 | | |||
949 | Q_EMIT dataChanged(index(i, 0), index(i, 0), {}); | 959 | Q_EMIT dataChanged(index(i, 0), index(i, 0), {}); | ||
950 | 960 | | |||
951 | restorePlayListPosition(); | 961 | restorePlayListPosition(); | ||
952 | 962 | | |||
953 | if (!d->mCurrentTrack.isValid()) { | 963 | if (!d->mCurrentTrack.isValid()) { | ||
954 | resetCurrentTrack(); | 964 | resetCurrentTrack(); | ||
965 | } else if (i == d->mCurrentTrack.row()) { | ||||
966 | 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… | |||||
955 | } | 967 | } | ||
956 | 968 | | |||
957 | break; | 969 | break; | ||
958 | } else if (oneEntry.mEntryType != ElisaUtils::Artist && !oneEntry.mIsValid && oneEntry.mTrackUrl.isValid()) { | 970 | } else if (oneEntry.mEntryType != ElisaUtils::Artist && !oneEntry.mIsValid && oneEntry.mTrackUrl.isValid()) { | ||
959 | if (track.resourceURI() != oneEntry.mTrackUrl) { | 971 | if (track.resourceURI() != oneEntry.mTrackUrl) { | ||
960 | continue; | 972 | continue; | ||
961 | } | 973 | } | ||
962 | 974 | | |||
963 | d->mTrackData[i] = track; | 975 | d->mTrackData[i] = track; | ||
964 | oneEntry.mId = track.databaseId(); | 976 | oneEntry.mId = track.databaseId(); | ||
965 | oneEntry.mIsValid = true; | 977 | oneEntry.mIsValid = true; | ||
966 | 978 | | |||
967 | Q_EMIT dataChanged(index(i, 0), index(i, 0), {}); | 979 | Q_EMIT dataChanged(index(i, 0), index(i, 0), {}); | ||
968 | 980 | | |||
969 | restorePlayListPosition(); | 981 | restorePlayListPosition(); | ||
970 | 982 | | |||
971 | if (!d->mCurrentTrack.isValid()) { | 983 | if (!d->mCurrentTrack.isValid()) { | ||
972 | resetCurrentTrack(); | 984 | resetCurrentTrack(); | ||
985 | } else if (i == d->mCurrentTrack.row()) { | ||||
986 | notifyCurrentTrackChanged(); | ||||
973 | } | 987 | } | ||
974 | 988 | | |||
975 | break; | 989 | break; | ||
976 | } | 990 | } | ||
977 | } | 991 | } | ||
978 | } | 992 | } | ||
979 | 993 | | |||
980 | void MediaPlayList::trackRemoved(qulonglong trackId) | 994 | void MediaPlayList::trackRemoved(qulonglong trackId) | ||
Show All 35 Lines | 1019 | { | |||
1016 | Q_EMIT musicListenersManagerChanged(); | 1030 | Q_EMIT musicListenersManagerChanged(); | ||
1017 | } | 1031 | } | ||
1018 | 1032 | | |||
1019 | void MediaPlayList::setRandomPlay(bool value) | 1033 | void MediaPlayList::setRandomPlay(bool value) | ||
1020 | { | 1034 | { | ||
1021 | if (d->mRandomPlay != value) { | 1035 | if (d->mRandomPlay != value) { | ||
1022 | d->mRandomPlay = value; | 1036 | d->mRandomPlay = value; | ||
1023 | Q_EMIT randomPlayChanged(); | 1037 | Q_EMIT randomPlayChanged(); | ||
1038 | Q_EMIT remainingTracksChanged(); | ||||
1024 | } | 1039 | } | ||
1025 | } | 1040 | } | ||
1026 | 1041 | | |||
1027 | void MediaPlayList::setRepeatPlay(bool value) | 1042 | void MediaPlayList::setRepeatPlay(bool value) | ||
1028 | { | 1043 | { | ||
1029 | if (d->mRepeatPlay != value) { | 1044 | if (d->mRepeatPlay != value) { | ||
1030 | d->mRepeatPlay = value; | 1045 | d->mRepeatPlay = value; | ||
1031 | Q_EMIT repeatPlayChanged(); | 1046 | Q_EMIT repeatPlayChanged(); | ||
1047 | Q_EMIT remainingTracksChanged(); | ||||
1032 | } | 1048 | } | ||
1033 | } | 1049 | } | ||
1034 | 1050 | | |||
1035 | void MediaPlayList::displayOrHideUndoInline(bool value) | 1051 | void MediaPlayList::displayOrHideUndoInline(bool value) | ||
1036 | { | 1052 | { | ||
1037 | if(value){ | 1053 | if(value){ | ||
1038 | Q_EMIT displayUndoInline(); | 1054 | Q_EMIT displayUndoInline(); | ||
1039 | }else { | 1055 | }else { | ||
▲ Show 20 Lines • Show All 132 Lines • ▼ Show 20 Line(s) | 1181 | for(int row = 0; row < rowCount(); ++row) { | |||
1172 | } | 1188 | } | ||
1173 | } | 1189 | } | ||
1174 | } | 1190 | } | ||
1175 | 1191 | | |||
1176 | void MediaPlayList::notifyCurrentTrackChanged() | 1192 | void MediaPlayList::notifyCurrentTrackChanged() | ||
1177 | { | 1193 | { | ||
1178 | Q_EMIT currentTrackChanged(d->mCurrentTrack); | 1194 | Q_EMIT currentTrackChanged(d->mCurrentTrack); | ||
1179 | Q_EMIT currentTrackRowChanged(); | 1195 | Q_EMIT currentTrackRowChanged(); | ||
1196 | Q_EMIT remainingTracksChanged(); | ||||
1180 | bool currentTrackIsValid = d->mCurrentTrack.isValid(); | 1197 | bool currentTrackIsValid = d->mCurrentTrack.isValid(); | ||
1181 | if (currentTrackIsValid) { | 1198 | if (currentTrackIsValid) { | ||
1182 | d->mCurrentPlayListPosition = d->mCurrentTrack.row(); | 1199 | d->mCurrentPlayListPosition = d->mCurrentTrack.row(); | ||
1183 | } | 1200 | } | ||
1184 | } | 1201 | } | ||
1185 | 1202 | | |||
1186 | void MediaPlayList::restorePlayListPosition() | 1203 | void MediaPlayList::restorePlayListPosition() | ||
1187 | { | 1204 | { | ||
Show All 28 Lines | |||||
1216 | } | 1233 | } | ||
1217 | 1234 | | |||
1218 | QDebug operator<<(const QDebug &stream, const MediaPlayListEntry &data) | 1235 | QDebug operator<<(const QDebug &stream, const MediaPlayListEntry &data) | ||
1219 | { | 1236 | { | ||
1220 | stream << data.mTitle << data.mAlbum << data.mArtist << data.mTrackUrl << data.mTrackNumber << data.mDiscNumber << data.mId << data.mIsValid; | 1237 | stream << data.mTitle << data.mAlbum << data.mArtist << data.mTrackUrl << data.mTrackNumber << data.mDiscNumber << data.mId << data.mIsValid; | ||
1221 | return stream; | 1238 | return stream; | ||
1222 | } | 1239 | } | ||
1223 | 1240 | | |||
1241 | int MediaPlayList::remainingTracks() const | ||||
1242 | { | ||||
1243 | if (!d->mCurrentTrack.isValid()) { | ||||
1244 | return -1; | ||||
1245 | } | ||||
1246 | | ||||
1247 | if (d->mRandomPlay || d->mRepeatPlay) { | ||||
1248 | return -1; | ||||
1249 | } else { | ||||
mgallien: Code style | |||||
1250 | return rowCount() - d->mCurrentTrack.row() - 1; | ||||
1251 | } | ||||
1252 | } | ||||
1253 | | ||||
1224 | #include "moc_mediaplaylist.cpp" | 1254 | #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.