From f492b1b9684844a45614eae55cc8b166f12520ba Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Wed, 1 Jul 2015 18:23:58 +0000 Subject: fixed normal container git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@5199 90c681e8-e032-0410-971d-27865f9a5e38 --- src/qmmpui/groupedcontainer.cpp | 11 ++--------- src/qmmpui/groupedcontainer_p.h | 1 - src/qmmpui/normalcontainer.cpp | 28 +++++++++++++++++++++++++--- src/qmmpui/playlistcontainer.cpp | 7 +++++++ src/qmmpui/playlistcontainer_p.h | 5 ++++- 5 files changed, 38 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/qmmpui/groupedcontainer.cpp b/src/qmmpui/groupedcontainer.cpp index 1c3568c08..4ffaa9e71 100644 --- a/src/qmmpui/groupedcontainer.cpp +++ b/src/qmmpui/groupedcontainer.cpp @@ -336,7 +336,7 @@ bool GroupedContainer::move(QList indexes, int from, int to) else { m_items.move(i,i + to - from); - swapTrackNumbers(i,i + to - from); + swapTrackNumbers(&m_items,i,i + to - from); group->trackList.move(i - firstIndex - 1, i + to - from - firstIndex - 1); } @@ -351,7 +351,7 @@ bool GroupedContainer::move(QList indexes, int from, int to) else { m_items.move(indexes[i], indexes[i] + to - from); - swapTrackNumbers(indexes[i], indexes[i] + to - from); + swapTrackNumbers(&m_items,indexes[i], indexes[i] + to - from); group->trackList.move(indexes[i] - firstIndex - 1, indexes[i] + to - from - firstIndex - 1); } @@ -410,13 +410,6 @@ void GroupedContainer::randomizeList() m_update = true; } -void GroupedContainer::swapTrackNumbers(int index1, int index2) -{ - int number = m_items.at(index1)->trackNumber(); - m_items.at(index1)->setTrackNumber(m_items.at(index2)->trackNumber()); - m_items.at(index2)->setTrackNumber(number); -} - void GroupedContainer::updateCache() const { if(!m_update) diff --git a/src/qmmpui/groupedcontainer_p.h b/src/qmmpui/groupedcontainer_p.h index 0f9c61a5b..373311d9d 100644 --- a/src/qmmpui/groupedcontainer_p.h +++ b/src/qmmpui/groupedcontainer_p.h @@ -65,7 +65,6 @@ public: void randomizeList(); private: - void swapTrackNumbers(int index1, int index2); void updateCache() const; QList m_groups; diff --git a/src/qmmpui/normalcontainer.cpp b/src/qmmpui/normalcontainer.cpp index b26b33d06..36e13fd46 100644 --- a/src/qmmpui/normalcontainer.cpp +++ b/src/qmmpui/normalcontainer.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2013 by Ilya Kotov * + * Copyright (C) 2013-2015 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -33,15 +33,22 @@ void NormalContainer::addTracks(QList tracks) foreach (PlayListTrack *track, tracks) { m_items.append(track); + track->setTrackNumber(m_items.count() - 1); } } void NormalContainer::insertTrack(int index, PlayListTrack *track) { if(index >= 0 && index < m_items.count()) + { m_items.insert(index, track); + track->setTrackNumber(index); + } else + { m_items.append(track); + track->setTrackNumber(m_items.count() - 1); + } } void NormalContainer::replaceTracks(QList tracks) @@ -157,13 +164,16 @@ PlayListTrack *NormalContainer::findTrack(int number) const void NormalContainer::removeTrack(PlayListTrack *track) { - m_items.removeAll(track); + removeTracks(QList () << track); } void NormalContainer::removeTracks(QList tracks) { foreach(PlayListTrack *t, tracks) - removeTrack(t); + m_items.removeAll(t); + + for(int i = 0; i < m_items.count(); ++i) + m_items[i]->setTrackNumber(i); } bool NormalContainer::move(QList indexes, int from, int to) @@ -176,7 +186,10 @@ bool NormalContainer::move(QList indexes, int from, int to) break; else + { m_items.move(i,i + to - from); + swapTrackNumbers(&m_items,i,i + to - from); + } } } else @@ -186,7 +199,10 @@ bool NormalContainer::move(QList indexes, int from, int to) if (indexes[i] + to - from >= m_items.count()) break; else + { m_items.move(indexes[i], indexes[i] + to - from); + swapTrackNumbers(&m_items,indexes[i], indexes[i] + to - from); + } } } return true; @@ -209,11 +225,17 @@ 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); + swapTrackNumbers(&m_items, 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()); + + for(int i = 0; i < m_items.count(); ++i) + m_items[i]->setTrackNumber(i); } diff --git a/src/qmmpui/playlistcontainer.cpp b/src/qmmpui/playlistcontainer.cpp index c7aaf3482..d57310f1a 100644 --- a/src/qmmpui/playlistcontainer.cpp +++ b/src/qmmpui/playlistcontainer.cpp @@ -28,3 +28,10 @@ void PlayListContainer::addTrack(PlayListTrack *track) { addTracks(QList () << track); } + +void PlayListContainer::swapTrackNumbers(QList *container, int index1, int index2) +{ + int number = container->at(index1)->trackNumber(); + container->at(index1)->setTrackNumber(container->at(index2)->trackNumber()); + container->at(index2)->setTrackNumber(number); +} diff --git a/src/qmmpui/playlistcontainer_p.h b/src/qmmpui/playlistcontainer_p.h index 351a3b30f..5cdc281e7 100644 --- a/src/qmmpui/playlistcontainer_p.h +++ b/src/qmmpui/playlistcontainer_p.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2013-2014 by Ilya Kotov * + * Copyright (C) 2013-2015 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -67,6 +67,9 @@ public: virtual void reverseList() = 0; virtual void randomizeList() = 0; + +protected: + void swapTrackNumbers(QList *container, int index1, int index2); }; #endif // PLAYLISTCONTAINER_P_H -- cgit v1.2.3-13-gbd6f