aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/qmmpui/fileloader.cpp35
-rw-r--r--src/qmmpui/fileloader_p.h15
-rw-r--r--src/qmmpui/playlistmodel.cpp19
3 files changed, 27 insertions, 42 deletions
diff --git a/src/qmmpui/fileloader.cpp b/src/qmmpui/fileloader.cpp
index ef1caf8e1..6fc32cc3e 100644
--- a/src/qmmpui/fileloader.cpp
+++ b/src/qmmpui/fileloader.cpp
@@ -70,50 +70,43 @@ void FileLoader::addDirectory(const QString& s)
void FileLoader::run()
{
m_finished = false;
- while(!m_files.isEmpty() || !m_directories.isEmpty())
+ while(!m_paths.isEmpty() && !m_finished)
{
- if(!m_files.isEmpty())
+ QString path = m_paths.dequeue();
+
+ QFileInfo info(path);
+
+ if(info.isDir())
{
- addFile(m_files.dequeue());
+ addDirectory(path);
continue;
}
- if(!m_directories.isEmpty())
+ else if(info.isFile())
{
- addDirectory(m_directories.dequeue());
+ addFile(path);
continue;
}
}
}
-void FileLoader::loadFile(const QString &path)
+void FileLoader::load(const QString &path)
{
- m_files.enqueue(path);
- MetaDataManager::instance()->prepareForAnotherThread();
- m_filters = MetaDataManager::instance()->nameFilters();
- start(QThread::IdlePriority);
+ load(QStringList() << path);
}
-void FileLoader::loadFiles(const QStringList &paths)
+void FileLoader::load(const QStringList &paths)
{
- m_files << paths;
+ m_paths << paths;
MetaDataManager::instance()->prepareForAnotherThread();
m_filters = MetaDataManager::instance()->nameFilters();
start(QThread::IdlePriority);
}
-void FileLoader::loadDirectory(const QString &path)
-{
- m_directories.enqueue(path);
- m_filters = MetaDataManager::instance()->nameFilters();
- start(QThread::IdlePriority);
-}
-
void FileLoader::finish()
{
m_finished = true;
- m_files.clear();
- m_directories.clear();
wait();
+ m_paths.clear();
}
bool FileLoader::checkRestrictFilters(const QFileInfo &info)
diff --git a/src/qmmpui/fileloader_p.h b/src/qmmpui/fileloader_p.h
index fc3c798f3..9bb30a307 100644
--- a/src/qmmpui/fileloader_p.h
+++ b/src/qmmpui/fileloader_p.h
@@ -56,17 +56,13 @@ public:
*/
void finish();
/*!
- * Sets file to load
+ * Sets file/directory to load
*/
- void loadFile(const QString &path);
+ void load(const QString &path);
/*!
- * Sets files to load
+ * Sets files/directories to load
*/
- void loadFiles(const QStringList &paths);
- /*!
- * Sets directory to load
- */
- void loadDirectory(const QString &path);
+ void load(const QStringList &paths);
signals:
/*!
@@ -83,8 +79,7 @@ protected:
private:
bool checkRestrictFilters(const QFileInfo &info);
bool checkExcludeFilters(const QFileInfo &info);
- QQueue <QString> m_files;
- QQueue <QString> m_directories;
+ QQueue <QString> m_paths;
QStringList m_filters;
QmmpUiSettings *m_settings;
bool m_finished;
diff --git a/src/qmmpui/playlistmodel.cpp b/src/qmmpui/playlistmodel.cpp
index b923a9848..50c364aa9 100644
--- a/src/qmmpui/playlistmodel.cpp
+++ b/src/qmmpui/playlistmodel.cpp
@@ -130,21 +130,16 @@ void PlayListModel::add(QList<PlayListTrack *> tracks)
void PlayListModel::add(const QString &path)
{
- QFileInfo f_info(path);
- if (f_info.isDir())
- m_loader->loadDirectory(path);
- else
- {
- m_loader->loadFile(path);
- loadPlaylist(path);
- }
+ m_loader->load(path);
+ loadPlaylist(path);
}
void PlayListModel::add(const QStringList &paths)
{
+ m_loader->load(paths);
foreach(QString str, paths)
{
- add(str);
+ loadPlaylist(str);
}
}
@@ -792,8 +787,10 @@ void PlayListModel::doCurrentVisibleRequest()
void PlayListModel::loadPlaylist(const QString &f_name)
{
+ if(!QFile::exists(f_name))
+ return;
PlayListFormat* prs = PlayListParser::findByPath(f_name);
- if(!prs || !QFile::exists(f_name))
+ if(!prs)
return;
QFile file(f_name);
@@ -817,7 +814,7 @@ void PlayListModel::loadPlaylist(const QString &f_name)
if (QFileInfo(list.at(i)).isRelative())
list[i].prepend(QFileInfo(f_name).canonicalPath () + QDir::separator ());
}
- m_loader->loadFiles(list);
+ m_loader->load(list);
file.close();
}