aboutsummaryrefslogtreecommitdiff
path: root/src
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
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')
-rw-r--r--src/qmmpui/playlistcontainer.cpp6
-rw-r--r--src/qmmpui/playlistcontainer.h1
-rw-r--r--src/qmmpui/playlistmanager.cpp2
-rw-r--r--src/qmmpui/playlistmodel.cpp52
-rw-r--r--src/qmmpui/playlistmodel.h2
5 files changed, 53 insertions, 10 deletions
diff --git a/src/qmmpui/playlistcontainer.cpp b/src/qmmpui/playlistcontainer.cpp
index ea308d41f..7c3a5df6f 100644
--- a/src/qmmpui/playlistcontainer.cpp
+++ b/src/qmmpui/playlistcontainer.cpp
@@ -183,6 +183,12 @@ void PlayListContainer::removeTrack(PlayListTrack *track)
}
}
+void PlayListContainer::removeTracks(QList<PlayListTrack *> tracks)
+{
+ foreach(PlayListTrack *t, tracks)
+ removeTrack(t);
+}
+
void PlayListContainer::clear()
{
while(!m_groups.isEmpty())
diff --git a/src/qmmpui/playlistcontainer.h b/src/qmmpui/playlistcontainer.h
index 1d400a9f2..4818ebf4d 100644
--- a/src/qmmpui/playlistcontainer.h
+++ b/src/qmmpui/playlistcontainer.h
@@ -53,6 +53,7 @@ public:
void removeTrack(int index);
void removeTrack(PlayListTrack *track);
+ void removeTracks(QList<PlayListTrack *> tracks);
void clear();
diff --git a/src/qmmpui/playlistmanager.cpp b/src/qmmpui/playlistmanager.cpp
index 64ee23261..2c30dc540 100644
--- a/src/qmmpui/playlistmanager.cpp
+++ b/src/qmmpui/playlistmanager.cpp
@@ -468,7 +468,7 @@ void PlayListManager::addToQueue()
void PlayListManager::removeInvalidItems()
{
- m_selected->removeInvalidItems();
+ m_selected->removeInvalidTracks();
}
void PlayListManager::removeDuplicates()
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()
diff --git a/src/qmmpui/playlistmodel.h b/src/qmmpui/playlistmodel.h
index f0929d196..743c985b6 100644
--- a/src/qmmpui/playlistmodel.h
+++ b/src/qmmpui/playlistmodel.h
@@ -396,7 +396,7 @@ public slots:
/*!
* Removes invalid items from playlist
*/
- void removeInvalidItems();
+ void removeInvalidTracks();
/*!
* Removes duplicate items by URL.
*/