diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2012-02-10 12:21:54 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2012-02-10 12:21:54 +0000 |
| commit | c9cb0def793dcd34aa4d516d9e50c1f0b81e1dc3 (patch) | |
| tree | 3a81db87e4e9dd6995da27c63362e4f0fa06a062 /src/qmmpui/fileloader.cpp | |
| parent | bc28f1332bbbf9bad49bbad6fd01ef03b4ab99b9 (diff) | |
| download | qmmp-c9cb0def793dcd34aa4d516d9e50c1f0b81e1dc3.tar.gz qmmp-c9cb0def793dcd34aa4d516d9e50c1f0b81e1dc3.tar.bz2 qmmp-c9cb0def793dcd34aa4d516d9e50c1f0b81e1dc3.zip | |
added directory filters
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2589 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/qmmpui/fileloader.cpp')
| -rw-r--r-- | src/qmmpui/fileloader.cpp | 35 |
1 files changed, 33 insertions, 2 deletions
diff --git a/src/qmmpui/fileloader.cpp b/src/qmmpui/fileloader.cpp index 502b38401..6cb0a90c9 100644 --- a/src/qmmpui/fileloader.cpp +++ b/src/qmmpui/fileloader.cpp @@ -19,12 +19,14 @@ ***************************************************************************/ #include <qmmp/metadatamanager.h> +#include <QRegExp> #include "fileloader_p.h" #include "qmmpuisettings.h" #include "playlistitem.h" FileLoader::FileLoader(QObject *parent) : QThread(parent) { + m_settings = QmmpUiSettings::instance(); m_finished = false; } @@ -33,7 +35,7 @@ FileLoader::~FileLoader() void FileLoader::addFile(const QString &path) { - bool use_meta = QmmpUiSettings::instance()->useMetadata(); + bool use_meta = m_settings->useMetadata(); QList <FileInfo *> playList = MetaDataManager::instance()->createPlayList(path, use_meta); foreach(FileInfo *info, playList) emit newPlayListItem(new PlayListItem(info)); @@ -47,7 +49,8 @@ void FileLoader::addDirectory(const QString& s) QFileInfoList l = dir.entryInfoList(m_filters); foreach(QFileInfo info, l) { - addFile(info.absoluteFilePath ()); + if(checkRestrictFilters(info) && checkExcludeFilters(info)) + addFile(info.absoluteFilePath ()); if (m_finished) return; } dir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot); @@ -112,3 +115,31 @@ void FileLoader::finish() m_directories.clear(); wait(); } + +bool FileLoader::checkRestrictFilters(const QFileInfo &info) +{ + if(m_settings->restrictFilters().isEmpty()) + return true; + + foreach(QString filter, m_settings->restrictFilters()) + { + QRegExp regexp (filter, Qt::CaseInsensitive, QRegExp::Wildcard); + if(regexp.exactMatch(info.absoluteFilePath())) + return true; + } + return false; +} + +bool FileLoader::checkExcludeFilters(const QFileInfo &info) +{ + if(m_settings->excludeFilters().isEmpty()) + return true; + + foreach(QString filter, m_settings->excludeFilters()) + { + QRegExp regexp (filter, Qt::CaseInsensitive, QRegExp::Wildcard); + if(regexp.exactMatch(info.absoluteFilePath())) + return false; + } + return true; +} |
