diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2013-08-05 14:58:33 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2013-08-05 14:58:33 +0000 |
| commit | 039a1be234e0da4c33d1b12602ff4c3f0c85cc23 (patch) | |
| tree | 499e9a23309bf28ec7116f6c7241481cc66c803f /src/qmmpui/playlistmodel.cpp | |
| parent | d1d915ea7dbb89f0f5b15cdb27c18765102696ce (diff) | |
| download | qmmp-039a1be234e0da4c33d1b12602ff4c3f0c85cc23.tar.gz qmmp-039a1be234e0da4c33d1b12602ff4c3f0c85cc23.tar.bz2 qmmp-039a1be234e0da4c33d1b12602ff4c3f0c85cc23.zip | |
enabled 'remove invalid tracks' option
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@3569 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/qmmpui/playlistmodel.cpp')
| -rw-r--r-- | src/qmmpui/playlistmodel.cpp | 52 |
1 files changed, 44 insertions, 8 deletions
diff --git a/src/qmmpui/playlistmodel.cpp b/src/qmmpui/playlistmodel.cpp index b7a1bdcee..66584f512 100644 --- a/src/qmmpui/playlistmodel.cpp +++ b/src/qmmpui/playlistmodel.cpp @@ -930,18 +930,54 @@ void PlayListModel::preparePlayState() m_play_state->prepare(); } -void PlayListModel::removeInvalidItems() +void PlayListModel::removeInvalidTracks() { - /*foreach(PlayListItem *item, m_items) + QList<PlayListTrack *> invalid_tracks; + bool ok = false; + for(int i = 0; m_container.count(); ++i) { - bool ok = false; - if(!item->url().contains("://")) - ok = MetaDataManager::instance()->supports(item->url()); + PlayListTrack *track = m_container.track(i); + if(!track) + continue; + + if(track->url().contains("://")) + ok = MetaDataManager::instance()->protocols().contains(track->url().section("://",0,0)); else - ok = MetaDataManager::instance()->protocols().contains(item->url().section("://",0,0)); + ok = MetaDataManager::instance()->supports(track->url()); if(!ok) - removeItem(item); - }*/ + { + invalid_tracks.append(track); + m_queued_songs.removeAll(track); + if(track == m_stop_track) + m_stop_track = 0; + } + } + if(!invalid_tracks.isEmpty()) + { + m_container.removeTracks(invalid_tracks); + if(invalid_tracks.contains(m_current_track)) + { + m_current = qMin(m_container.count() - 1, m_current); + if(!isTrack(m_current)) + m_current++; + m_current_track = m_container.track(m_current); + emit currentChanged(); + } + else if(m_container.isEmpty()) + { + m_current = -1; + m_current_track = 0; + emit currentChanged(); + } + else if(m_current != m_container.indexOf(m_current_track)) + { + emit currentChanged(); + } + + qDeleteAll(invalid_tracks); + emit listChanged(); + emit countChanged(); + } } void PlayListModel::removeDuplicates() |
