aboutsummaryrefslogtreecommitdiff
path: root/src/qmmpui/fileloader.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2010-11-01 17:54:27 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2010-11-01 17:54:27 +0000
commit24af8da3f8942c200ba0058341a66a888224aa3c (patch)
treec01647eef52405ff06ed13e6d151b75cddde3834 /src/qmmpui/fileloader.cpp
parent15d744d752d16aa5621c98cd2de2d6ce3f6e6f46 (diff)
downloadqmmp-24af8da3f8942c200ba0058341a66a888224aa3c.tar.gz
qmmp-24af8da3f8942c200ba0058341a66a888224aa3c.tar.bz2
qmmp-24af8da3f8942c200ba0058341a66a888224aa3c.zip
changed playlist api, prepare for shortcut editor implementation, fixed direcory scan order (Closes issue 207)
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1970 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/qmmpui/fileloader.cpp')
-rw-r--r--src/qmmpui/fileloader.cpp62
1 files changed, 35 insertions, 27 deletions
diff --git a/src/qmmpui/fileloader.cpp b/src/qmmpui/fileloader.cpp
index a20560486..6c53c62a8 100644
--- a/src/qmmpui/fileloader.cpp
+++ b/src/qmmpui/fileloader.cpp
@@ -23,8 +23,7 @@
#include "playlistsettings.h"
#include "playlistitem.h"
-FileLoader::FileLoader(QObject *parent)
- : QThread(parent),m_files_to_load(),m_directory()
+FileLoader::FileLoader(QObject *parent) : QThread(parent)
{
m_filters = MetaDataManager::instance()->nameFilters();
m_finished = false;
@@ -37,18 +36,12 @@ FileLoader::~FileLoader()
}
-void FileLoader::addFiles(const QStringList &files)
+void FileLoader::addFile(const QString &path)
{
- if (files.isEmpty ())
- return;
bool use_meta = PlaylistSettings::instance()->useMetadata();
- foreach(QString s, files)
- {
- QList <FileInfo *> playList = MetaDataManager::instance()->createPlayList(s, use_meta);
- foreach(FileInfo *info, playList)
+ QList <FileInfo *> playList = MetaDataManager::instance()->createPlayList(path, use_meta);
+ foreach(FileInfo *info, playList)
emit newPlayListItem(new PlayListItem(info));
- if (m_finished) return;
- }
}
@@ -59,13 +52,9 @@ void FileLoader::addDirectory(const QString& s)
dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
dir.setSorting(QDir::Name);
QFileInfoList l = dir.entryInfoList(m_filters);
- bool use_meta = PlaylistSettings::instance()->useMetadata();
- for (int i = 0; i < l.size(); ++i)
+ foreach(QFileInfo info, l)
{
- QFileInfo fileInfo = l.at(i);
- playList = MetaDataManager::instance()->createPlayList(fileInfo.absoluteFilePath (), use_meta);
- foreach(FileInfo *info, playList)
- emit newPlayListItem(new PlayListItem(info));
+ addFile(info.absoluteFilePath ());
if (m_finished) return;
}
dir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot);
@@ -83,25 +72,44 @@ void FileLoader::addDirectory(const QString& s)
void FileLoader::run()
{
- if (!m_files_to_load.isEmpty())
- addFiles(m_files_to_load);
- else if (!m_directory.isEmpty())
- addDirectory(m_directory);
+ m_finished = false;
+ while(!m_files.isEmpty() || !m_directories.isEmpty())
+ {
+ if(!m_files.isEmpty())
+ {
+ addFile(m_files.dequeue());
+ continue;
+ }
+ if(!m_directories.isEmpty())
+ {
+ addDirectory(m_directories.dequeue());
+ continue;
+ }
+ }
+}
+
+void FileLoader::loadFile(const QString &path)
+{
+ m_files.enqueue(path);
+ start(QThread::IdlePriority);
}
-void FileLoader::setFilesToLoad(const QStringList & l)
+void FileLoader::loadFiles(const QStringList &paths)
{
- m_files_to_load = l;
- m_directory = QString();
+ m_files << paths;
+ start(QThread::IdlePriority);
}
-void FileLoader::setDirectoryToLoad(const QString & d)
+void FileLoader::loadDirectory(const QString &path)
{
- m_directory = d;
- m_files_to_load.clear();
+ m_directories.enqueue(path);
+ start(QThread::IdlePriority);
}
void FileLoader::finish()
{
m_finished = true;
+ m_files.clear();
+ m_directories.clear();
+ wait();
}