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/normalcontainer.cpp | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) (limited to 'src/qmmpui/normalcontainer.cpp') 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); } -- cgit v1.2.3-13-gbd6f