aboutsummaryrefslogtreecommitdiff
path: root/src/qmmpui/fileloader.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2012-02-10 12:21:54 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2012-02-10 12:21:54 +0000
commitc9cb0def793dcd34aa4d516d9e50c1f0b81e1dc3 (patch)
tree3a81db87e4e9dd6995da27c63362e4f0fa06a062 /src/qmmpui/fileloader.cpp
parentbc28f1332bbbf9bad49bbad6fd01ef03b4ab99b9 (diff)
downloadqmmp-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.cpp35
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;
+}