From 3be88d8c0b32bfb77d3d5acc787dd100087453d5 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Mon, 25 Nov 2013 06:55:03 +0000 Subject: implemented drag&drop to a specific place git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@3924 90c681e8-e032-0410-971d-27865f9a5e38 --- src/qmmpui/playlistmodel.cpp | 46 +++++++++++++++++++++++++++++++------------- 1 file changed, 33 insertions(+), 13 deletions(-) (limited to 'src/qmmpui/playlistmodel.cpp') diff --git a/src/qmmpui/playlistmodel.cpp b/src/qmmpui/playlistmodel.cpp index b82faf27b..cd45d8cb2 100644 --- a/src/qmmpui/playlistmodel.cpp +++ b/src/qmmpui/playlistmodel.cpp @@ -51,8 +51,8 @@ PlayListModel::PlayListModel(const QString &name, QObject *parent) m_container = new NormalContainer; connect(m_loader, SIGNAL(newTrackToAdd(PlayListTrack*)), SLOT(add(PlayListTrack*)), Qt::QueuedConnection); - connect(m_loader, SIGNAL(newTrackToInsert(int, PlayListTrack*)), - SLOT(insert(int, PlayListTrack*)), Qt::QueuedConnection); + connect(m_loader, SIGNAL(newTrackToInsert(PlayListItem*, PlayListTrack*)), + SLOT(insert(PlayListItem*, PlayListTrack*)), Qt::QueuedConnection); connect(m_loader, SIGNAL(finished()), SLOT(preparePlayState())); connect(m_loader, SIGNAL(finished()), SIGNAL(loaderFinished())); } @@ -164,6 +164,11 @@ void PlayListModel::insert(int index, PlayListTrack *track) emit countChanged(); } +void PlayListModel::insert(PlayListItem *before, PlayListTrack *track) +{ + insert(m_container->indexOf(before), track); +} + void PlayListModel::insert(int index, QList tracks) { if(tracks.isEmpty()) @@ -193,24 +198,39 @@ void PlayListModel::insert(int index, QList tracks) void PlayListModel::insert(int index, const QString &path) { - m_loader->insert(index, path); - /*QFileInfo f_info(path); - if (f_info.isDir()) - m_loader->loadDirectory(path); + if(index < 0 || index >= m_container->count()) + add(path); else { - m_loader->loadFile(path); - loadPlaylist(path); - }*/ + PlayListItem *before = m_container->item(index); + m_loader->insert(before, path); + } + //TODO insert playlist } void PlayListModel::insert(int index, const QStringList &paths) { - m_loader->insert(index, paths); - /*foreach(QString str, paths) + if(index < 0 || index >= m_container->count()) + add(paths); + else + { + PlayListItem *before = m_container->item(index); + m_loader->insert(before, paths); + } + //TODO insert playlist +} + +void PlayListModel::insert(int index, const QList &urls) +{ + QStringList paths; + foreach (QUrl url, urls) { - add(str); - }*/ + if(url.scheme() == "file") + paths.append(QFileInfo(url.toLocalFile()).absoluteFilePath()); + else + paths.append(url.toString()); + } + insert(index, paths); } int PlayListModel::count() const -- cgit v1.2.3-13-gbd6f