aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-08-20 18:12:41 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-08-20 18:12:41 +0000
commit3cce6c1d844060bdce56fc5dde48b9822658b741 (patch)
treecf973843fba5c728e3366e605bd5d7dce1348ed5
parentfce0e4d52345c18213662dc6153993ea55ab4f84 (diff)
downloadqmmp-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.cpp13
-rw-r--r--src/qmmpui/groupedcontainer_p.h1
-rw-r--r--src/qmmpui/normalcontainer.cpp10
-rw-r--r--src/qmmpui/normalcontainer_p.h1
-rw-r--r--src/qmmpui/playlistcontainer_p.h1
-rw-r--r--src/qmmpui/playlistmodel.cpp10
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()