shared: DirscanWorker: Use WildcardMatcher to ignore paths
Esse commit está contido em:
		@@ -7,7 +7,7 @@ DirScanWorker::DirScanWorker(ConcurrentQueue<QString> &queue, ConcurrentQueue<QS
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
	this->queue = &queue;
 | 
						this->queue = &queue;
 | 
				
			||||||
	this->resultQueue = &resultQueue;
 | 
						this->resultQueue = &resultQueue;
 | 
				
			||||||
	this->ignorePattern = ignorePattern;
 | 
						this->wildcardMatcher.setPatterns(ignorePattern);
 | 
				
			||||||
	this->progressReportThreshold = progressReportThreshold;
 | 
						this->progressReportThreshold = progressReportThreshold;
 | 
				
			||||||
	this->stopToken = &stopToken;
 | 
						this->stopToken = &stopToken;
 | 
				
			||||||
	setAutoDelete(false);
 | 
						setAutoDelete(false);
 | 
				
			||||||
@@ -24,10 +24,19 @@ void DirScanWorker::run()
 | 
				
			|||||||
		start new DirScanWorkers ourselves here... */
 | 
							start new DirScanWorkers ourselves here... */
 | 
				
			||||||
	while(queue->dequeue(path))
 | 
						while(queue->dequeue(path))
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		QDirIterator iterator(path, ignorePattern, QDir::Files, QDirIterator::Subdirectories);
 | 
							if(wildcardMatcher.match(path))
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								continue;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							QDirIterator iterator(path, QStringList{}, QDir::Files, QDirIterator::Subdirectories);
 | 
				
			||||||
		while(iterator.hasNext())
 | 
							while(iterator.hasNext())
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			this->results.append(iterator.next());
 | 
								QString entry = iterator.next();
 | 
				
			||||||
 | 
								if(wildcardMatcher.match(entry))
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									continue;
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								this->results.append(entry);
 | 
				
			||||||
			++currentProgress;
 | 
								++currentProgress;
 | 
				
			||||||
			if(currentProgress == progressReportThreshold)
 | 
								if(currentProgress == progressReportThreshold)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,6 +4,7 @@
 | 
				
			|||||||
#include <QRunnable>
 | 
					#include <QRunnable>
 | 
				
			||||||
#include <QDirIterator>
 | 
					#include <QDirIterator>
 | 
				
			||||||
#include "concurrentqueue.h"
 | 
					#include "concurrentqueue.h"
 | 
				
			||||||
 | 
					#include "wildcardmatcher.h"
 | 
				
			||||||
class DirScanWorker : public QObject, public QRunnable
 | 
					class DirScanWorker : public QObject, public QRunnable
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	Q_OBJECT
 | 
						Q_OBJECT
 | 
				
			||||||
@@ -12,7 +13,7 @@ class DirScanWorker : public QObject, public QRunnable
 | 
				
			|||||||
	ConcurrentQueue<QString> *queue = nullptr;
 | 
						ConcurrentQueue<QString> *queue = nullptr;
 | 
				
			||||||
	ConcurrentQueue<QString> *resultQueue = nullptr;
 | 
						ConcurrentQueue<QString> *resultQueue = nullptr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	QStringList ignorePattern;
 | 
						WildcardMatcher wildcardMatcher;
 | 
				
			||||||
	QVector<QString> results;
 | 
						QVector<QString> results;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	std::atomic<bool> *stopToken;
 | 
						std::atomic<bool> *stopToken;
 | 
				
			||||||
 
 | 
				
			|||||||
		Referência em uma nova issue
	
	Block a user