diff options
| -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() |
