diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2013-08-20 18:12:41 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2013-08-20 18:12:41 +0000 |
| commit | 3cce6c1d844060bdce56fc5dde48b9822658b741 (patch) | |
| tree | cf973843fba5c728e3366e605bd5d7dce1348ed5 | |
| parent | fce0e4d52345c18213662dc6153993ea55ab4f84 (diff) | |
| download | qmmp-3cce6c1d844060bdce56fc5dde48b9822658b741.tar.gz qmmp-3cce6c1d844060bdce56fc5dde48b9822658b741.tar.bz2 qmmp-3cce6c1d844060bdce56fc5dde48b9822658b741.zip | |
fixed 'randomize list' action
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@3633 90c681e8-e032-0410-971d-27865f9a5e38
| -rw-r--r-- | src/qmmpui/groupedcontainer.cpp | 13 | ||||
| -rw-r--r-- | src/qmmpui/groupedcontainer_p.h | 1 | ||||
| -rw-r--r-- | src/qmmpui/normalcontainer.cpp | 10 | ||||
| -rw-r--r-- | src/qmmpui/normalcontainer_p.h | 1 | ||||
| -rw-r--r-- | src/qmmpui/playlistcontainer_p.h | 1 | ||||
| -rw-r--r-- | src/qmmpui/playlistmodel.cpp | 10 |
6 files changed, 28 insertions, 8 deletions
diff --git a/src/qmmpui/groupedcontainer.cpp b/src/qmmpui/groupedcontainer.cpp index 12bb8a5c7..3b5f93e6a 100644 --- a/src/qmmpui/groupedcontainer.cpp +++ b/src/qmmpui/groupedcontainer.cpp @@ -279,13 +279,24 @@ void GroupedContainer::reverseList() { QList<PlayListTrack *> tracks = takeAllTracks(); - for (int i = 0;i < tracks.size()/2;i++) + for (int i = 0; i < tracks.size()/2 ;i++) tracks.swap(i, tracks.size() - i - 1); foreach (PlayListTrack *t, tracks) addTrack(t); } +void GroupedContainer::randomizeList() +{ + QList<PlayListTrack *> tracks = takeAllTracks(); + + for (int i = 0; i < tracks.size(); i++) + tracks.swap(qrand()%tracks.size(),qrand()%tracks.size()); + + foreach (PlayListTrack *t, tracks) + addTrack(t); +} + void GroupedContainer::updateIndex() { for(int i = 0; i < m_groups.count(); ++i) diff --git a/src/qmmpui/groupedcontainer_p.h b/src/qmmpui/groupedcontainer_p.h index bd2e75500..c812c2fc9 100644 --- a/src/qmmpui/groupedcontainer_p.h +++ b/src/qmmpui/groupedcontainer_p.h @@ -53,6 +53,7 @@ public: void clear(); void reverseList(); + void randomizeList(); private: void addGroup(PlayListGroup *group); diff --git a/src/qmmpui/normalcontainer.cpp b/src/qmmpui/normalcontainer.cpp index 37f5fc3eb..7267b09e6 100644 --- a/src/qmmpui/normalcontainer.cpp +++ b/src/qmmpui/normalcontainer.cpp @@ -186,6 +186,12 @@ void NormalContainer::clear() void NormalContainer::reverseList() { - for (int i = 0;i < m_items.size()/2;i++) - m_items.swap(i,m_items.size() - i - 1); + for (int i = 0; i < m_items.size()/2; i++) + m_items.swap(i, m_items.size() - i - 1); +} + +void NormalContainer::randomizeList() +{ + for (int i = 0; i < m_items.size(); i++) + m_items.swap(qrand()%m_items.size(), qrand()%m_items.size()); } diff --git a/src/qmmpui/normalcontainer_p.h b/src/qmmpui/normalcontainer_p.h index 84dc2607b..b83762c27 100644 --- a/src/qmmpui/normalcontainer_p.h +++ b/src/qmmpui/normalcontainer_p.h @@ -52,6 +52,7 @@ public: void clear(); void reverseList(); + void randomizeList(); private: QList<PlayListItem *> m_items; diff --git a/src/qmmpui/playlistcontainer_p.h b/src/qmmpui/playlistcontainer_p.h index e8b941fc8..7a631329d 100644 --- a/src/qmmpui/playlistcontainer_p.h +++ b/src/qmmpui/playlistcontainer_p.h @@ -56,6 +56,7 @@ public: virtual void clear() = 0; virtual void reverseList() = 0; + virtual void randomizeList() = 0; }; #endif // PLAYLISTCONTAINER_P_H diff --git a/src/qmmpui/playlistmodel.cpp b/src/qmmpui/playlistmodel.cpp index 6f8a5adf1..304fbd8a5 100644 --- a/src/qmmpui/playlistmodel.cpp +++ b/src/qmmpui/playlistmodel.cpp @@ -608,11 +608,11 @@ bool PlayListModel::isStopAfter(PlayListItem* item) const void PlayListModel::randomizeList() { - /*for (int i = 0;i < m_items.size();i++) - m_items.swap(qrand()%m_items.size(),qrand()%m_items.size()); - - m_current = m_items.indexOf(m_currentItem); - emit listChanged();*/ + if(m_container->isEmpty()) + return; + m_container->randomizeList(); + m_current = m_container->indexOf(m_current_track); + emit listChanged(); } void PlayListModel::reverseList() |
