aboutsummaryrefslogtreecommitdiff
path: root/src/qmmpui/playlistmodel.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-08-05 14:58:33 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-08-05 14:58:33 +0000
commit039a1be234e0da4c33d1b12602ff4c3f0c85cc23 (patch)
tree499e9a23309bf28ec7116f6c7241481cc66c803f /src/qmmpui/playlistmodel.cpp
parentd1d915ea7dbb89f0f5b15cdb27c18765102696ce (diff)
downloadqmmp-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.cpp52
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()