aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-08-14 09:59:14 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-08-14 09:59:14 +0000
commit2e689e667c8f4a53b9147ee3f54189a955acbc29 (patch)
tree3bd98ca7307d62050409d61e376010ea146cdfeb /src
parent3860a6037874458f9c3baf4f53ba32b1fcb462ab (diff)
downloadqmmp-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')
-rw-r--r--src/qmmpui/groupedcontainer.cpp (renamed from src/qmmpui/playlistcontainer.cpp)54
-rw-r--r--src/qmmpui/groupedcontainer_p.h61
-rw-r--r--src/qmmpui/normalcontainer.cpp176
-rw-r--r--src/qmmpui/normalcontainer_p.h57
-rw-r--r--src/qmmpui/playlistcontainer_p.h58
-rw-r--r--src/qmmpui/playlistmodel.cpp24
-rw-r--r--src/qmmpui/qmmpui.pro9
7 files changed, 356 insertions, 83 deletions
diff --git a/src/qmmpui/playlistcontainer.cpp b/src/qmmpui/groupedcontainer.cpp
index bfd2c8457..6c395042f 100644
--- a/src/qmmpui/playlistcontainer.cpp
+++ b/src/qmmpui/groupedcontainer.cpp
@@ -18,14 +18,17 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
-#include "playlistcontainer_p.h"
+#include "groupedcontainer_p.h"
-PlayListContainer::PlayListContainer()
+GroupedContainer::GroupedContainer()
{
- qDebug("%s", Q_FUNC_INFO);
}
-void PlayListContainer::addGroup(PlayListGroup *group)
+GroupedContainer::~GroupedContainer()
+{
+}
+
+void GroupedContainer::addGroup(PlayListGroup *group)
{
m_groups.append(group);
m_items.append(group);
@@ -36,7 +39,7 @@ void PlayListContainer::addGroup(PlayListGroup *group)
updateIndex();
}
-void PlayListContainer::addTrack(PlayListTrack *track)
+void GroupedContainer::addTrack(PlayListTrack *track)
{
if(!m_groups.isEmpty() && track->groupName() == m_groups.last()->formattedTitle())
{
@@ -62,50 +65,50 @@ void PlayListContainer::addTrack(PlayListTrack *track)
addGroup(group);
}
-QList<PlayListGroup *> PlayListContainer::groups()
+QList<PlayListGroup *> GroupedContainer::groups()
{
return m_groups;
}
-QList<PlayListItem *> PlayListContainer::items() const
+QList<PlayListItem *> GroupedContainer::items() const
{
return m_items;
}
-int PlayListContainer::count() const
+int GroupedContainer::count() const
{
return m_items.count();
}
-int PlayListContainer::trackCount() const
+int GroupedContainer::trackCount() const
{
return m_items.count() - m_groups.count();
}
-QList<PlayListItem *> PlayListContainer::mid(int pos, int count) const
+QList<PlayListItem *> GroupedContainer::mid(int pos, int count) const
{
return m_items.mid(pos, count);
}
-bool PlayListContainer::isEmpty() const
+bool GroupedContainer::isEmpty() const
{
return m_items.isEmpty();
}
-bool PlayListContainer::isSelected(int index) const
+bool GroupedContainer::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)
+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 PlayListContainer::clearSelection()
+void GroupedContainer::clearSelection()
{
foreach (PlayListItem *item, m_items)
{
@@ -113,12 +116,12 @@ void PlayListContainer::clearSelection()
}
}
-int PlayListContainer::indexOf(PlayListItem *item) const
+int GroupedContainer::indexOf(PlayListItem *item) const
{
return m_items.indexOf(item);
}
-PlayListItem *PlayListContainer::item(int index) const
+PlayListItem *GroupedContainer::item(int index) const
{
if(index >= count() || index < 0)
{
@@ -128,7 +131,7 @@ PlayListItem *PlayListContainer::item(int index) const
return m_items.at(index);
}
-PlayListTrack *PlayListContainer::track(int index) const
+PlayListTrack *GroupedContainer::track(int index) const
{
PlayListItem *i = item(index);
if(!i || i->isGroup())
@@ -136,12 +139,12 @@ PlayListTrack *PlayListContainer::track(int index) const
return dynamic_cast<PlayListTrack *> (i);
}
-bool PlayListContainer::contains(PlayListItem *item) const
+bool GroupedContainer::contains(PlayListItem *item) const
{
return m_items.contains(item);
}
-int PlayListContainer::numberOfTrack(int index) const
+int GroupedContainer::numberOfTrack(int index) const
{
for(int i = 0; i < m_groups.count(); ++i)
{
@@ -153,7 +156,7 @@ int PlayListContainer::numberOfTrack(int index) const
return -1;
}
-void PlayListContainer::removeTrack(int index)
+void GroupedContainer::removeTrack(int index)
{
PlayListTrack *t = track(index);
if(t)
@@ -170,7 +173,7 @@ void PlayListContainer::removeTrack(int index)
}
}
-void PlayListContainer::removeTrack(PlayListTrack *track)
+void GroupedContainer::removeTrack(PlayListTrack *track)
{
m_items.removeAll(track);
@@ -191,13 +194,13 @@ void PlayListContainer::removeTrack(PlayListTrack *track)
}
}
-void PlayListContainer::removeTracks(QList<PlayListTrack *> tracks)
+void GroupedContainer::removeTracks(QList<PlayListTrack *> tracks)
{
foreach(PlayListTrack *t, tracks)
removeTrack(t);
}
-bool PlayListContainer::move(QList<int> indexes, int from, int to)
+bool GroupedContainer::move(QList<int> indexes, int from, int to)
{
PlayListGroup *group = 0;
@@ -251,7 +254,7 @@ bool PlayListContainer::move(QList<int> indexes, int from, int to)
return true;
}
-void PlayListContainer::clear()
+void GroupedContainer::clear()
{
while(!m_groups.isEmpty())
{
@@ -260,7 +263,7 @@ void PlayListContainer::clear()
m_items.clear();
}
-void PlayListContainer::updateIndex()
+void GroupedContainer::updateIndex()
{
for(int i = 0; i < m_groups.count(); ++i)
{
@@ -276,3 +279,4 @@ void PlayListContainer::updateIndex()
}
}
}
+
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<PlayListGroup *> groups();
+ QList<PlayListItem *> items() const;
+ int count() const;
+ int trackCount() const;
+ QList<PlayListItem *> 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<PlayListTrack *> tracks);
+ bool move(QList<int> indexes, int from, int to);
+ void clear();
+
+private:
+ void addGroup(PlayListGroup *group);
+ void updateIndex();
+ QList<PlayListGroup *> m_groups;
+ QList<PlayListItem *> 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<PlayListGroup *> NormalContainer::groups()
+{
+ return QList<PlayListGroup *>();
+}
+
+QList<PlayListItem *> NormalContainer::items() const
+{
+ return m_items;
+}
+
+int NormalContainer::count() const
+{
+ return m_items.count();
+}
+
+int NormalContainer::trackCount() const
+{
+ return m_items.count();
+}
+
+QList<PlayListItem *> 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<PlayListTrack *> (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<PlayListTrack *> tracks)
+{
+ foreach(PlayListTrack *t, tracks)
+ removeTrack(t);
+}
+
+bool NormalContainer::move(QList<int> 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<PlayListGroup *> groups();
+ QList<PlayListItem *> items() const;
+ int count() const;
+ int trackCount() const;
+ QList<PlayListItem *> 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<PlayListTrack *> tracks);
+ bool move(QList<int> indexes, int from, int to);
+ void clear();
+
+private:
+ QList<PlayListItem *> m_items;
+};
+
+#endif // NORMALCONTAINER_P_H
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<PlayListGroup *> groups();
- QList<PlayListItem *> items() const;
- int count() const;
- int trackCount() const;
- QList<PlayListItem *> 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<PlayListTrack *> tracks);
-
- bool move(QList<int> indexes, int from, int to);
-
- void clear();
-
-private:
- void updateIndex();
- QList<PlayListGroup *> m_groups;
- QList<PlayListItem *> m_items;
-
+ PlayListContainer(){}
+ virtual ~PlayListContainer(){}
+
+ virtual void addTrack(PlayListTrack *item) = 0;
+ virtual QList<PlayListGroup *> groups() = 0;
+ virtual QList<PlayListItem *> items() const = 0;
+ virtual int count() const = 0;
+ virtual int trackCount() const = 0;
+ virtual QList<PlayListItem *> 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<PlayListTrack *> tracks) = 0;
+ virtual bool move(QList<int> 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 \