diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2015-01-17 17:52:35 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2015-01-17 17:52:35 +0000 |
| commit | f91f63b99f25d8a01dc1d211e31cc4f39c0476bf (patch) | |
| tree | 9a72048abb609290caa56f61c3ae8a4983c1d230 /src/qmmpui/fileloader.cpp | |
| parent | a5c350a7cd30d835deb6f7f2ef3b913b473725a2 (diff) | |
| download | qmmp-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/fileloader.cpp')
| -rw-r--r-- | src/qmmpui/fileloader.cpp | 33 |
1 files changed, 29 insertions, 4 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; + } + } +} |
