diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/qmmpui/fileloader.cpp | 35 | ||||
| -rw-r--r-- | src/qmmpui/fileloader_p.h | 15 | ||||
| -rw-r--r-- | src/qmmpui/playlistmodel.cpp | 19 |
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(); } |
