diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2013-08-14 09:59:14 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2013-08-14 09:59:14 +0000 |
| commit | 2e689e667c8f4a53b9147ee3f54189a955acbc29 (patch) | |
| tree | 3bd98ca7307d62050409d61e376010ea146cdfeb /src/qmmpui/playlistcontainer.cpp | |
| parent | 3860a6037874458f9c3baf4f53ba32b1fcb462ab (diff) | |
| download | qmmp-2e689e667c8f4a53b9147ee3f54189a955acbc29.tar.gz qmmp-2e689e667c8f4a53b9147ee3f54189a955acbc29.tar.bz2 qmmp-2e689e667c8f4a53b9147ee3f54189a955acbc29.zip | |
added normal (w/o groups) playlist container
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@3597 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/qmmpui/playlistcontainer.cpp')
| -rw-r--r-- | src/qmmpui/playlistcontainer.cpp | 278 |
1 files changed, 0 insertions, 278 deletions
diff --git a/src/qmmpui/playlistcontainer.cpp b/src/qmmpui/playlistcontainer.cpp deleted file mode 100644 index bfd2c8457..000000000 --- a/src/qmmpui/playlistcontainer.cpp +++ /dev/null @@ -1,278 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2013 by Ilya Kotov * - * forkotov02@hotmail.ru * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * - ***************************************************************************/ - -#include "playlistcontainer_p.h" - -PlayListContainer::PlayListContainer() -{ - qDebug("%s", Q_FUNC_INFO); -} - -void PlayListContainer::addGroup(PlayListGroup *group) -{ - m_groups.append(group); - m_items.append(group); - foreach (PlayListTrack *item, *group->tracks()) - { - m_items.append(item); - } - updateIndex(); -} - -void PlayListContainer::addTrack(PlayListTrack *track) -{ - if(!m_groups.isEmpty() && track->groupName() == m_groups.last()->formattedTitle()) - { - PlayListGroup *group = m_groups.last(); - group->addTrack(track); - m_items.insert(group->lastIndex + 1, track); - updateIndex(); - return; - } - foreach(PlayListGroup *group, m_groups) - { - if(track->groupName() == group->formattedTitle()) - { - group->addTrack(track); - m_items.insert(group->lastIndex + 1, track); - updateIndex(); - return; - } - } - - PlayListGroup *group = new PlayListGroup(track->groupName()); - group->addTrack(track); - addGroup(group); -} - -QList<PlayListGroup *> PlayListContainer::groups() -{ - return m_groups; -} - -QList<PlayListItem *> PlayListContainer::items() const -{ - return m_items; -} - -int PlayListContainer::count() const -{ - return m_items.count(); -} - -int PlayListContainer::trackCount() const -{ - return m_items.count() - m_groups.count(); -} - -QList<PlayListItem *> PlayListContainer::mid(int pos, int count) const -{ - return m_items.mid(pos, count); -} - -bool PlayListContainer::isEmpty() const -{ - return m_items.isEmpty(); -} - -bool PlayListContainer::isSelected(int index) const -{ - if (0 <= index && index < m_items.count()) - return m_items.at(index)->isSelected(); - return false; -} - -void PlayListContainer::setSelected(int index, bool selected) -{ - if (0 <= index && index < m_items.count())// && !m_items.at(index)->isGroup()) - m_items.at(index)->setSelected(selected); -} - -void PlayListContainer::clearSelection() -{ - foreach (PlayListItem *item, m_items) - { - item->setSelected(false); - } -} - -int PlayListContainer::indexOf(PlayListItem *item) const -{ - return m_items.indexOf(item); -} - -PlayListItem *PlayListContainer::item(int index) const -{ - if(index >= count() || index < 0) - { - qWarning("PlayListItem: index is out of range"); - return 0; - } - return m_items.at(index); -} - -PlayListTrack *PlayListContainer::track(int index) const -{ - PlayListItem *i = item(index); - if(!i || i->isGroup()) - return 0; - return dynamic_cast<PlayListTrack *> (i); -} - -bool PlayListContainer::contains(PlayListItem *item) const -{ - return m_items.contains(item); -} - -int PlayListContainer::numberOfTrack(int index) const -{ - for(int i = 0; i < m_groups.count(); ++i) - { - if(index >= m_groups[i]->firstIndex && index <= m_groups[i]->lastIndex) - { - return index - (i+1); - } - } - return -1; -} - -void PlayListContainer::removeTrack(int index) -{ - PlayListTrack *t = track(index); - if(t) - { - removeTrack(t); - if (t->flag() == PlayListTrack::FREE) - { - delete t; - } - else if (t->flag() == PlayListTrack::EDITING) - { - t->setFlag(PlayListTrack::SCHEDULED_FOR_DELETION); - } - } -} - -void PlayListContainer::removeTrack(PlayListTrack *track) -{ - m_items.removeAll(track); - - foreach(PlayListGroup *group, m_groups) - { - if(group->contains(track)) - { - group->remove(track); - if(group->isEmpty()) - { - m_groups.removeAll(group); - m_items.removeAll(group); - delete group; - } - updateIndex(); - return; - } - } -} - -void PlayListContainer::removeTracks(QList<PlayListTrack *> tracks) -{ - foreach(PlayListTrack *t, tracks) - removeTrack(t); -} - -bool PlayListContainer::move(QList<int> indexes, int from, int to) -{ - PlayListGroup *group = 0; - - foreach (PlayListGroup *g, m_groups) - { - if(from > g->firstIndex && from <= g->lastIndex && - to > g->firstIndex && to <= g->lastIndex) - { - group = g; - break; - } - } - - if(!group) - return false; - - foreach (int i, indexes) - { - if(i <= group->firstIndex || i > group->lastIndex) - return false; - } - - if (from > to) - { - foreach(int i, indexes) - { - if (i + to - from < 0) - break; - else - { - m_items.move(i,i + to - from); - group->move(i - group->firstIndex - 1, - i + to - from - group->firstIndex - 1); - } - } - } - else - { - for (int i = indexes.count() - 1; i >= 0; i--) - { - if (indexes[i] + to - from >= m_items.count()) - break; - else - { - m_items.move(indexes[i], indexes[i] + to - from); - group->move(indexes[i] - group->firstIndex - 1, - indexes[i] + to - from - group->firstIndex - 1); - } - } - } - return true; -} - -void PlayListContainer::clear() -{ - while(!m_groups.isEmpty()) - { - delete m_groups.takeFirst(); - } - m_items.clear(); -} - -void PlayListContainer::updateIndex() -{ - for(int i = 0; i < m_groups.count(); ++i) - { - if(i == 0) - { - m_groups[i]->firstIndex = 0; - m_groups[i]->lastIndex = m_groups[i]->count(); - } - else - { - m_groups[i]->firstIndex = m_groups[i-1]->lastIndex + 1; - m_groups[i]->lastIndex = m_groups[i]->firstIndex + m_groups[i]->count(); - } - } -} |
