From 2e689e667c8f4a53b9147ee3f54189a955acbc29 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Wed, 14 Aug 2013 09:59:14 +0000 Subject: 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 --- src/qmmpui/groupedcontainer.cpp | 282 +++++++++++++++++++++++++++++++++++++++ src/qmmpui/groupedcontainer_p.h | 61 +++++++++ src/qmmpui/normalcontainer.cpp | 176 ++++++++++++++++++++++++ src/qmmpui/normalcontainer_p.h | 57 ++++++++ src/qmmpui/playlistcontainer.cpp | 278 -------------------------------------- src/qmmpui/playlistcontainer_p.h | 58 ++++---- src/qmmpui/playlistmodel.cpp | 24 +--- src/qmmpui/qmmpui.pro | 9 +- 8 files changed, 609 insertions(+), 336 deletions(-) create mode 100644 src/qmmpui/groupedcontainer.cpp create mode 100644 src/qmmpui/groupedcontainer_p.h create mode 100644 src/qmmpui/normalcontainer.cpp create mode 100644 src/qmmpui/normalcontainer_p.h delete mode 100644 src/qmmpui/playlistcontainer.cpp (limited to 'src') diff --git a/src/qmmpui/groupedcontainer.cpp b/src/qmmpui/groupedcontainer.cpp new file mode 100644 index 000000000..6c395042f --- /dev/null +++ b/src/qmmpui/groupedcontainer.cpp @@ -0,0 +1,282 @@ +/*************************************************************************** + * 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 "groupedcontainer_p.h" + +GroupedContainer::GroupedContainer() +{ +} + +GroupedContainer::~GroupedContainer() +{ +} + +void GroupedContainer::addGroup(PlayListGroup *group) +{ + m_groups.append(group); + m_items.append(group); + foreach (PlayListTrack *item, *group->tracks()) + { + m_items.append(item); + } + updateIndex(); +} + +void GroupedContainer::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 GroupedContainer::groups() +{ + return m_groups; +} + +QList GroupedContainer::items() const +{ + return m_items; +} + +int GroupedContainer::count() const +{ + return m_items.count(); +} + +int GroupedContainer::trackCount() const +{ + return m_items.count() - m_groups.count(); +} + +QList GroupedContainer::mid(int pos, int count) const +{ + return m_items.mid(pos, count); +} + +bool GroupedContainer::isEmpty() const +{ + return m_items.isEmpty(); +} + +bool GroupedContainer::isSelected(int index) const +{ + if (0 <= index && index < m_items.count()) + return m_items.at(index)->isSelected(); + return false; +} + +void GroupedContainer::setSelected(int index, bool selected) +{ + if (0 <= index && index < m_items.count())// && !m_items.at(index)->isGroup()) + m_items.at(index)->setSelected(selected); +} + +void GroupedContainer::clearSelection() +{ + foreach (PlayListItem *item, m_items) + { + item->setSelected(false); + } +} + +int GroupedContainer::indexOf(PlayListItem *item) const +{ + return m_items.indexOf(item); +} + +PlayListItem *GroupedContainer::item(int index) const +{ + if(index >= count() || index < 0) + { + qWarning("PlayListItem: index is out of range"); + return 0; + } + return m_items.at(index); +} + +PlayListTrack *GroupedContainer::track(int index) const +{ + PlayListItem *i = item(index); + if(!i || i->isGroup()) + return 0; + return dynamic_cast (i); +} + +bool GroupedContainer::contains(PlayListItem *item) const +{ + return m_items.contains(item); +} + +int GroupedContainer::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 GroupedContainer::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 GroupedContainer::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 GroupedContainer::removeTracks(QList tracks) +{ + foreach(PlayListTrack *t, tracks) + removeTrack(t); +} + +bool GroupedContainer::move(QList 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 GroupedContainer::clear() +{ + while(!m_groups.isEmpty()) + { + delete m_groups.takeFirst(); + } + m_items.clear(); +} + +void GroupedContainer::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(); + } + } +} + diff --git a/src/qmmpui/groupedcontainer_p.h b/src/qmmpui/groupedcontainer_p.h new file mode 100644 index 000000000..31a9ab76d --- /dev/null +++ b/src/qmmpui/groupedcontainer_p.h @@ -0,0 +1,61 @@ +/*************************************************************************** + * 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. * + ***************************************************************************/ + +#ifndef GROUPEDCONTAINER_P_H +#define GROUPEDCONTAINER_P_H + +#include "playlistcontainer_p.h" + +class GroupedContainer : public PlayListContainer +{ +public: + GroupedContainer(); + + virtual ~GroupedContainer(); + + void addTrack(PlayListTrack *item); + QList groups(); + QList items() const; + int count() const; + int trackCount() const; + QList mid(int pos, int count) const; + bool isEmpty() const; + bool isSelected(int index) const; + void setSelected(int index, bool selected); + void clearSelection(); + int indexOf(PlayListItem *item) const; + PlayListItem *item(int index) const; + PlayListTrack *track(int index) const; + bool contains(PlayListItem *item) const; + int numberOfTrack(int index) const; + void removeTrack(int index); + void removeTrack(PlayListTrack *track); + void removeTracks(QList tracks); + bool move(QList indexes, int from, int to); + void clear(); + +private: + void addGroup(PlayListGroup *group); + void updateIndex(); + QList m_groups; + QList m_items; +}; + +#endif // GROUPEDCONTAINER_P_H diff --git a/src/qmmpui/normalcontainer.cpp b/src/qmmpui/normalcontainer.cpp new file mode 100644 index 000000000..c9167930a --- /dev/null +++ b/src/qmmpui/normalcontainer.cpp @@ -0,0 +1,176 @@ +/*************************************************************************** + * 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 "normalcontainer_p.h" + +NormalContainer::NormalContainer() +{ +} + +NormalContainer::~NormalContainer() +{ +} + +void NormalContainer::addTrack(PlayListTrack *track) +{ + m_items.append(track); +} + +QList NormalContainer::groups() +{ + return QList(); +} + +QList NormalContainer::items() const +{ + return m_items; +} + +int NormalContainer::count() const +{ + return m_items.count(); +} + +int NormalContainer::trackCount() const +{ + return m_items.count(); +} + +QList NormalContainer::mid(int pos, int count) const +{ + return m_items.mid(pos, count); +} + +bool NormalContainer::isEmpty() const +{ + return m_items.isEmpty(); +} + +bool NormalContainer::isSelected(int index) const +{ + if (0 <= index && index < m_items.count()) + return m_items.at(index)->isSelected(); + return false; +} + +void NormalContainer::setSelected(int index, bool selected) +{ + if (0 <= index && index < m_items.count()) + m_items.at(index)->setSelected(selected); +} + +void NormalContainer::clearSelection() +{ + foreach (PlayListItem *item, m_items) + { + item->setSelected(false); + } +} + +int NormalContainer::indexOf(PlayListItem *item) const +{ + return m_items.indexOf(item); +} + +PlayListItem *NormalContainer::item(int index) const +{ + if(index >= count() || index < 0) + { + qWarning("PlayListItem: index is out of range"); + return 0; + } + return m_items.at(index); +} + +PlayListTrack *NormalContainer::track(int index) const +{ + PlayListItem *i = item(index); + return dynamic_cast (i); +} + +bool NormalContainer::contains(PlayListItem *item) const +{ + return m_items.contains(item); +} + +int NormalContainer::numberOfTrack(int index) const +{ + return index; +} + +void NormalContainer::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 NormalContainer::removeTrack(PlayListTrack *track) +{ + m_items.removeAll(track); +} + +void NormalContainer::removeTracks(QList tracks) +{ + foreach(PlayListTrack *t, tracks) + removeTrack(t); +} + +bool NormalContainer::move(QList indexes, int from, int to) +{ + if (from > to) + { + foreach(int i, indexes) + { + if (i + to - from < 0) + break; + + else + m_items.move(i,i + to - from); + } + } + 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); + } + } + return true; +} + +void NormalContainer::clear() +{ + qDeleteAll(m_items); + m_items.clear(); +} diff --git a/src/qmmpui/normalcontainer_p.h b/src/qmmpui/normalcontainer_p.h new file mode 100644 index 000000000..23286d9eb --- /dev/null +++ b/src/qmmpui/normalcontainer_p.h @@ -0,0 +1,57 @@ +/*************************************************************************** + * 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. * + ***************************************************************************/ + +#ifndef NORMALCONTAINER_P_H +#define NORMALCONTAINER_P_H + +#include "playlistcontainer_p.h" + +class NormalContainer : public PlayListContainer +{ +public: + NormalContainer(); + virtual ~NormalContainer(); + + void addTrack(PlayListTrack *item); + QList groups(); + QList items() const; + int count() const; + int trackCount() const; + QList mid(int pos, int count) const; + bool isEmpty() const; + bool isSelected(int index) const; + void setSelected(int index, bool selected); + void clearSelection(); + int indexOf(PlayListItem *item) const; + PlayListItem *item(int index) const; + PlayListTrack *track(int index) const; + bool contains(PlayListItem *item) const; + int numberOfTrack(int index) const; + void removeTrack(int index); + void removeTrack(PlayListTrack *track); + void removeTracks(QList tracks); + bool move(QList indexes, int from, int to); + void clear(); + +private: + QList m_items; +}; + +#endif // NORMALCONTAINER_P_H 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 PlayListContainer::groups() -{ - return m_groups; -} - -QList 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 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 (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 tracks) -{ - foreach(PlayListTrack *t, tracks) - removeTrack(t); -} - -bool PlayListContainer::move(QList 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(); - } - } -} diff --git a/src/qmmpui/playlistcontainer_p.h b/src/qmmpui/playlistcontainer_p.h index bd9841a2e..b4ea6a765 100644 --- a/src/qmmpui/playlistcontainer_p.h +++ b/src/qmmpui/playlistcontainer_p.h @@ -26,44 +26,32 @@ #include "playlisttrack.h" #include "playlistgroup.h" - class PlayListContainer { public: - PlayListContainer(); - - void addGroup(PlayListGroup *group); - void addTrack(PlayListTrack *item); - - QList groups(); - QList items() const; - int count() const; - int trackCount() const; - QList mid(int pos, int count) const; - bool isEmpty() const; - - bool isSelected(int index) const; - void setSelected(int index, bool selected); - void clearSelection(); - int indexOf(PlayListItem *item) const; - PlayListItem *item(int index) const; - PlayListTrack *track(int index) const; - bool contains(PlayListItem *item) const; - int numberOfTrack(int index) const; - - void removeTrack(int index); - void removeTrack(PlayListTrack *track); - void removeTracks(QList tracks); - - bool move(QList indexes, int from, int to); - - void clear(); - -private: - void updateIndex(); - QList m_groups; - QList m_items; - + PlayListContainer(){} + virtual ~PlayListContainer(){} + + virtual void addTrack(PlayListTrack *item) = 0; + virtual QList groups() = 0; + virtual QList items() const = 0; + virtual int count() const = 0; + virtual int trackCount() const = 0; + virtual QList mid(int pos, int count) const = 0; + virtual bool isEmpty() const = 0; + virtual bool isSelected(int index) const = 0; + virtual void setSelected(int index, bool selected) = 0; + virtual void clearSelection() = 0; + virtual int indexOf(PlayListItem *item) const = 0; + virtual PlayListItem *item(int index) const = 0; + virtual PlayListTrack *track(int index) const = 0; + virtual bool contains(PlayListItem *item) const = 0; + virtual int numberOfTrack(int index) const = 0; + virtual void removeTrack(int index) = 0; + virtual void removeTrack(PlayListTrack *track) = 0; + virtual void removeTracks(QList tracks) = 0; + virtual bool move(QList indexes, int from, int to) = 0; + virtual void clear() = 0; }; #endif // PLAYLISTCONTAINER_P_H diff --git a/src/qmmpui/playlistmodel.cpp b/src/qmmpui/playlistmodel.cpp index 5af896e55..a1b6fe68d 100644 --- a/src/qmmpui/playlistmodel.cpp +++ b/src/qmmpui/playlistmodel.cpp @@ -34,6 +34,8 @@ #include "playlistparser.h" #include "playlistformat.h" #include "playlistcontainer_p.h" +#include "groupedcontainer_p.h" +#include "normalcontainer_p.h" #include "fileloader_p.h" #include "playstate_p.h" #include "detailsdialog.h" @@ -54,7 +56,8 @@ PlayListModel::PlayListModel(const QString &name, QObject *parent) m_stop_track = 0; m_play_state = new NormalPlayState(this); m_loader = new FileLoader(this); - m_container = new PlayListContainer; + m_container = new GroupedContainer; + //m_container = new NormalContainer; connect(m_loader, SIGNAL(newPlayListTrack(PlayListTrack*)), SLOT(add(PlayListTrack*)), Qt::QueuedConnection); connect(m_loader, SIGNAL(finished()), SLOT(preparePlayState())); @@ -503,25 +506,6 @@ void PlayListModel::moveItems(int from, int to) m_current = m_container->indexOf(m_current_track); emit listChanged(); } - - /*if (from > to) - foreach(int i, selected_indexes) - { - if (i + to - from < 0) - break; - - else - m_items.move(i,i + to - from); - } - else - - for (int i = selected_indexes.count() - 1; i >= 0; i--) - { - if (selected_indexes[i] + to -from >= m_items.count()) - break; - else - m_items.move(selected_indexes[i],selected_indexes[i] + to - from); - }*/ } int PlayListModel::topmostInSelection(int row) diff --git a/src/qmmpui/qmmpui.pro b/src/qmmpui/qmmpui.pro index acd9c59e2..7bb64cf74 100644 --- a/src/qmmpui/qmmpui.pro +++ b/src/qmmpui/qmmpui.pro @@ -53,7 +53,9 @@ HEADERS += general.h \ tagupdater_p.h \ playlistgroup.h \ playlisttrack.h \ - playlistcontainer_p.h + playlistcontainer_p.h \ + groupedcontainer_p.h \ + normalcontainer_p.h SOURCES += general.cpp \ playlistparser.cpp \ commandlinemanager.cpp \ @@ -82,8 +84,9 @@ SOURCES += general.cpp \ qmmpuiplugincache.cpp \ tagupdater.cpp \ playlistgroup.cpp \ - playlistcontainer.cpp \ - playlisttrack.cpp + playlisttrack.cpp \ + groupedcontainer.cpp \ + normalcontainer.cpp FORMS += forms/detailsdialog.ui \ forms/tageditor.ui \ forms/templateeditor.ui \ -- cgit v1.2.3-13-gbd6f