|  |  | @@ -45,6 +45,7 @@ int CommandAdd::handle(QStringList arguments) | 
			
		
	
		
		
			
				
					
					|  |  |  | 						"exit asap, but it's possible that a few files will still be processed. " |  |  |  | 						"exit asap, but it's possible that a few files will still be processed. " | 
			
		
	
		
		
			
				
					
					|  |  |  | 						"Set -t 1 to avoid this behavior, but processing will be slower. "}, |  |  |  | 						"Set -t 1 to avoid this behavior, but processing will be slower. "}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 					   {{"n", "no-content"}, "Only add paths to database. Do not index content"}, |  |  |  | 					   {{"n", "no-content"}, "Only add paths to database. Do not index content"}, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					   {{"v", "verbose"}, "Print paths of files being processed"}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 					   {{"f", "fill-content"}, "Index content for files previously indexed with -n"}, |  |  |  | 					   {{"f", "fill-content"}, "Index content for files previously indexed with -n"}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 					   {"tags", "Comma-separated list of tags to assign"}, |  |  |  | 					   {"tags", "Comma-separated list of tags to assign"}, | 
			
		
	
		
		
			
				
					
					|  |  |  | 					   {{"t", "threads"}, "Number of threads to use.", "threads"}}); |  |  |  | 					   {{"t", "threads"}, "Number of threads to use.", "threads"}}); | 
			
		
	
	
		
		
			
				
					
					|  |  | @@ -56,6 +57,8 @@ int CommandAdd::handle(QStringList arguments) | 
			
		
	
		
		
			
				
					
					|  |  |  | 	this->keepGoing = parser.isSet("continue"); |  |  |  | 	this->keepGoing = parser.isSet("continue"); | 
			
		
	
		
		
			
				
					
					|  |  |  | 	bool pathsOnly = parser.isSet("no-content"); |  |  |  | 	bool pathsOnly = parser.isSet("no-content"); | 
			
		
	
		
		
			
				
					
					|  |  |  | 	bool fillContent = parser.isSet("fill-content"); |  |  |  | 	bool fillContent = parser.isSet("fill-content"); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	bool verbose = parser.isSet("verbose"); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	if(parser.isSet("threads")) |  |  |  | 	if(parser.isSet("threads")) | 
			
		
	
		
		
			
				
					
					|  |  |  | 	{ |  |  |  | 	{ | 
			
		
	
		
		
			
				
					
					|  |  |  | 		QString threadsCount = parser.value("threads"); |  |  |  | 		QString threadsCount = parser.value("threads"); | 
			
		
	
	
		
		
			
				
					
					|  |  | @@ -85,18 +88,43 @@ int CommandAdd::handle(QStringList arguments) | 
			
		
	
		
		
			
				
					
					|  |  |  | 	fileSaverOptions.keepGoing = keepGoing; |  |  |  | 	fileSaverOptions.keepGoing = keepGoing; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	fileSaverOptions.fillExistingContentless = fillContent; |  |  |  | 	fileSaverOptions.fillExistingContentless = fillContent; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	fileSaverOptions.metadataOnly = pathsOnly; |  |  |  | 	fileSaverOptions.metadataOnly = pathsOnly; | 
			
		
	
		
		
			
				
					
					|  |  |  | 	fileSaverOptions.verbose = false; |  |  |  | 	fileSaverOptions.verbose = verbose; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	indexer = new Indexer(*this->dbService); |  |  |  | 	indexer = new Indexer(*this->dbService); | 
			
		
	
		
		
			
				
					
					|  |  |  | 	indexer->setFileSaverOptions(fileSaverOptions); |  |  |  | 	indexer->setFileSaverOptions(fileSaverOptions); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	indexer->setTargetPaths(files.toVector()); |  |  |  | 	indexer->setTargetPaths(files.toVector()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	if(verbose) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	{ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 		indexer->setProgressReportThreshold(1); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	connect(indexer, &Indexer::pathsCountChanged, this, |  |  |  | 	connect(indexer, &Indexer::pathsCountChanged, this, | 
			
		
	
		
		
			
				
					
					|  |  |  | 			[](int pathsCount) { Logger::info() << "Found paths: " << pathsCount << Qt::endl; }); |  |  |  | 			[](int pathsCount) { Logger::info() << "Found paths: " << pathsCount << Qt::endl; }); | 
			
		
	
		
		
			
				
					
					|  |  |  | 	connect(indexer, &Indexer::indexProgress, this, |  |  |  | 	connect(indexer, &Indexer::indexProgress, this, | 
			
		
	
		
		
			
				
					
					|  |  |  | 			[](int pathsCount, unsigned int /*added*/, unsigned int /*skipped*/, unsigned int /*failed*/, |  |  |  | 			[verbose, this](int pathsCount, unsigned int /*added*/, unsigned int /*skipped*/, unsigned int /*failed*/, | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 			   unsigned int /*totalCount*/) { Logger::info() << "Processed files: " << pathsCount << Qt::endl; }); |  |  |  | 							unsigned int /*totalCount*/) | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			{ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				Logger::info() << "Processed files: " << pathsCount << Qt::endl; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				if(verbose) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				{ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					IndexResult indexResult = indexer->getResult(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					int newlyAdded = indexResult.results.count() - currentResult.results.count(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					if(newlyAdded > 0) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					{ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 						int newOffset = indexResult.results.count() - newlyAdded; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 						for(int i = newOffset; i < indexResult.results.count(); i++) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 						{ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 							auto result = indexResult.results.at(i); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 							Logger::info() << SaveFileResultToString(result.second) << result.first << Qt::endl; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 						} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 					this->currentResult = indexResult; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 				} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 			} | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 	); | 
			
		
	
		
		
			
				
					
					|  |  |  | 	connect(indexer, &Indexer::finished, this, &CommandAdd::indexerFinished); |  |  |  | 	connect(indexer, &Indexer::finished, this, &CommandAdd::indexerFinished); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 	this->autoFinish = false; |  |  |  | 	this->autoFinish = false; | 
			
		
	
	
		
		
			
				
					
					|  |  |   |