diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2013-11-21 07:10:51 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2013-11-21 07:10:51 +0000 |
| commit | 157b69f61f853e1487cb4f77a218d3fd3b1507bf (patch) | |
| tree | eed388ad835da6867411655333988f5c1f196561 | |
| parent | 10c96554c175b0a73a05e78e9777a1e94099ef3d (diff) | |
| download | qmmp-157b69f61f853e1487cb4f77a218d3fd3b1507bf.tar.gz qmmp-157b69f61f853e1487cb4f77a218d3fd3b1507bf.tar.bz2 qmmp-157b69f61f853e1487cb4f77a218d3fd3b1507bf.zip | |
improved file loader
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@3920 90c681e8-e032-0410-971d-27865f9a5e38
| -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(); } |
