aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-08-06 11:49:19 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-08-06 11:49:19 +0000
commit0400576a8c05ad71c7d3a8b0d411da970704643a (patch)
treed661b5e2e664cd346ebb17b962d1bb9112433e2c
parent039a1be234e0da4c33d1b12602ff4c3f0c85cc23 (diff)
downloadqmmp-0400576a8c05ad71c7d3a8b0d411da970704643a.tar.gz
qmmp-0400576a8c05ad71c7d3a8b0d411da970704643a.tar.bz2
qmmp-0400576a8c05ad71c7d3a8b0d411da970704643a.zip
fixed several playlist functions
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@3570 90c681e8-e032-0410-971d-27865f9a5e38
-rw-r--r--src/plugins/Ui/skinned/playlist.cpp2
-rw-r--r--src/qmmpui/playlistcontainer.cpp4
-rw-r--r--src/qmmpui/playlistcontainer.h2
-rw-r--r--src/qmmpui/playlistmanager.cpp8
-rw-r--r--src/qmmpui/playlistmanager.h6
-rw-r--r--src/qmmpui/playlistmodel.cpp67
-rw-r--r--src/qmmpui/playlistmodel.h2
7 files changed, 35 insertions, 56 deletions
diff --git a/src/plugins/Ui/skinned/playlist.cpp b/src/plugins/Ui/skinned/playlist.cpp
index 57ca57550..73aebc510 100644
--- a/src/plugins/Ui/skinned/playlist.cpp
+++ b/src/plugins/Ui/skinned/playlist.cpp
@@ -196,7 +196,7 @@ void PlayList::createActions()
SLOT(removeUnselected())));
m_subMenu->addSeparator();
m_subMenu->addAction(SET_ACTION(ActionManager::PL_REMOVE_INVALID, m_pl_manager,
- SLOT(removeInvalidItems())));
+ SLOT(removeInvalidTracks())));
m_subMenu->addAction(SET_ACTION(ActionManager::PL_REMOVE_DUPLICATES, m_pl_manager,
SLOT(removeDuplicates())));
//sort menu
diff --git a/src/qmmpui/playlistcontainer.cpp b/src/qmmpui/playlistcontainer.cpp
index 7c3a5df6f..c8d39a358 100644
--- a/src/qmmpui/playlistcontainer.cpp
+++ b/src/qmmpui/playlistcontainer.cpp
@@ -128,9 +128,9 @@ PlayListTrack *PlayListContainer::track(int index) const
return dynamic_cast<PlayListTrack *> (i);
}
-bool PlayListContainer::contains(PlayListItem *track) const
+bool PlayListContainer::contains(PlayListItem *item) const
{
- return m_items.contains(track);
+ return m_items.contains(item);
}
int PlayListContainer::numberOfTrack(int index) const
diff --git a/src/qmmpui/playlistcontainer.h b/src/qmmpui/playlistcontainer.h
index 4818ebf4d..bbbf4d3df 100644
--- a/src/qmmpui/playlistcontainer.h
+++ b/src/qmmpui/playlistcontainer.h
@@ -48,7 +48,7 @@ public:
int indexOf(PlayListItem *item) const;
PlayListItem *item(int index) const;
PlayListTrack *track(int index) const;
- bool contains(PlayListItem *track) const;
+ bool contains(PlayListItem *item) const;
int numberOfTrack(int index) const;
void removeTrack(int index);
diff --git a/src/qmmpui/playlistmanager.cpp b/src/qmmpui/playlistmanager.cpp
index 2c30dc540..d9f0f5cb3 100644
--- a/src/qmmpui/playlistmanager.cpp
+++ b/src/qmmpui/playlistmanager.cpp
@@ -411,14 +411,14 @@ void PlayListManager::removeUnselected()
m_selected->removeUnselected();
}
-void PlayListManager::removeAt (int i)
+void PlayListManager::removeTrack (int i)
{
m_selected->removeTrack(i);
}
-void PlayListManager::removeItem (PlayListTrack *item)
+void PlayListManager::removeTrack (PlayListTrack *track)
{
- m_selected->removeItem(item);
+ m_selected->removeTrack(track);
}
void PlayListManager::invertSelection()
@@ -466,7 +466,7 @@ void PlayListManager::addToQueue()
m_selected->addToQueue();
}
-void PlayListManager::removeInvalidItems()
+void PlayListManager::removeInvalidTracks()
{
m_selected->removeInvalidTracks();
}
diff --git a/src/qmmpui/playlistmanager.h b/src/qmmpui/playlistmanager.h
index e74e817ee..3e9a41cab 100644
--- a/src/qmmpui/playlistmanager.h
+++ b/src/qmmpui/playlistmanager.h
@@ -205,11 +205,11 @@ public slots:
/*!
* This is a convenience function and is the same as calling \b selectedPlayList()->removeAt(i)
*/
- void removeAt (int i);
+ void removeTrack (int i);
/*!
* This is a convenience function and is the same as calling \b selectedPlayList()->removeItem(item)
*/
- void removeItem (PlayListTrack *item);
+ void removeTrack (PlayListTrack *item);
/*!
* This is a convenience function and is the same as calling \b selectedPlayList()->invertSelection()
*/
@@ -249,7 +249,7 @@ public slots:
/*!
* This is a convenience function and is the same as calling \b selectedPlayList()->clearInvalidItems()
*/
- void removeInvalidItems();
+ void removeInvalidTracks();
/*!
* This is a convenience function and is the same as calling \b selectedPlayList()->removeDuplicates()
*/
diff --git a/src/qmmpui/playlistmodel.cpp b/src/qmmpui/playlistmodel.cpp
index 66584f512..6bb043963 100644
--- a/src/qmmpui/playlistmodel.cpp
+++ b/src/qmmpui/playlistmodel.cpp
@@ -311,8 +311,7 @@ void PlayListModel::removeTrack (int i)
if(m_stop_track == track)
m_stop_track = 0;
m_total_length -= track->length();
- if (m_total_length < 0)
- m_total_length = qMin(0, m_total_length);
+ m_total_length = qMax(0, m_total_length);
m_container.removeTrack(i);
@@ -338,10 +337,10 @@ void PlayListModel::removeTrack (int i)
}
}
-void PlayListModel::removeItem (PlayListItem *item)
+void PlayListModel::removeTrack (PlayListItem *track)
{
- /*if(m_items.contains(item))
- removeAt (m_items.indexOf(item));*/
+ if(m_container.contains(track))
+ removeTrack (m_container.indexOf(track));
}
void PlayListModel::removeSelection(bool inverted)
@@ -932,66 +931,46 @@ void PlayListModel::preparePlayState()
void PlayListModel::removeInvalidTracks()
{
- QList<PlayListTrack *> invalid_tracks;
bool ok = false;
- for(int i = 0; m_container.count(); ++i)
+
+ int i = 0;
+ while(i < m_container.count())
{
PlayListTrack *track = m_container.track(i);
if(!track)
+ {
+ i++;
continue;
+ }
if(track->url().contains("://"))
ok = MetaDataManager::instance()->protocols().contains(track->url().section("://",0,0));
else
ok = MetaDataManager::instance()->supports(track->url());
if(!ok)
- {
- 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();
+ removeTrack(i);
+ else
+ i++;
}
}
void PlayListModel::removeDuplicates()
{
- /*for(int i = 0; i < m_items.size(); ++i)
+ for(int i = 0; i < m_container.count(); ++i)
{
- int j = m_items.size() - 1;
+ if(!isTrack(i))
+ continue;
+ int j = m_container.count() - 1;
while(j > i)
{
- if(m_items.at(i)->url() == m_items.at(j)->url())
- removeItem(m_items.at(j));
+ if(j < m_container.count() && isTrack(j))
+ {
+ if(track(i)->url() == track(j)->url())
+ removeTrack(j);
+ }
j--;
}
- }*/
+ }
}
void PlayListModel::clearQueue()
diff --git a/src/qmmpui/playlistmodel.h b/src/qmmpui/playlistmodel.h
index 743c985b6..895719dcd 100644
--- a/src/qmmpui/playlistmodel.h
+++ b/src/qmmpui/playlistmodel.h
@@ -343,7 +343,7 @@ public slots:
/*!
* Removes item \b item from playlist
*/
- void removeItem (PlayListItem *item);
+ void removeTrack (PlayListItem *track);
/*!
* Inverts selection (selects unselected items and unselects selected items)
*/