aboutsummaryrefslogtreecommitdiff
path: root/src/qmmpui
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2015-01-17 17:52:35 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2015-01-17 17:52:35 +0000
commitf91f63b99f25d8a01dc1d211e31cc4f39c0476bf (patch)
tree9a72048abb609290caa56f61c3ae8a4983c1d230 /src/qmmpui
parenta5c350a7cd30d835deb6f7f2ef3b913b473725a2 (diff)
downloadqmmp-f91f63b99f25d8a01dc1d211e31cc4f39c0476bf.tar.gz
qmmp-f91f63b99f25d8a01dc1d211e31cc4f39c0476bf.tar.bz2
qmmp-f91f63b99f25d8a01dc1d211e31cc4f39c0476bf.zip
added feature to exclude cue data files
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@4693 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/qmmpui')
-rw-r--r--src/qmmpui/fileloader.cpp33
-rw-r--r--src/qmmpui/fileloader_p.h3
2 files changed, 31 insertions, 5 deletions
diff --git a/src/qmmpui/fileloader.cpp b/src/qmmpui/fileloader.cpp
index 2bd61483c..3bb505108 100644
--- a/src/qmmpui/fileloader.cpp
+++ b/src/qmmpui/fileloader.cpp
@@ -37,10 +37,10 @@ FileLoader::FileLoader(QObject *parent) : QThread(parent)
FileLoader::~FileLoader()
{}
-QList<PlayListTrack *> FileLoader::processFile(const QString &path)
+QList<PlayListTrack *> FileLoader::processFile(const QString &path, QStringList *ignoredPaths)
{
QList<PlayListTrack *> tracks;
- QList <FileInfo *> infoList = MetaDataManager::instance()->createPlayList(path, m_use_meta);
+ QList <FileInfo *> infoList = MetaDataManager::instance()->createPlayList(path, m_use_meta, ignoredPaths);
foreach (FileInfo *info, infoList)
{
@@ -53,14 +53,20 @@ QList<PlayListTrack *> FileLoader::processFile(const QString &path)
void FileLoader::addDirectory(const QString& s, PlayListItem *before)
{
QList<PlayListTrack *> tracks;
+ QStringList ignoredPaths;
QDir dir(s);
dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
dir.setSorting(QDir::Name);
QFileInfoList l = dir.entryInfoList(m_filters);
+
foreach(QFileInfo info, l)
{
if(checkRestrictFilters(info) && checkExcludeFilters(info))
- tracks.append(processFile(info.absoluteFilePath ()));
+ {
+ QStringList paths;
+ tracks.append(processFile(info.absoluteFilePath (), &ignoredPaths));
+ ignoredPaths.append(paths);
+ }
if (m_finished)
{
@@ -69,16 +75,20 @@ void FileLoader::addDirectory(const QString& s, PlayListItem *before)
return;
}
- if(tracks.count() > 20) //do not send more than 20 tracks at once
+ if(tracks.count() > 30) //do not send more than 30 tracks at once
{
+ removeIgnoredTracks(&tracks, ignoredPaths);
emit newTracksToInsert(before, tracks);
tracks.clear();
+ ignoredPaths.clear();
}
}
if(!tracks.isEmpty())
{
+ removeIgnoredTracks(&tracks, ignoredPaths);
emit newTracksToInsert(before, tracks);
+ ignoredPaths.clear();
}
dir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot);
@@ -210,3 +220,18 @@ bool FileLoader::checkExcludeFilters(const QFileInfo &info)
}
return true;
}
+
+void FileLoader::removeIgnoredTracks(QList<PlayListTrack *> *tracks, const QStringList &ignoredPaths)
+{
+ if(ignoredPaths.isEmpty())
+ return;
+
+ foreach(PlayListTrack *track, *tracks)
+ {
+ if(ignoredPaths.contains(track->url()))
+ {
+ tracks->removeAll(track);
+ delete track;
+ }
+ }
+}
diff --git a/src/qmmpui/fileloader_p.h b/src/qmmpui/fileloader_p.h
index d38163e03..b2cf2c006 100644
--- a/src/qmmpui/fileloader_p.h
+++ b/src/qmmpui/fileloader_p.h
@@ -78,10 +78,11 @@ signals:
private:
void run();
- QList<PlayListTrack*> processFile(const QString &path);
+ QList<PlayListTrack*> processFile(const QString &path, QStringList *ignoredPaths = 0);
void addDirectory(const QString &s, PlayListItem *before = 0);
bool checkRestrictFilters(const QFileInfo &info);
bool checkExcludeFilters(const QFileInfo &info);
+ void removeIgnoredTracks(QList<PlayListTrack *> *tracks, const QStringList &ignoredPaths);
struct LoaderTask
{
QString path;