diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2013-08-06 11:49:19 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2013-08-06 11:49:19 +0000 |
| commit | 0400576a8c05ad71c7d3a8b0d411da970704643a (patch) | |
| tree | d661b5e2e664cd346ebb17b962d1bb9112433e2c | |
| parent | 039a1be234e0da4c33d1b12602ff4c3f0c85cc23 (diff) | |
| download | qmmp-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.cpp | 2 | ||||
| -rw-r--r-- | src/qmmpui/playlistcontainer.cpp | 4 | ||||
| -rw-r--r-- | src/qmmpui/playlistcontainer.h | 2 | ||||
| -rw-r--r-- | src/qmmpui/playlistmanager.cpp | 8 | ||||
| -rw-r--r-- | src/qmmpui/playlistmanager.h | 6 | ||||
| -rw-r--r-- | src/qmmpui/playlistmodel.cpp | 67 | ||||
| -rw-r--r-- | src/qmmpui/playlistmodel.h | 2 |
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) */ |
