From c9cb0def793dcd34aa4d516d9e50c1f0b81e1dc3 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Fri, 10 Feb 2012 12:21:54 +0000 Subject: added directory filters git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2589 90c681e8-e032-0410-971d-27865f9a5e38 --- src/qmmpui/fileloader.cpp | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) (limited to 'src/qmmpui/fileloader.cpp') 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 +#include #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 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; +} -- cgit v1.2.3-13-gbd6f