aboutsummaryrefslogtreecommitdiff
path: root/src/qmmpui/playlistmodel.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-11-20 11:57:25 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-11-20 11:57:25 +0000
commit7b5e9960a11f35b3792d3417557fef5abc1ca876 (patch)
tree69ee9a72fabbcf169d1b4b2eb7f3051d6c0d3e81 /src/qmmpui/playlistmodel.cpp
parent025f0783a5bdc1fffb6dbf6149ca0bb68f12f12f (diff)
downloadqmmp-7b5e9960a11f35b3792d3417557fef5abc1ca876.tar.gz
qmmp-7b5e9960a11f35b3792d3417557fef5abc1ca876.tar.bz2
qmmp-7b5e9960a11f35b3792d3417557fef5abc1ca876.zip
prepare for insert functions impelementation
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@3918 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/qmmpui/playlistmodel.cpp')
-rw-r--r--src/qmmpui/playlistmodel.cpp75
1 files changed, 75 insertions, 0 deletions
diff --git a/src/qmmpui/playlistmodel.cpp b/src/qmmpui/playlistmodel.cpp
index bcf7dc554..b923a9848 100644
--- a/src/qmmpui/playlistmodel.cpp
+++ b/src/qmmpui/playlistmodel.cpp
@@ -51,6 +51,8 @@ PlayListModel::PlayListModel(const QString &name, QObject *parent)
m_container = new NormalContainer;
connect(m_loader, SIGNAL(newPlayListTrack(PlayListTrack*)),
SLOT(add(PlayListTrack*)), Qt::QueuedConnection);
+ connect(m_loader, SIGNAL(newPlayListTrack(int, PlayListTrack*)),
+ SLOT(insert(int, PlayListTrack*)), Qt::QueuedConnection);
connect(m_loader, SIGNAL(finished()), SLOT(preparePlayState()));
connect(m_loader, SIGNAL(finished()), SIGNAL(loaderFinished()));
}
@@ -114,6 +116,11 @@ void PlayListModel::add(QList<PlayListTrack *> tracks)
m_current = m_container->indexOf(track);
emit currentChanged();
}
+ else if(m_groups_enabled)
+ {
+ //update current index for grouped container only
+ m_current = m_container->indexOf(m_current_track);
+ }
emit trackAdded(track);
}
preparePlayState();
@@ -141,6 +148,74 @@ void PlayListModel::add(const QStringList &paths)
}
}
+void PlayListModel::insert(int index, PlayListTrack *track)
+{
+ m_container->insertTrack(index, track);
+ m_total_length += track->length();
+
+ if(m_container->trackCount() == 1)
+ {
+ m_current_track = track;
+ m_current = m_container->indexOf(track);
+ emit currentChanged();
+ }
+ else
+ {
+ //update current index
+ m_current = m_container->indexOf(m_current_track);
+ }
+ emit trackAdded(track);
+ emit listChanged();
+ emit countChanged();
+}
+
+void PlayListModel::insert(int index, QList<PlayListTrack *> tracks)
+{
+ if(tracks.isEmpty())
+ return;
+
+ PlayListItem *prevItem = m_container->item(index);
+ foreach(PlayListTrack *track, tracks)
+ {
+ m_container->insertTrack(index, track);
+ index = prevItem ? m_container->indexOf(prevItem) : m_container->count();
+
+ m_total_length += track->length();
+ if(m_container->trackCount() == 1)
+ {
+ m_current_track = track;
+ m_current = m_container->indexOf(track);
+ emit currentChanged();
+ }
+ emit trackAdded(track);
+ }
+ //update current index
+ m_current = m_container->indexOf(m_current_track);
+ preparePlayState();
+ emit listChanged();
+ emit countChanged();
+}
+
+void PlayListModel::insert(int index, const QString &path)
+{
+ /*QFileInfo f_info(path);
+ if (f_info.isDir())
+ m_loader->loadDirectory(path);
+ else
+ {
+ m_loader->loadFile(path);
+ loadPlaylist(path);
+ }*/
+}
+
+void PlayListModel::insert(int index, const QStringList &paths)
+{
+ /*foreach(QString str, paths)
+ {
+ add(str);
+ }*/
+}
+
int PlayListModel::count() const
{
return m_container->count();