summaryrefslogtreecommitdiff
path: root/plugins/CopyEngine/Ultracopier/ScanFileOrFolder.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/CopyEngine/Ultracopier/ScanFileOrFolder.cpp')
-rw-r--r--plugins/CopyEngine/Ultracopier/ScanFileOrFolder.cpp680
1 files changed, 0 insertions, 680 deletions
diff --git a/plugins/CopyEngine/Ultracopier/ScanFileOrFolder.cpp b/plugins/CopyEngine/Ultracopier/ScanFileOrFolder.cpp
deleted file mode 100644
index 9dd48f3..0000000
--- a/plugins/CopyEngine/Ultracopier/ScanFileOrFolder.cpp
+++ /dev/null
@@ -1,680 +0,0 @@
-#include "ScanFileOrFolder.h"
-#include "TransferThread.h"
-#include <QtGlobal>
-#include <QDateTime>
-#include <regex>
-#include "../../../cpp11addition.h"
-
-#ifdef Q_OS_WIN32
- #ifndef NOMINMAX
- #define NOMINMAX
- #endif
- #include <windows.h>
-#endif
-
-std::string ScanFileOrFolder::text_slash="/";
-std::string ScanFileOrFolder::text_antislash="\\";
-std::string ScanFileOrFolder::text_dot=".";
-
-ScanFileOrFolder::ScanFileOrFolder(const Ultracopier::CopyMode &mode)
-{
- #ifdef ULTRACOPIER_PLUGIN_RSYNC
- rsync = false;
- #endif
- moveTheWholeFolder = true;
- stopped = true;
- stopIt = false;
- this->mode = mode;
- folder_isolation = std::regex("^(.*/)?([^/]+)/$");
- setObjectName(QStringLiteral("ScanFileOrFolder"));
- #ifdef Q_OS_WIN32
- QString userName;
- DWORD size=255;
- WCHAR * userNameW=new WCHAR[size];
- if(GetUserNameW(userNameW,&size))
- {
- userName=QString::fromWCharArray(userNameW,size-1);
- blackList.push_back(QFileInfo(QStringLiteral("C:/Users/%1/AppData/Roaming/").arg(userName)).absoluteFilePath().toStdString());
- }
- delete userNameW;
- #endif
-}
-
-ScanFileOrFolder::~ScanFileOrFolder()
-{
- stop();
- quit();
- wait();
-}
-
-bool ScanFileOrFolder::isFinished() const
-{
- return stopped;
-}
-
-void ScanFileOrFolder::addToList(const std::vector<std::string>& sources,const std::string& destination)
-{
- stopIt=false;
- this->sources=parseWildcardSources(sources);
- this->destination=destination;
- QFileInfo destinationInfo(QString::fromStdString(this->destination));
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"check symblink: "+destinationInfo.absoluteFilePath().toStdString());
- while(destinationInfo.isSymLink())
- {
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"resolv destination to: "+destinationInfo.symLinkTarget().toStdString());
- if(QFileInfo(destinationInfo.symLinkTarget()).isAbsolute())
- this->destination=destinationInfo.symLinkTarget().toStdString();
- else
- this->destination=destinationInfo.absolutePath().toStdString()+text_slash+destinationInfo.symLinkTarget().toStdString();
- destinationInfo.setFile(QString::fromStdString(this->destination));
- }
- if(sources.size()>1 || QFileInfo(QString::fromStdString(destination)).isDir())
- /* Disabled because the separator transformation product bug
- * if(!destination.endsWith(QDir::separator()))
- this->destination+=QDir::separator();*/
- if(!stringEndsWith(destination,'/') && !stringEndsWith(destination,'\\'))
- this->destination+=text_slash;//put unix separator because it's transformed into that's under windows too
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"addToList("+stringimplode(sources,";")+","+this->destination+")");
-}
-
-
-std::vector<std::string> ScanFileOrFolder::parseWildcardSources(const std::vector<std::string> &sources) const
-{
- std::regex splitFolder("[/\\\\]");
- std::vector<std::string> returnList;
- unsigned int index=0;
- while(index<(unsigned int)sources.size())
- {
- if(sources.at(index).find("*") != std::string::npos)
- {
- std::vector<std::string> toParse=stringregexsplit(sources.at(index),splitFolder);
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"before wildcard parse: "+sources.at(index)+", toParse: "+stringimplode(toParse,", "));
- std::vector<std::vector<std::string> > recomposedSource;
- {
- std::vector<std::string> t;
- t.push_back("");
- recomposedSource.push_back(t);
- }
- while(toParse.size()>0)
- {
- if(toParse.front().find("*") != std::string::npos)
- {
- std::string toParseFirst=toParse.front();
- if(toParseFirst.empty())
- toParseFirst=text_slash;
- std::vector<std::vector<std::string> > newRecomposedSource;
- stringreplaceAll(toParseFirst,"*","[^/\\\\]*");
- std::regex toResolv=std::regex(toParseFirst);
- unsigned int index_recomposedSource=0;
- while(index_recomposedSource<recomposedSource.size())//parse each url part
- {
- QFileInfo info(QString::fromStdString(stringimplode(recomposedSource.at(index_recomposedSource),text_slash)));
- if(info.isDir() && !info.isSymLink())
- {
- QDir folder(info.absoluteFilePath());
- QFileInfoList fileFile=folder.entryInfoList(QDir::AllEntries|QDir::NoDotAndDotDot|QDir::Hidden|QDir::System);//QStringList() << toResolv
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"list the folder: "+info.absoluteFilePath().toStdString()+", with the wildcard: "+toParseFirst);
- int index_fileList=0;
- while(index_fileList<fileFile.size())
- {
- const std::string &fileName=fileFile.at(index_fileList).fileName().toStdString();
- if(std::regex_match(fileName,toResolv))
- {
- std::vector<std::string> tempList=recomposedSource.at(index_recomposedSource);
- tempList.push_back(fileName);
- newRecomposedSource.push_back(tempList);
- }
- index_fileList++;
- }
- }
- index_recomposedSource++;
- }
- recomposedSource=newRecomposedSource;
- }
- else
- {
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"add toParse: "+stringimplode(toParse,text_slash));
- unsigned int index_recomposedSource=0;
- while(index_recomposedSource<recomposedSource.size())
- {
- recomposedSource[index_recomposedSource].push_back(toParse.front());
- if(!QFileInfo(QString::fromStdString(stringimplode(recomposedSource.at(index_recomposedSource),text_slash))).exists())
- recomposedSource.erase(recomposedSource.cbegin()+index_recomposedSource);
- else
- index_recomposedSource++;
- }
- }
- toParse.erase(toParse.cbegin());
- }
- unsigned int index_recomposedSource=0;
- while(index_recomposedSource<recomposedSource.size())
- {
- returnList.push_back(stringimplode(recomposedSource.at(index_recomposedSource),text_slash));
- index_recomposedSource++;
- }
- }
- else
- returnList.push_back(sources.at(index));
- index++;
- }
- return returnList;
-}
-
-void ScanFileOrFolder::setFilters(const std::vector<Filters_rules> &include, const std::vector<Filters_rules> &exclude)
-{
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
- QMutexLocker lock(&filtersMutex);
- this->include_send=include;
- this->exclude_send=exclude;
- reloadTheNewFilters=true;
- haveFilters=include_send.size()>0 || exclude_send.size()>0;
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"haveFilters: "+std::to_string(haveFilters)+", include_send.size(): "+std::to_string(include_send.size())+", exclude_send.size(): "+std::to_string(exclude_send.size()));
-}
-
-//set action if Folder are same or exists
-void ScanFileOrFolder::setFolderExistsAction(const FolderExistsAction &action, const std::string &newName)
-{
- this->newName=newName;
- folderExistsAction=action;
- waitOneAction.release();
-}
-
-//set action if error
-void ScanFileOrFolder::setFolderErrorAction(const FileErrorAction &action)
-{
- fileErrorAction=action;
- waitOneAction.release();
-}
-
-void ScanFileOrFolder::stop()
-{
- stopIt=true;
- waitOneAction.release();
-}
-
-void ScanFileOrFolder::run()
-{
- stopped=false;
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start the listing with destination: "+destination+", mode: "+std::to_string(mode));
- destination=resolvDestination(QString::fromStdString(destination)).absoluteFilePath().toStdString();
- if(stopIt)
- {
- stopped=true;
- return;
- }
- if(fileErrorAction==FileError_Skip)
- {
- stopped=true;
- return;
- }
- unsigned int sourceIndex=0;
- while(sourceIndex<sources.size())
- {
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"size source to list: "+std::to_string(sourceIndex)+text_slash+std::to_string(sources.size()));
- if(stopIt)
- {
- stopped=true;
- return;
- }
- QFileInfo source=QString::fromStdString(sources.at(sourceIndex));
- if(source.isDir() && !source.isSymLink())
- {
- /* Bad way; when you copy c:\source\folder into d:\destination, you wait it create the folder d:\destination\folder
- //listFolder(source.absoluteFilePath()+QDir::separator(),destination);
- listFolder(source.absoluteFilePath()+text_slash,destination);//put unix separator because it's transformed into that's under windows too
- */
- //put unix separator because it's transformed into that's under windows too
- std::string tempString=QFileInfo(QString::fromStdString(destination)).absoluteFilePath().toStdString();
- if(!stringEndsWith(tempString,text_slash) && !stringEndsWith(tempString,text_antislash))
- tempString+=text_slash;
- tempString+=TransferThread::resolvedName(source);
- if(moveTheWholeFolder && mode==Ultracopier::Move && !QFileInfo(QString::fromStdString(tempString)).exists() &&
- driveManagement.isSameDrive(source.absoluteFilePath().toStdString(),tempString))
- {
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"tempString: move and not exists: "+tempString);
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"do real move: "+source.absoluteFilePath().toStdString()+" to "+tempString);
- emit addToRealMove(source.absoluteFilePath(),QString::fromStdString(tempString));
- }
- else
- {
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"tempString: "+tempString+" normal listing, blacklist size: "+std::to_string(blackList.size()));
- listFolder(source.absoluteFilePath(),QString::fromStdString(tempString));
- }
- }
- else
- {
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"source: "+source.absoluteFilePath().toStdString()+" is file or symblink");
- emit fileTransfer(source,QString::fromStdString(destination+text_slash)+source.fileName(),mode);
- }
- sourceIndex++;
- }
- stopped=true;
- if(stopIt)
- return;
- emit finishedTheListing();
-}
-
-QFileInfo ScanFileOrFolder::resolvDestination(const QFileInfo &destination)
-{
- QFileInfo newDestination=destination;
- while(newDestination.isSymLink())
- {
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"resolv destination to: "+newDestination.symLinkTarget().toStdString());
- if(QFileInfo(newDestination.symLinkTarget()).isAbsolute())
- newDestination.setFile(newDestination.symLinkTarget());
- else
- newDestination.setFile(newDestination.absolutePath()+QString::fromStdString(text_slash)+newDestination.symLinkTarget());
- }
- do
- {
- fileErrorAction=FileError_NotSet;
- if(isBlackListed(destination))
- {
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"isBlackListed: "+destination.absoluteFilePath().toStdString());
- emit errorOnFolder(destination,tr("Blacklisted folder").toStdString(),ErrorType_Folder);
- waitOneAction.acquire();
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"actionNum: "+std::to_string(fileErrorAction));
- }
- } while(fileErrorAction==FileError_Retry || fileErrorAction==FileError_PutToEndOfTheList);
- return newDestination;
-}
-
-bool ScanFileOrFolder::isBlackListed(const QFileInfo &destination)
-{
- int index=0;
- int size=blackList.size();
- while(index<size)
- {
- if(stringStartWith(destination.absoluteFilePath().toStdString(),blackList.at(index)))
- {
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,destination.absoluteFilePath().toStdString()+" start with: "+blackList.at(index));
- return true;
- }
- else
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,destination.absoluteFilePath().toStdString()+" not start with: "+blackList.at(index));
- index++;
- }
- return false;
-}
-
-void ScanFileOrFolder::listFolder(QFileInfo source,QFileInfo destination)
-{
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"source: "+source.absoluteFilePath().toStdString()+
- " ("+std::to_string(source.isSymLink())+"), destination: "+destination.absoluteFilePath().toStdString()+
- " ("+std::to_string(destination.isSymLink())+")");
- if(stopIt)
- return;
- destination=resolvDestination(destination);
- if(stopIt)
- return;
- if(fileErrorAction==FileError_Skip)
- return;
- //if is same
- if(source.absoluteFilePath()==destination.absoluteFilePath())
- {
- emit folderAlreadyExists(source,destination,true);
- waitOneAction.acquire();
- std::string destinationSuffixPath;
- switch(folderExistsAction)
- {
- case FolderExists_Merge:
- break;
- case FolderExists_Skip:
- return;
- break;
- case FolderExists_Rename:
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"destination before rename: "+destination.absoluteFilePath().toStdString());
- if(newName.empty())
- {
- //ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"pattern: "+folder_isolation.str());
- //resolv the new name
- destinationSuffixPath=destination.baseName().toStdString();
- int num=1;
- do
- {
- if(num==1)
- {
- if(firstRenamingRule.empty())
- destinationSuffixPath=tr("%1 - copy").arg(destination.baseName()).toStdString();
- else
- destinationSuffixPath=firstRenamingRule;
- }
- else
- {
- if(otherRenamingRule.empty())
- destinationSuffixPath=tr("%1 - copy (%2)").arg(destination.baseName()).arg(num).toStdString();
- else
- {
- destinationSuffixPath=otherRenamingRule;
- stringreplaceAll(destinationSuffixPath,"%number%",std::to_string(num));
- }
- }
- stringreplaceAll(destinationSuffixPath,"%name%",destination.baseName().toStdString());
- num++;
- if(destination.completeSuffix().isEmpty())
- destination.setFile(destination.absolutePath()+QString::fromStdString(text_slash)+QString::fromStdString(destinationSuffixPath));
- else
- destination.setFile(destination.absolutePath()+QString::fromStdString(text_slash)+QString::fromStdString(destinationSuffixPath)+QString::fromStdString(text_dot)+destination.completeSuffix());
- }
- while(destination.exists());
- }
- else
- {
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"use new name: "+newName);
- destinationSuffixPath = newName;
- }
- destination.setFile(destination.absolutePath()+QString::fromStdString(text_slash+destinationSuffixPath));
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"destination after rename: "+destination.absoluteFilePath().toStdString());
- break;
- default:
- return;
- break;
- }
- }
- //check if destination exists
- if(checkDestinationExists)
- {
- if(destination.exists())
- {
- emit folderAlreadyExists(source,destination,false);
- waitOneAction.acquire();
- std::string destinationSuffixPath;
- switch(folderExistsAction)
- {
- case FolderExists_Merge:
- break;
- case FolderExists_Skip:
- return;
- break;
- case FolderExists_Rename:
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"destination before rename: "+destination.absoluteFilePath().toStdString());
- if(newName.empty())
- {
- //resolv the new name
- QFileInfo destinationInfo;
- int num=1;
- do
- {
- if(num==1)
- {
- if(firstRenamingRule.empty())
- destinationSuffixPath=tr("%name% - copy").toStdString();
- else
- destinationSuffixPath=firstRenamingRule;
- }
- else
- {
- if(otherRenamingRule.empty())
- destinationSuffixPath=tr("%name% - copy (%number%)").toStdString();
- else
- destinationSuffixPath=otherRenamingRule;
- stringreplaceAll(destinationSuffixPath,"%number%",std::to_string(num));
- }
- stringreplaceAll(destinationSuffixPath,"%name%",destination.baseName().toStdString());
- destinationInfo.setFile(destinationInfo.absolutePath()+QString::fromStdString(text_slash)+QString::fromStdString(destinationSuffixPath));
- num++;
- }
- while(destinationInfo.exists());
- }
- else
- {
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"use new name: "+newName);
- destinationSuffixPath = newName;
- }
- if(destination.completeSuffix().isEmpty())
- destination.setFile(destination.absolutePath()+QString::fromStdString(text_slash)+QString::fromStdString(destinationSuffixPath));
- else
- destination.setFile(destination.absolutePath()+QString::fromStdString(text_slash)+QString::fromStdString(destinationSuffixPath)+QStringLiteral(".")+destination.completeSuffix());
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"destination after rename: "+destination.absoluteFilePath().toStdString());
- break;
- default:
- return;
- break;
- }
- }
- }
- //do source check
- //check of source is readable
- do
- {
- fileErrorAction=FileError_NotSet;
- if(!source.isReadable() || !source.isExecutable() || !source.exists() || !source.isDir())
- {
- if(!source.isDir())
- emit errorOnFolder(source,tr("This is not a folder").toStdString());
- else if(!source.exists())
- emit errorOnFolder(source,tr("The folder does exists").toStdString());
- else
- emit errorOnFolder(source,tr("The folder is not readable").toStdString());
- waitOneAction.acquire();
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"actionNum: "+std::to_string(fileErrorAction));
- }
- } while(fileErrorAction==FileError_Retry);
- do
- {
- QDir tempDir(source.absoluteFilePath());
- fileErrorAction=FileError_NotSet;
- if(!tempDir.isReadable() || !tempDir.exists())
- {
- emit errorOnFolder(source,tr("Problem with name encoding").toStdString());
- waitOneAction.acquire();
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"actionNum: "+std::to_string(fileErrorAction));
- }
- } while(fileErrorAction==FileError_Retry);
- if(stopIt)
- return;
- /// \todo check here if the folder is not readable or not exists
- QFileInfoList entryList;
- if(copyListOrder)
- entryList=QDir(source.absoluteFilePath()).entryInfoList(QDir::AllEntries|QDir::NoDotAndDotDot|QDir::Hidden|QDir::System,QDir::DirsFirst|QDir::Name|QDir::IgnoreCase);//possible wait time here
- else
- entryList=QDir(source.absoluteFilePath()).entryInfoList(QDir::AllEntries|QDir::NoDotAndDotDot|QDir::Hidden|QDir::System);//possible wait time here
- if(stopIt)
- return;
- int sizeEntryList=entryList.size();
- emit newFolderListing(source.absoluteFilePath().toStdString());
- if(mode!=Ultracopier::Move)
- emit addToMkPath(source,destination,sizeEntryList);
- for (int index=0;index<sizeEntryList;++index)
- {
- QFileInfo fileInfo=entryList.at(index);
- if(stopIt)
- return;
- if(haveFilters)
- {
- if(reloadTheNewFilters)
- {
- QMutexLocker lock(&filtersMutex);
- QCoreApplication::processEvents(QEventLoop::AllEvents);
- reloadTheNewFilters=false;
- this->include=this->include_send;
- this->exclude=this->exclude_send;
- }
- std::string fileName=fileInfo.fileName().toStdString();
- if(fileInfo.isDir() && !fileInfo.isSymLink())
- {
- bool excluded=false,included=(include.size()==0);
- unsigned int filters_index=0;
- while(filters_index<exclude.size())
- {
- if(exclude.at(filters_index).apply_on==ApplyOn_folder || exclude.at(filters_index).apply_on==ApplyOn_fileAndFolder)
- {
- if(std::regex_match(fileName,exclude.at(filters_index).regex))
- {
- excluded=true;
- break;
- }
- }
- filters_index++;
- }
- if(excluded)
- {}
- else
- {
- filters_index=0;
- while(filters_index<include.size())
- {
- if(include.at(filters_index).apply_on==ApplyOn_folder || include.at(filters_index).apply_on==ApplyOn_fileAndFolder)
- {
- if(std::regex_match(fileName,include.at(filters_index).regex))
- {
- included=true;
- break;
- }
- }
- filters_index++;
- }
- if(!included)
- {}
- else
- listFolder(fileInfo,destination.absoluteFilePath()+QString::fromStdString(text_slash)+fileInfo.fileName());
- }
- }
- else
- {
- bool excluded=false,included=(include.size()==0);
- unsigned int filters_index=0;
- while(filters_index<exclude.size())
- {
- if(exclude.at(filters_index).apply_on==ApplyOn_file || exclude.at(filters_index).apply_on==ApplyOn_fileAndFolder)
- {
- if(std::regex_match(fileName,exclude.at(filters_index).regex))
- {
- excluded=true;
- break;
- }
- }
- filters_index++;
- }
- if(excluded)
- {}
- else
- {
- filters_index=0;
- while(filters_index<include.size())
- {
- if(include.at(filters_index).apply_on==ApplyOn_file || include.at(filters_index).apply_on==ApplyOn_fileAndFolder)
- {
- if(std::regex_match(fileName,include.at(filters_index).regex))
- {
- included=true;
- break;
- }
- }
- filters_index++;
- }
- if(!included)
- {}
- else
- #ifndef ULTRACOPIER_PLUGIN_RSYNC
- emit fileTransfer(fileInfo,destination.absoluteFilePath()+QString::fromStdString(text_slash)+fileInfo.fileName(),mode);
- #else
- {
- bool sendToTransfer=false;
- if(!rsync)
- sendToTransfer=true;
- else if(!QFile::exists(destination.absoluteFilePath()+"/"+fileInfo.fileName()))
- sendToTransfer=true;
- else if(fileInfo.lastModified()!=QFileInfo(destination.absoluteFilePath()+"/"+fileInfo.fileName()).lastModified())
- sendToTransfer=true;
- if(sendToTransfer)
- emit fileTransfer(fileInfo.absoluteFilePath(),destination.absoluteFilePath()+"/"+fileInfo.fileName(),mode);
- }
- #endif
- }
- }
- }
- else
- {
- if(fileInfo.isDir() && !fileInfo.isSymLink())//possible wait time here
- //listFolder(source,destination,suffixPath+fileInfo.fileName()+QDir::separator());
- listFolder(fileInfo,destination.absoluteFilePath()+QString::fromStdString(text_slash)+fileInfo.fileName());//put unix separator because it's transformed into that's under windows too
- else
- #ifndef ULTRACOPIER_PLUGIN_RSYNC
- emit fileTransfer(fileInfo,destination.absoluteFilePath()+QString::fromStdString(text_slash)+fileInfo.fileName(),mode);
- #else
- {
- bool sendToTransfer=false;
- if(!rsync)
- sendToTransfer=true;
- else if(!QFile::exists(destination.absoluteFilePath()+"/"+fileInfo.fileName()))
- sendToTransfer=true;
- else if(fileInfo.lastModified()!=QFileInfo(destination.absoluteFilePath()+"/"+fileInfo.fileName()).lastModified())
- sendToTransfer=true;
- if(sendToTransfer)
- emit fileTransfer(fileInfo.absoluteFilePath(),destination.absoluteFilePath()+"/"+fileInfo.fileName(),mode);
- }
- #endif
- }
- }
- #ifdef ULTRACOPIER_PLUGIN_RSYNC
- if(rsync)
- {
- //check the reverse path here
- QFileInfoList entryListDestination;
- if(copyListOrder)
- entryListDestination=QDir(destination.absoluteFilePath()).entryInfoList(QDir::AllEntries|QDir::NoDotAndDotDot|QDir::Hidden|QDir::System,QDir::DirsFirst|QDir::Name|QDir::IgnoreCase);//possible wait time here
- else
- entryListDestination=QDir(destination.absoluteFilePath()).entryInfoList(QDir::AllEntries|QDir::NoDotAndDotDot|QDir::Hidden|QDir::System);//possible wait time here
- int sizeEntryListDestination=entryListDestination.size();
- int index=0;
- for (int indexDestination=0;indexDestination<sizeEntryListDestination;++indexDestination)
- {
- index=0;
- while(index<sizeEntryList)
- {
- if(entryListDestination.at(indexDestination).fileName()==entryList.at(index).fileName())
- break;
- index++;
- }
- if(index==sizeEntryList)
- {
- //then not found, need be remove
- emit addToRmForRsync(entryListDestination.at(indexDestination));
- }
- }
- return;
- }
- #endif
- if(mode==Ultracopier::Move)
- {
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"source: "+source.absoluteFilePath().toStdString()+", sizeEntryList: "+std::to_string(sizeEntryList));
- emit addToMovePath(source,destination,sizeEntryList);
- }
-}
-
-//set if need check if the destination exists
-void ScanFileOrFolder::setCheckDestinationFolderExists(const bool checkDestinationFolderExists)
-{
- this->checkDestinationExists=checkDestinationFolderExists;
-}
-
-void ScanFileOrFolder::setRenamingRules(const std::string &firstRenamingRule, const std::string &otherRenamingRule)
-{
- this->firstRenamingRule=firstRenamingRule;
- this->otherRenamingRule=otherRenamingRule;
-}
-
-void ScanFileOrFolder::setMoveTheWholeFolder(const bool &moveTheWholeFolder)
-{
- this->moveTheWholeFolder=moveTheWholeFolder;
-}
-
-void ScanFileOrFolder::setCopyListOrder(const bool &order)
-{
- this->copyListOrder=order;
-}
-
-#ifdef ULTRACOPIER_PLUGIN_RSYNC
-/// \brief set rsync
-void ScanFileOrFolder::setRsync(const bool rsync)
-{
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"set rsync: "+std::to_string(rsync));
- this->rsync=rsync;
-}
-#endif
-
-void ScanFileOrFolder::set_updateMount()
-{
- driveManagement.tryUpdate();
-}