aboutsummaryrefslogtreecommitdiff
path: root/src/qmmpui/fileloader.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-11-25 06:55:03 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2013-11-25 06:55:03 +0000
commit3be88d8c0b32bfb77d3d5acc787dd100087453d5 (patch)
tree1dea275f31551af8bb89e73d9c730fdebfec5950 /src/qmmpui/fileloader.cpp
parentcfbd11f1157362af276eb9f80ee40c0d0b5da47a (diff)
downloadqmmp-3be88d8c0b32bfb77d3d5acc787dd100087453d5.tar.gz
qmmp-3be88d8c0b32bfb77d3d5acc787dd100087453d5.tar.bz2
qmmp-3be88d8c0b32bfb77d3d5acc787dd100087453d5.zip
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
Diffstat (limited to 'src/qmmpui/fileloader.cpp')
-rw-r--r--src/qmmpui/fileloader.cpp55
1 files changed, 42 insertions, 13 deletions
diff --git a/src/qmmpui/fileloader.cpp b/src/qmmpui/fileloader.cpp
index 8205a129a..d86e4a3f4 100644
--- a/src/qmmpui/fileloader.cpp
+++ b/src/qmmpui/fileloader.cpp
@@ -22,6 +22,7 @@
#include <QRegExp>
#include "fileloader_p.h"
#include "qmmpuisettings.h"
+#include "playlistitem.h"
#include "playlisttrack.h"
FileLoader::FileLoader(QObject *parent) : QThread(parent)
@@ -33,16 +34,24 @@ FileLoader::FileLoader(QObject *parent) : QThread(parent)
FileLoader::~FileLoader()
{}
-void FileLoader::addFile(const QString &path)
+void FileLoader::addFile(const QString &path, PlayListItem *before)
{
bool use_meta = m_settings->useMetadata();
QList <FileInfo *> playList = MetaDataManager::instance()->createPlayList(path, use_meta);
- foreach(FileInfo *info, playList)
- emit newTrackToAdd(new PlayListTrack(info));
+ if(before)
+ {
+ foreach(FileInfo *info, playList)
+ emit newTrackToInsert(before, new PlayListTrack(info));
+ }
+ else
+ {
+ foreach(FileInfo *info, playList)
+ emit newTrackToAdd(new PlayListTrack(info));
+ }
qDeleteAll(playList);
}
-void FileLoader::addDirectory(const QString& s)
+void FileLoader::addDirectory(const QString& s, PlayListItem *before)
{
QDir dir(s);
dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
@@ -51,7 +60,7 @@ void FileLoader::addDirectory(const QString& s)
foreach(QFileInfo info, l)
{
if(checkRestrictFilters(info) && checkExcludeFilters(info))
- addFile(info.absoluteFilePath ());
+ addFile(info.absoluteFilePath (), before);
if (m_finished) return;
}
dir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot);
@@ -62,7 +71,7 @@ void FileLoader::addDirectory(const QString& s)
for (int i = 0; i < l.size(); ++i)
{
QFileInfo fileInfo = l.at(i);
- addDirectory(fileInfo.absoluteFilePath ());
+ addDirectory(fileInfo.absoluteFilePath (), before);
if (m_finished) return;
}
}
@@ -70,20 +79,29 @@ void FileLoader::addDirectory(const QString& s)
void FileLoader::run()
{
m_finished = false;
- while(!m_paths.isEmpty() && !m_finished)
+ while((!m_paths.isEmpty() || !m_insertItems.isEmpty()) && !m_finished)
{
- QString path = m_paths.dequeue();
+ PlayListItem *before = 0;
+ QString path;
+ if(!m_insertItems.isEmpty())
+ {
+ InsertItem i = m_insertItems.dequeue();
+ before = i.before;
+ path = i.path;
+ }
+ else if(!m_paths.isEmpty())
+ path = m_paths.dequeue();
QFileInfo info(path);
if(info.isDir())
{
- addDirectory(path);
+ addDirectory(path, before);
continue;
}
else if(info.isFile())
{
- addFile(path);
+ addFile(path, before);
continue;
}
}
@@ -102,13 +120,24 @@ void FileLoader::add(const QStringList &paths)
start(QThread::IdlePriority);
}
-void FileLoader::insert(int index, const QString &path)
+void FileLoader::insert(PlayListItem *before, const QString &path)
{
- insert(index, QStringList() << path);
+ insert(before, QStringList() << path);
}
-void FileLoader::insert(int index, const QStringList &paths)
+void FileLoader::insert(PlayListItem *before, const QStringList &paths)
{
+ foreach (QString path, paths)
+ {
+ InsertItem item;
+ item.before = before;
+ item.path = path;
+ m_insertItems.append(item);
+ }
+
+ MetaDataManager::instance()->prepareForAnotherThread();
+ m_filters = MetaDataManager::instance()->nameFilters();
+ start(QThread::IdlePriority);
}
void FileLoader::finish()