aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2014-10-26 16:41:19 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2014-10-26 16:41:19 +0000
commitb45e369d2b4872ba46446913991b6ae5dd9ad414 (patch)
tree5b862a4a08c82b98c420ebed49af7dcb829bba5c
parentd718a3a8ef64424364af747e39c48b8605ee21ad (diff)
downloadqmmp-b45e369d2b4872ba46446913991b6ae5dd9ad414.tar.gz
qmmp-b45e369d2b4872ba46446913991b6ae5dd9ad414.tar.bz2
qmmp-b45e369d2b4872ba46446913991b6ae5dd9ad414.zip
playlist container optimization
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@4597 90c681e8-e032-0410-971d-27865f9a5e38
-rw-r--r--src/qmmpui/groupedcontainer.cpp32
-rw-r--r--src/qmmpui/groupedcontainer_p.h4
2 files changed, 31 insertions, 5 deletions
diff --git a/src/qmmpui/groupedcontainer.cpp b/src/qmmpui/groupedcontainer.cpp
index 5091a276f..e98cf88f6 100644
--- a/src/qmmpui/groupedcontainer.cpp
+++ b/src/qmmpui/groupedcontainer.cpp
@@ -32,10 +32,35 @@ GroupedContainer::~GroupedContainer()
clear();
}
-void GroupedContainer::addGroup(PlayListGroup *group)
+void GroupedContainer::addTrack(PlayListTrack *track)
{
+ int firstIndex = 0, lastIndex = 0;
+ //insert if possible
+ for(int i = 0; i < m_groups.count(); ++i)
+ {
+ if(i == 0)
+ {
+ firstIndex = 0;
+ lastIndex = m_groups[i]->count();
+ }
+ else
+ {
+ firstIndex = lastIndex + 1;
+ lastIndex = firstIndex + m_groups[i]->count();
+ }
+
+ if(track->groupName() == m_groups[i]->formattedTitle())
+ {
+ m_groups[i]->trackList.append(track);
+ m_items.insert(lastIndex + 1, track);
+ return;
+ }
+ }
+ PlayListGroup *group = new PlayListGroup(track->groupName());
+ group->trackList.append(track);
m_groups.append(group);
- m_update = true;
+ m_items.append(group);
+ m_items.append(track);
}
void GroupedContainer::addTracks(QList<PlayListTrack *> tracks)
@@ -60,7 +85,8 @@ void GroupedContainer::addTracks(QList<PlayListTrack *> tracks)
if(!group)
{
group = new PlayListGroup(track->groupName());
- addGroup(group);
+ m_groups.append(group);
+ m_update = true;
}
group->trackList.append(track);
diff --git a/src/qmmpui/groupedcontainer_p.h b/src/qmmpui/groupedcontainer_p.h
index ad025866d..241b07fc4 100644
--- a/src/qmmpui/groupedcontainer_p.h
+++ b/src/qmmpui/groupedcontainer_p.h
@@ -34,6 +34,7 @@ public:
virtual ~GroupedContainer();
+ void addTrack(PlayListTrack *track);
void addTracks(QList<PlayListTrack *> tracks);
void insertTrack(int index, PlayListTrack *track);
QList<PlayListGroup *> groups() const;
@@ -64,9 +65,8 @@ public:
void sortSelection(int mode);
private:
- void addGroup(PlayListGroup *group);
void updateCache() const;
- mutable QList<PlayListGroup *> m_groups;
+ QList<PlayListGroup *> m_groups;
bool m_reverted;
mutable QList<PlayListItem *> m_items;