aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;