diff options
Diffstat (limited to 'plugins/CopyEngine/Ultracopier')
86 files changed, 0 insertions, 43053 deletions
diff --git a/plugins/CopyEngine/Ultracopier/AvancedQFile.cpp b/plugins/CopyEngine/Ultracopier/AvancedQFile.cpp deleted file mode 100644 index 3d867fb..0000000 --- a/plugins/CopyEngine/Ultracopier/AvancedQFile.cpp +++ /dev/null @@ -1,208 +0,0 @@ -/** \file AvancedQFile.cpp -\brief Define the QFile herited class to set file date/time -\author alpha_one_x86 */ - -#include "AvancedQFile.h" - -#ifdef Q_CC_GNU -//this next header is needed to change file time/date under gcc -#include <utime.h> -#include <errno.h> -#endif - -//source -//hSrc=CreateFile(pData->pfiSrcFile->GetFullFilePath(), GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN | (bNoBuffer ? FILE_FLAG_NO_BUFFERING | FILE_FLAG_WRITE_THROUGH : 0), NULL); -//destination -//hDst=CreateFile(pData->strDstFile, GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN | (bNoBuffer ? FILE_FLAG_NO_BUFFERING | FILE_FLAG_WRITE_THROUGH : 0), NULL); - -bool AvancedQFile::setCreated(const QDateTime &time) -{ - time_t ctime=time.toTime_t(); - #ifdef Q_CC_GNU - //creation time not exists into unix world - Q_UNUSED(ctime) - return true; - #else - setErrorString(tr("Not supported on this platform")); - return false; - #endif -} - -bool AvancedQFile::setLastModified(const QDateTime &time) -{ - time_t actime=QFileInfo(*this).lastRead().toTime_t(); - //protect to wrong actime - if(actime<0) - actime=0; - time_t modtime=time.toTime_t(); - if(modtime<0) - { - setErrorString(tr("Last modified date is wrong")); - return false; - } - #ifdef Q_CC_GNU - //this function avalaible on unix and mingw - utimbuf butime; - butime.actime=actime; - butime.modtime=modtime; - int returnVal=utime(this->fileName().toLocal8Bit().data(),&butime); - if(returnVal==0) - return true; - else - { - setErrorString(strerror(errno)); - return false; - } - #else - setErrorString(tr("Not supported on this platform")); - return false; - #endif -} - -bool AvancedQFile::setLastRead(const QDateTime &time) -{ - time_t modtime=QFileInfo(*this).lastModified().toTime_t(); - //protect to wrong actime - if(modtime<0) - modtime=0; - time_t actime=time.toTime_t(); - if(actime<0) - { - setErrorString(tr("Last access date is wrong")); - return false; - } - #ifdef Q_CC_GNU - //this function avalaible on unix and mingw - utimbuf butime; - butime.actime=actime; - butime.modtime=modtime; - int returnVal=utime(this->fileName().toLocal8Bit().data(),&butime); - if(returnVal==0) - return true; - else - { - setErrorString(strerror(errno)); - return false; - } - #else - setErrorString(tr("Not supported on this platform")); - return false; - #endif -} - -#ifdef ULTRACOPIER_OVERLAPPED_FILE -AvancedQFile::avancedQFile() -{ - handle=INVALID_HANDLE_VALUE; - fileError=QFileDevice::NoError; - fileErrorString.clear(); -} - -AvancedQFile::~avancedQFile() -{ - close(); -} - -QString AvancedQFile::getLastWindowsError() -{ - WCHAR ErrorStringW[65535]; - DWORD dw = GetLastError(); - - int size=FormatMessage( - FORMAT_MESSAGE_ALLOCATE_BUFFER | - FORMAT_MESSAGE_FROM_SYSTEM | - FORMAT_MESSAGE_IGNORE_INSERTS, - NULL, - dw, - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - ErrorStringW, - 0, NULL ); - if(size<0) - tr("Unknown error: %1").arg(dw); - return QString::fromWCharArray(ErrorStringW,size); -} - -bool AvancedQFile::open(OpenMode mode) -{ - fileError=QFileDevice::NoError; - fileErrorString.clear(); - WCHAR fileNameW[fileName().size()+1]; - if(QDir::toNativeSeparators("\\\\?\\"+fileName()).toWCharArray(fileNameW)!=fileName().size()) - { - fileError=QFileDevice::OpenError; - fileErrorString=tr("Path conversion error"); - return false; - } - fileNameW[fileName().size()]='\0'; - - DWORD dwDesiredAccess=0; - if(mode & QIODevice::ReadOnly) - dwDesiredAccess|=GENERIC_READ; - if(mode & QIODevice::WriteOnly) - dwDesiredAccess|=GENERIC_Write; - - DWORD dwCreationDisposition; - if(mode & QIODevice::WriteOnly) - dwCreationDisposition=CREATE_ALWAYS; - else - dwCreationDisposition=OPEN_EXISTING; - - handle=CreateFile( - fileNameW, - dwDesiredAccess, - 0, - 0, - dwCreationDisposition, - FILE_FLAG_WRITE_THROUGH | FILE_FLAG_SEQUENTIAL_SCAN, - 0 - ); - if(handle==INVALID_HANDLE_VALUE) - { - fileError=QFileDevice::OpenError; - fileErrorString=getLastWindowsError(); - } - return (handle!=INVALID_HANDLE_VALUE); -} - -void AvancedQFile::close() -{ - if(handle==INVALID_HANDLE_VALUE) - return; - CloseHandle(handle); -} - -bool AvancedQFile::seek(qint64 pos) -{ - toto -} - -bool AvancedQFile::resize(qint64 size) -{ - toto -} - -QString AvancedQFile::errorString() const -{ - if(fileErrorString.isEmpty()) - return tr("Unknown error"); - return fileErrorString; -} - -bool AvancedQFile::isOpen() const -{ - return (handle!=INVALID_HANDLE_VALUE); -} - -qint64 AvancedQFile::write(const QByteArray &data) -{ -} - -QByteArray AvancedQFile::read(qint64 maxlen) -{ -} - -QFileDevice::FileError AvancedQFile::error() const -{ - return fileError; -} -#endif diff --git a/plugins/CopyEngine/Ultracopier/AvancedQFile.h b/plugins/CopyEngine/Ultracopier/AvancedQFile.h deleted file mode 100644 index 8c3dc4a..0000000 --- a/plugins/CopyEngine/Ultracopier/AvancedQFile.h +++ /dev/null @@ -1,45 +0,0 @@ -/** \file AvancedQFile.h -\brief Define the QFile herited class to set file date/time -\author alpha_one_x86 -\licence GPL3, see the file COPYING */ - -#ifndef AVANCEDQFILE_H -#define AVANCEDQFILE_H - -#include <QFile> -#include <QDateTime> -#include <QFileInfo> - -/// \brief devired class from QFile to set time/date on file -class AvancedQFile : public QFile -{ - Q_OBJECT -public: - /// \brief set created date, not exists in unix world - bool setCreated(const QDateTime &time); - /// \brief set last modification date - bool setLastModified(const QDateTime &time); - /// \brief set last read date - bool setLastRead(const QDateTime &time); - - #ifdef ULTRACOPIER_OVERLAPPED_FILE - explicit AvancedQFile(); - ~AvancedQFile(); - bool open(OpenMode mode); - void close(); - bool seek(qint64 pos); - bool resize(qint64 size); - QString errorString() const; - bool isOpen() const; - qint64 write(const QByteArray &data); - QByteArray read(qint64 maxlen); - FileError error() const; - QString getLastWindowsError(); -private: - HANDLE handle; - FileError fileError; - QString fileErrorString; - #endif -}; - -#endif // AVANCEDQFILE_H diff --git a/plugins/CopyEngine/Ultracopier/CompilerInfo.h b/plugins/CopyEngine/Ultracopier/CompilerInfo.h deleted file mode 100644 index 84625b9..0000000 --- a/plugins/CopyEngine/Ultracopier/CompilerInfo.h +++ /dev/null @@ -1 +0,0 @@ -#include "../../../CompilerInfo.h" diff --git a/plugins/CopyEngine/Ultracopier/CopyEngine-collision-and-error.cpp b/plugins/CopyEngine/Ultracopier/CopyEngine-collision-and-error.cpp deleted file mode 100644 index 16c36ae..0000000 --- a/plugins/CopyEngine/Ultracopier/CopyEngine-collision-and-error.cpp +++ /dev/null @@ -1,568 +0,0 @@ -/** \file copyEngine.cpp -\brief Define the copy engine -\author alpha_one_x86 */ - -#include "CopyEngine.h" -#include "FolderExistsDialog.h" -#include "DiskSpace.h" - -//dialog message -/// \note Can be call without queue because all call will be serialized -void CopyEngine::fileAlreadyExistsSlot(QFileInfo source,QFileInfo destination,bool isSame,TransferThread * thread) -{ - fileAlreadyExists(source,destination,isSame,thread); -} - -/// \note Can be call without queue because all call will be serialized -void CopyEngine::errorOnFileSlot(QFileInfo fileInfo,std::string errorString,TransferThread * thread,const ErrorType &errorType) -{ - errorOnFile(fileInfo,errorString,thread,errorType); -} - -/// \note Can be call without queue because all call will be serialized -void CopyEngine::folderAlreadyExistsSlot(QFileInfo source,QFileInfo destination,bool isSame,ScanFileOrFolder * thread) -{ - folderAlreadyExists(source,destination,isSame,thread); -} - -/// \note Can be call without queue because all call will be serialized -void CopyEngine::errorOnFolderSlot(QFileInfo fileInfo,std::string errorString,ScanFileOrFolder * thread,ErrorType errorType) -{ - errorOnFolder(fileInfo,errorString,thread,errorType); -} - -//mkpath event -void CopyEngine::mkPathErrorOnFolderSlot(QFileInfo folder,std::string error,ErrorType errorType) -{ - mkPathErrorOnFolder(folder,error,errorType); -} - -/// \note Can be call without queue because all call will be serialized -void CopyEngine::fileAlreadyExists(QFileInfo source,QFileInfo destination,bool isSame,TransferThread * thread,bool isCalledByShowOneNewDialog) -{ - if(stopIt) - return; - if(thread==NULL) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to locate the thread"); - return; - } - //load the action - if(isSame) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"file is same: "+source.absoluteFilePath().toStdString()); - FileExistsAction tempFileExistsAction=alwaysDoThisActionForFileExists; - if(tempFileExistsAction==FileExists_Overwrite || tempFileExistsAction==FileExists_OverwriteIfNewer || tempFileExistsAction==FileExists_OverwriteIfNotSame || tempFileExistsAction==FileExists_OverwriteIfOlder) - tempFileExistsAction=FileExists_NotSet; - switch(tempFileExistsAction) - { - case FileExists_Skip: - case FileExists_Rename: - thread->setFileExistsAction(tempFileExistsAction); - break; - default: - if(dialogIsOpen) - { - alreadyExistsQueueItem newItem; - newItem.source=source; - newItem.destination=destination; - newItem.isSame=isSame; - newItem.transfer=thread; - newItem.scan=NULL; - alreadyExistsQueue.push_back(newItem); - return; - } - dialogIsOpen=true; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"show dialog"); - FileIsSameDialog dialog(interface,source,firstRenamingRule,otherRenamingRule); - emit isInPause(true); - dialog.exec();/// \bug crash when external close - FileExistsAction newAction=dialog.getAction(); - emit isInPause(false); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"close dialog: "+std::to_string(newAction)); - if(newAction==FileExists_Cancel) - { - emit cancelAll(); - return; - } - if(dialog.getAlways() && newAction!=alwaysDoThisActionForFileExists) - { - alwaysDoThisActionForFileExists=newAction; - listThread->setAlwaysFileExistsAction(alwaysDoThisActionForFileExists); - if(uiIsInstalled) - switch(newAction) - { - default: - case FileExists_Skip: - ui->comboBoxFileCollision->setCurrentIndex(1); - break; - case FileExists_Rename: - ui->comboBoxFileCollision->setCurrentIndex(6); - break; - } - } - if(dialog.getAlways() || newAction!=FileExists_Rename) - thread->setFileExistsAction(newAction); - else - thread->setFileRename(dialog.getNewName()); - dialogIsOpen=false; - if(!isCalledByShowOneNewDialog) - emit queryOneNewDialog(); - return; - break; - } - } - else - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"file already exists: "+source.absoluteFilePath().toStdString()+", destination: "+destination.absoluteFilePath().toStdString()); - FileExistsAction tempFileExistsAction=alwaysDoThisActionForFileExists; - switch(tempFileExistsAction) - { - case FileExists_Skip: - case FileExists_Rename: - case FileExists_Overwrite: - case FileExists_OverwriteIfNewer: - case FileExists_OverwriteIfOlder: - case FileExists_OverwriteIfNotSame: - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"always do this action: "+std::to_string(tempFileExistsAction)); - thread->setFileExistsAction(tempFileExistsAction); - break; - default: - if(dialogIsOpen) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("dialog open, put in queue: %1 %2") - .arg(source.absoluteFilePath()) - .arg(destination.absoluteFilePath()) - .toStdString() - ); - alreadyExistsQueueItem newItem; - newItem.source=source; - newItem.destination=destination; - newItem.isSame=isSame; - newItem.transfer=thread; - newItem.scan=NULL; - alreadyExistsQueue.push_back(newItem); - return; - } - dialogIsOpen=true; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"show dialog"); - FileExistsDialog dialog(interface,source,destination,firstRenamingRule,otherRenamingRule); - emit isInPause(true); - dialog.exec();/// \bug crash when external close - FileExistsAction newAction=dialog.getAction(); - emit isInPause(false); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"close dialog: "+std::to_string(newAction)); - if(newAction==FileExists_Cancel) - { - emit cancelAll(); - return; - } - if(dialog.getAlways() && newAction!=alwaysDoThisActionForFileExists) - { - alwaysDoThisActionForFileExists=newAction; - listThread->setAlwaysFileExistsAction(alwaysDoThisActionForFileExists); - if(uiIsInstalled) - switch(newAction) - { - default: - case FileExists_Skip: - ui->comboBoxFileCollision->setCurrentIndex(1); - break; - case FileExists_Rename: - ui->comboBoxFileCollision->setCurrentIndex(6); - break; - case FileExists_Overwrite: - ui->comboBoxFileCollision->setCurrentIndex(2); - break; - case FileExists_OverwriteIfNotSame: - ui->comboBoxFileCollision->setCurrentIndex(3); - break; - case FileExists_OverwriteIfNewer: - ui->comboBoxFileCollision->setCurrentIndex(4); - break; - case FileExists_OverwriteIfOlder: - ui->comboBoxFileCollision->setCurrentIndex(5); - break; - } - } - if(dialog.getAlways() || newAction!=FileExists_Rename) - thread->setFileExistsAction(newAction); - else - thread->setFileRename(dialog.getNewName()); - dialogIsOpen=false; - if(!isCalledByShowOneNewDialog) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"emit queryOneNewDialog()"); - emit queryOneNewDialog(); - } - return; - break; - } - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"stop"); -} - -void CopyEngine::haveNeedPutAtBottom(bool needPutAtBottom, const QFileInfo &fileInfo, const std::string &errorString,TransferThread *thread,const ErrorType &errorType) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); - if(!needPutAtBottom) - { - alwaysDoThisActionForFileError=FileError_NotSet; - if(uiIsInstalled) - ui->comboBoxFileError->setCurrentIndex(0); - errorQueueItem newItem; - newItem.errorString=errorString; - newItem.inode=fileInfo; - newItem.mkPath=false; - newItem.rmPath=false; - newItem.scan=NULL; - newItem.transfer=thread; - newItem.errorType=errorType; - errorQueue.push_back(newItem); - showOneNewDialog(); - } -} - -void CopyEngine::missingDiskSpace(std::vector<Diskspace> list) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"show dialog"); - DiskSpace dialog(facilityEngine,list,interface); - emit isInPause(true); - dialog.exec();/// \bug crash when external close - bool ok=dialog.getAction(); - emit isInPause(false); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"cancel: "+std::to_string(ok)); - if(!ok) - emit cancelAll(); - else - listThread->autoStartIfNeeded(); -} - -/// \note Can be call without queue because all call will be serialized -void CopyEngine::errorOnFile(QFileInfo fileInfo,std::string errorString,TransferThread * thread,const ErrorType &errorType,bool isCalledByShowOneNewDialog) -{ - if(stopIt) - return; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"file have error: "+fileInfo.absoluteFilePath().toStdString()+", error: "+errorString); - if(thread==NULL) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to locate the thread"); - return; - } - //load the action - FileErrorAction tempFileErrorAction=alwaysDoThisActionForFileError; - switch(tempFileErrorAction) - { - case FileError_Skip: - thread->skip(); - return; - case FileError_Retry: - thread->retryAfterError(); - return; - case FileError_PutToEndOfTheList: - emit getNeedPutAtBottom(fileInfo,errorString,thread,errorType); - return; - case FileError_Cancel: - return; - default: - if(dialogIsOpen) - { - errorQueueItem newItem; - newItem.errorString=errorString; - newItem.inode=fileInfo; - newItem.mkPath=false; - newItem.rmPath=false; - newItem.scan=NULL; - newItem.transfer=thread; - newItem.errorType=errorType; - errorQueue.push_back(newItem); - return; - } - dialogIsOpen=true; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"show dialog"); - emit error(fileInfo.absoluteFilePath().toStdString(),fileInfo.size(),fileInfo.lastModified().toMSecsSinceEpoch()/1000,errorString); - FileErrorDialog dialog(interface,fileInfo,errorString,errorType); - emit isInPause(true); - dialog.exec();/// \bug crash when external close - FileErrorAction newAction=dialog.getAction(); - emit isInPause(false); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"close dialog: "+std::to_string(newAction)); - if(newAction==FileError_Cancel) - { - emit cancelAll(); - return; - } - if(dialog.getAlways() && newAction!=alwaysDoThisActionForFileError) - { - alwaysDoThisActionForFileError=newAction; - if(uiIsInstalled) - switch(newAction) - { - default: - case FileError_Skip: - ui->comboBoxFileError->setCurrentIndex(1); - break; - case FileError_PutToEndOfTheList: - ui->comboBoxFileError->setCurrentIndex(2); - break; - } - } - switch(newAction) - { - case FileError_Skip: - thread->skip(); - break; - case FileError_Retry: - thread->retryAfterError(); - break; - case FileError_PutToEndOfTheList: - thread->putAtBottom(); - break; - default: - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"file error action wrong"); - break; - } - dialogIsOpen=false; - if(!isCalledByShowOneNewDialog) - emit queryOneNewDialog(); - else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"isCalledByShowOneNewDialog==true then not show other dial"); - return; - break; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"stop"); -} - -/// \note Can be call without queue because all call will be serialized -void CopyEngine::folderAlreadyExists(QFileInfo source,QFileInfo destination,bool isSame,ScanFileOrFolder * thread,bool isCalledByShowOneNewDialog) -{ - if(stopIt) - return; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"folder already exists: "+source.absoluteFilePath().toStdString()+", destination: "+destination.absoluteFilePath().toStdString()); - if(thread==NULL) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to locate the thread"); - return; - } - //load the always action - FolderExistsAction tempFolderExistsAction=alwaysDoThisActionForFolderExists; - switch(tempFolderExistsAction) - { - case FolderExists_Skip: - case FolderExists_Rename: - case FolderExists_Merge: - thread->setFolderExistsAction(tempFolderExistsAction); - break; - default: - if(dialogIsOpen) - { - alreadyExistsQueueItem newItem; - newItem.source=source; - newItem.destination=destination; - newItem.isSame=isSame; - newItem.transfer=NULL; - newItem.scan=thread; - alreadyExistsQueue.push_back(newItem); - return; - } - dialogIsOpen=true; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"show dialog"); - FolderExistsDialog dialog(interface,source,isSame,destination,firstRenamingRule,otherRenamingRule); - dialog.exec();/// \bug crash when external close - FolderExistsAction newAction=dialog.getAction(); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"close dialog: "+std::to_string(newAction)); - if(newAction==FolderExists_Cancel) - { - emit cancelAll(); - return; - } - if(dialog.getAlways() && newAction!=alwaysDoThisActionForFolderExists) - setComboBoxFolderCollision(newAction); - if(!dialog.getAlways() && newAction==FolderExists_Rename) - thread->setFolderExistsAction(newAction,dialog.getNewName()); - else - thread->setFolderExistsAction(newAction); - dialogIsOpen=false; - if(!isCalledByShowOneNewDialog) - emit queryOneNewDialog(); - return; - break; - } -} - -/// \note Can be call without queue because all call will be serialized -/// \todo all this part -void CopyEngine::errorOnFolder(QFileInfo fileInfo, std::string errorString, ScanFileOrFolder * thread, ErrorType errorType, bool isCalledByShowOneNewDialog) -{ - if(stopIt) - return; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"file have error: "+fileInfo.absoluteFilePath().toStdString()+", error: "+errorString); - if(thread==NULL) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to locate the thread"); - return; - } - //load the always action - FileErrorAction tempFileErrorAction=alwaysDoThisActionForFolderError; - switch(tempFileErrorAction) - { - case FileError_Skip: - case FileError_Retry: - case FileError_PutToEndOfTheList: - thread->setFolderErrorAction(tempFileErrorAction); - break; - default: - if(dialogIsOpen) - { - errorQueueItem newItem; - newItem.errorString=errorString; - newItem.inode=fileInfo; - newItem.mkPath=false; - newItem.rmPath=false; - newItem.scan=thread; - newItem.transfer=NULL; - newItem.errorType=errorType; - errorQueue.push_back(newItem); - return; - } - dialogIsOpen=true; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"show dialog"); - emit error(fileInfo.absoluteFilePath().toStdString(),fileInfo.size(),fileInfo.lastModified().toMSecsSinceEpoch()/1000,errorString); - FileErrorDialog dialog(interface,fileInfo,errorString,errorType); - dialog.exec();/// \bug crash when external close - FileErrorAction newAction=dialog.getAction(); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"close dialog: "+std::to_string(newAction)); - if(newAction==FileError_Cancel) - { - emit cancelAll(); - return; - } - if(dialog.getAlways() && newAction!=alwaysDoThisActionForFileError) - { - setComboBoxFolderError(newAction); - alwaysDoThisActionForFolderError=newAction; - } - dialogIsOpen=false; - thread->setFolderErrorAction(newAction); - if(!isCalledByShowOneNewDialog) - emit queryOneNewDialog(); - return; - break; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"stop"); -} - -// ----------------------------------------------------- - -//mkpath event -void CopyEngine::mkPathErrorOnFolder(QFileInfo folder,std::string errorString,const ErrorType &errorType,bool isCalledByShowOneNewDialog) -{ - if(stopIt) - return; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"file have error: "+folder.absoluteFilePath().toStdString()+", error: "+errorString); - //load the always action - FileErrorAction tempFileErrorAction=alwaysDoThisActionForFolderError; - switch(tempFileErrorAction) - { - case FileError_Skip: - listThread->mkPathQueue.skip(); - return; - case FileError_Retry: - listThread->mkPathQueue.retry(); - return; - default: - if(dialogIsOpen) - { - errorQueueItem newItem; - newItem.errorString=errorString; - newItem.inode=folder; - newItem.mkPath=true; - newItem.rmPath=false; - newItem.scan=NULL; - newItem.transfer=NULL; - newItem.errorType=errorType; - errorQueue.push_back(newItem); - return; - } - dialogIsOpen=true; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"show dialog"); - emit error(folder.absoluteFilePath().toStdString(),folder.size(),folder.lastModified().toMSecsSinceEpoch()/1000,errorString); - FileErrorDialog dialog(interface,folder,errorString,errorType); - dialog.exec();/// \bug crash when external close - FileErrorAction newAction=dialog.getAction(); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"close dialog: "+std::to_string(newAction)); - if(newAction==FileError_Cancel) - { - emit cancelAll(); - return; - } - if(dialog.getAlways() && newAction!=alwaysDoThisActionForFileError) - { - setComboBoxFolderError(newAction); - alwaysDoThisActionForFolderError=newAction; - } - dialogIsOpen=false; - switch(newAction) - { - case FileError_Skip: - listThread->mkPathQueue.skip(); - break; - case FileError_Retry: - listThread->mkPathQueue.retry(); - break; - default: - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unknow switch case: "+std::to_string(newAction)); - break; - } - if(!isCalledByShowOneNewDialog) - emit queryOneNewDialog(); - return; - break; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"stop"); -} - -//show one new dialog if needed -void CopyEngine::showOneNewDialog() -{ - if(stopIt) - return; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"alreadyExistsQueue.size(): "+std::to_string(alreadyExistsQueue.size())); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"errorQueue.size(): "+std::to_string(errorQueue.size())); - int loop_size=alreadyExistsQueue.size(); - while(loop_size>0) - { - if(alreadyExistsQueue.front().transfer!=NULL) - { - fileAlreadyExists(alreadyExistsQueue.front().source, - alreadyExistsQueue.front().destination, - alreadyExistsQueue.front().isSame, - alreadyExistsQueue.front().transfer, - true); - } - else if(alreadyExistsQueue.front().scan!=NULL) - folderAlreadyExists(alreadyExistsQueue.front().source, - alreadyExistsQueue.front().destination, - alreadyExistsQueue.front().isSame, - alreadyExistsQueue.front().scan, - true); - else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"bug, no thread actived"); - alreadyExistsQueue.erase(alreadyExistsQueue.cbegin()); - loop_size--; - } - loop_size=errorQueue.size(); - while(errorQueue.size()>0 && loop_size>0) - { - if(errorQueue.front().transfer!=NULL) - errorOnFile(errorQueue.front().inode,errorQueue.front().errorString,errorQueue.front().transfer,errorQueue.front().errorType,true); - else if(errorQueue.front().scan!=NULL) - errorOnFolder(errorQueue.front().inode,errorQueue.front().errorString,errorQueue.front().scan,errorQueue.front().errorType,true); - else if(errorQueue.front().mkPath) - mkPathErrorOnFolder(errorQueue.front().inode,errorQueue.front().errorString,errorQueue.front().errorType,true); - else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"bug, no thread actived"); - errorQueue.erase(errorQueue.cbegin()); - loop_size--; - } -} diff --git a/plugins/CopyEngine/Ultracopier/CopyEngine.cpp b/plugins/CopyEngine/Ultracopier/CopyEngine.cpp deleted file mode 100644 index f3d6e04..0000000 --- a/plugins/CopyEngine/Ultracopier/CopyEngine.cpp +++ /dev/null @@ -1,1253 +0,0 @@ -/** \file copyEngine.cpp -\brief Define the copy engine -\author alpha_one_x86 */ - -#include <QFileDialog> -#include <QMessageBox> -#include <cmath> - -#include "CopyEngine.h" -#include "FolderExistsDialog.h" -#include "../../../interface/PluginInterface_CopyEngine.h" - -// The cmath header from MSVC does not contain round() -#if (defined(_WIN64) || defined(_WIN32)) && defined(_MSC_VER) -inline double round(double d) { - return floor( d + 0.5 ); -} -#endif - -CopyEngine::CopyEngine(FacilityInterface * facilityEngine) : - ui(new Ui::copyEngineOptions()) -{ - listThread=new ListThread(facilityEngine); - this->facilityEngine = facilityEngine; - filters = NULL; - renamingRules = NULL; - - blockSize = ULTRACOPIER_PLUGIN_DEFAULT_BLOCK_SIZE; - sequentialBuffer = ULTRACOPIER_PLUGIN_DEFAULT_BLOCK_SIZE*ULTRACOPIER_PLUGIN_DEFAULT_SEQUENTIAL_NUMBER_OF_BLOCK; - parallelBuffer = ULTRACOPIER_PLUGIN_DEFAULT_BLOCK_SIZE*ULTRACOPIER_PLUGIN_DEFAULT_PARALLEL_NUMBER_OF_BLOCK; - interface = NULL; - tempWidget = NULL; - uiIsInstalled = false; - dialogIsOpen = false; - renameTheOriginalDestination = false; - maxSpeed = 0; - alwaysDoThisActionForFileExists = FileExists_NotSet; - alwaysDoThisActionForFileError = FileError_NotSet; - checkDestinationFolderExists = false; - stopIt = false; - size_for_speed = 0; - putAtBottom = 0; - forcedMode = false; - followTheStrictOrder = false; - deletePartiallyTransferredFiles = true; - inodeThreads = 16; - moveTheWholeFolder = true; - - //implement the SingleShot in this class - //timerActionDone.setSingleShot(true); - timerActionDone.setInterval(ULTRACOPIER_PLUGIN_TIME_UPDATE_TRASNFER_LIST); - //timerProgression.setSingleShot(true); - timerProgression.setInterval(ULTRACOPIER_PLUGIN_TIME_UPDATE_PROGRESSION); - - timerUpdateMount.setInterval(ULTRACOPIER_PLUGIN_TIME_UPDATE_MOUNT_MS); -} - -CopyEngine::~CopyEngine() -{ - /*if(filters!=NULL) - delete filters; - if(renamingRules!=NULL) - delete renamingRules; - destroyed by the widget parent, here the interface - */ - stopIt=true; - delete listThread; - delete ui; -} - -void CopyEngine::connectTheSignalsSlots() -{ - #ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW - debugDialogWindow.show(); - #endif - if(!connect(listThread,&ListThread::actionInProgess, this,&CopyEngine::actionInProgess, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect actionInProgess()"); - if(!connect(listThread,&ListThread::actionInProgess, this,&CopyEngine::newActionInProgess, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect actionInProgess() to slot"); - if(!connect(listThread,&ListThread::newFolderListing, this,&CopyEngine::newFolderListing, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect newFolderListing()"); - if(!connect(listThread,&ListThread::isInPause, this,&CopyEngine::isInPause, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect isInPause()"); - if(!connect(listThread,&ListThread::error, this,&CopyEngine::error, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect error()"); - if(!connect(listThread,&ListThread::rmPath, this,&CopyEngine::rmPath, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect rmPath()"); - if(!connect(listThread,&ListThread::mkPath, this,&CopyEngine::mkPath, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect mkPath()"); - if(!connect(listThread,&ListThread::newActionOnList, this,&CopyEngine::newActionOnList, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect newActionOnList()"); - if(!connect(listThread,&ListThread::doneTime, this,&CopyEngine::doneTime, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect doneTime()"); - if(!connect(listThread,&ListThread::pushFileProgression, this,&CopyEngine::pushFileProgression, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect pushFileProgression()"); - if(!connect(listThread,&ListThread::pushGeneralProgression, this,&CopyEngine::pushGeneralProgression, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect pushGeneralProgression()"); - if(!connect(listThread,&ListThread::syncReady, this,&CopyEngine::syncReady, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect syncReady()"); - if(!connect(listThread,&ListThread::canBeDeleted, this,&CopyEngine::canBeDeleted, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect canBeDeleted()"); - #ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW - if(!connect(listThread,&ListThread::debugInformation, this,&CopyEngine::debugInformation, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect debugInformation()"); - #endif - - if(!connect(listThread,&ListThread::send_fileAlreadyExists, this,&CopyEngine::fileAlreadyExistsSlot, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect send_fileAlreadyExists()"); - if(!connect(listThread,&ListThread::send_errorOnFile, this,&CopyEngine::errorOnFileSlot, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect send_errorOnFile()"); - if(!connect(listThread,&ListThread::send_folderAlreadyExists, this,&CopyEngine::folderAlreadyExistsSlot, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect send_folderAlreadyExists()"); - if(!connect(listThread,&ListThread::send_errorOnFolder, this,&CopyEngine::errorOnFolderSlot, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect send_errorOnFolder()"); - #ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW - if(!connect(listThread,&ListThread::updateTheDebugInfo, this,&CopyEngine::updateTheDebugInfo, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect updateTheDebugInfo()"); - #endif - if(!connect(listThread,&ListThread::errorTransferList, this,&CopyEngine::errorTransferList, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect errorTransferList()"); - if(!connect(listThread,&ListThread::warningTransferList, this,&CopyEngine::warningTransferList, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect warningTransferList()"); - if(!connect(listThread,&ListThread::mkPathErrorOnFolder, this,&CopyEngine::mkPathErrorOnFolderSlot, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect mkPathErrorOnFolder()"); - if(!connect(listThread,&ListThread::send_realBytesTransfered, this,&CopyEngine::get_realBytesTransfered, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect send_realBytesTransfered()"); - - if(!connect(this,&CopyEngine::tryCancel, listThread,&ListThread::cancel, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect tryCancel()"); - if(!connect(this,&CopyEngine::getNeedPutAtBottom, listThread,&ListThread::getNeedPutAtBottom, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect getNeedPutAtBottom()"); - if(!connect(listThread,&ListThread::haveNeedPutAtBottom, this,&CopyEngine::haveNeedPutAtBottom, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect haveNeedPutAtBottom()"); - - - if(!connect(this,&CopyEngine::signal_pause, listThread,&ListThread::pause, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_pause()"); - if(!connect(this,&CopyEngine::signal_exportErrorIntoTransferList,listThread,&ListThread::exportErrorIntoTransferList, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_exportErrorIntoTransferList()"); - if(!connect(this,&CopyEngine::signal_resume, listThread,&ListThread::resume, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_resume()"); - if(!connect(this,&CopyEngine::signal_skip, listThread,&ListThread::skip, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_skip()"); - if(!connect(this,&CopyEngine::signal_setCollisionAction, listThread,&ListThread::setAlwaysFileExistsAction, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_setCollisionAction()"); - if(!connect(this,&CopyEngine::signal_setTransferAlgorithm, listThread,&ListThread::setTransferAlgorithm, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_setCollisionAction()"); - if(!connect(this,&CopyEngine::signal_setFolderCollision, listThread,&ListThread::setFolderCollision, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_setFolderCollision()"); - if(!connect(this,&CopyEngine::signal_removeItems, listThread,&ListThread::removeItems, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_removeItems()"); - if(!connect(this,&CopyEngine::signal_moveItemsOnTop, listThread,&ListThread::moveItemsOnTop, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_moveItemsOnTop()"); - if(!connect(this,&CopyEngine::signal_moveItemsUp, listThread,&ListThread::moveItemsUp, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_moveItemsUp()"); - if(!connect(this,&CopyEngine::signal_moveItemsDown, listThread,&ListThread::moveItemsDown, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_moveItemsDown()"); - if(!connect(this,&CopyEngine::signal_moveItemsOnBottom, listThread,&ListThread::moveItemsOnBottom, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_moveItemsOnBottom()"); - if(!connect(this,&CopyEngine::signal_exportTransferList, listThread,&ListThread::exportTransferList, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_exportTransferList()"); - if(!connect(this,&CopyEngine::signal_importTransferList, listThread,&ListThread::importTransferList, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_importTransferList()"); - if(!connect(this,&CopyEngine::signal_forceMode, listThread,&ListThread::forceMode, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_forceMode()"); - if(!connect(this,&CopyEngine::send_osBufferLimit, listThread,&ListThread::set_osBufferLimit, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect send_osBufferLimit()"); - #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT - if(!connect(this,&CopyEngine::send_speedLimitation, listThread,&ListThread::setSpeedLimitation, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect send_speedLimitation()"); - #endif - if(!connect(this,&CopyEngine::send_blockSize, listThread,&ListThread::setBlockSize, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect send_blockSize()"); - if(!connect(this,&CopyEngine::send_parallelBuffer, listThread,&ListThread::setParallelBuffer, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect setParallelBuffer()"); - if(!connect(this,&CopyEngine::send_sequentialBuffer, listThread,&ListThread::setSequentialBuffer, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect setSequentialBuffer()"); - if(!connect(this,&CopyEngine::send_parallelizeIfSmallerThan, listThread,&ListThread::setParallelizeIfSmallerThan, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect setParallelizeIfSmallerThan()"); - if(!connect(this,&CopyEngine::send_moveTheWholeFolder, listThread,&ListThread::setMoveTheWholeFolder, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect moveTheWholeFolder()"); - if(!connect(this,&CopyEngine::send_deletePartiallyTransferredFiles, listThread,&ListThread::setDeletePartiallyTransferredFiles, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect deletePartiallyTransferredFiles()"); - if(!connect(this,&CopyEngine::send_setRenameTheOriginalDestination, listThread,&ListThread::setRenameTheOriginalDestination, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect setRenameTheOriginalDestination()"); - if(!connect(this,&CopyEngine::send_setInodeThreads, listThread,&ListThread::setInodeThreads, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect setInodeThreads()"); - if(!connect(this,&CopyEngine::send_followTheStrictOrder, listThread,&ListThread::setFollowTheStrictOrder, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect followTheStrictOrder()"); - if(!connect(this,&CopyEngine::send_setFilters,listThread,&ListThread::set_setFilters, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect send_setFilters()"); - if(!connect(this,&CopyEngine::send_sendNewRenamingRules,listThread,&ListThread::set_sendNewRenamingRules, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect send_sendNewRenamingRules()"); - if(!connect(&timerActionDone,&QTimer::timeout, listThread,&ListThread::sendActionDone)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect timerActionDone"); - if(!connect(&timerProgression,&QTimer::timeout, listThread,&ListThread::sendProgression)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect timerProgression"); - if(!connect(listThread,&ListThread::missingDiskSpace, this,&CopyEngine::missingDiskSpace,Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect timerProgression"); - - if(!connect(this,&CopyEngine::queryOneNewDialog,this,&CopyEngine::showOneNewDialog,Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect queryOneNewDialog()"); - if(!connect(listThread,&ListThread::errorToRetry,this,&CopyEngine::errorToRetry,Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect errorToRetry()"); - - if(!connect(&timerUpdateMount,&QTimer::timeout,listThread,&ListThread::set_updateMount, Qt::QueuedConnection)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect set_updateMount()"); -} - -#ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW -void CopyEngine::updateTheDebugInfo(const std::vector<std::string> &newList, const std::vector<std::string> &newList2, const int &numberOfInodeOperation) -{ - debugDialogWindow.setTransferThreadList(newList); - debugDialogWindow.setTransferList(newList2); - debugDialogWindow.setInodeUsage(numberOfInodeOperation); -} -#endif - -//to send the options panel -bool CopyEngine::getOptionsEngine(QWidget * tempWidget) -{ - this->tempWidget=tempWidget; - ui->setupUi(tempWidget); - ui->toolBox->setCurrentIndex(0); - ui->blockSize->setMaximum(ULTRACOPIER_PLUGIN_MAX_BLOCK_SIZE); - connect(tempWidget, &QWidget::destroyed, this, &CopyEngine::resetTempWidget); - //conect the ui widget - #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT - if(!setSpeedLimitation(maxSpeed)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"unable to set the speed limitation"); - #endif - - //here else, the default settings can't be loaded - uiIsInstalled=true; - - setBlockSize(blockSize); - setSequentialBuffer(sequentialBuffer); - setParallelBuffer(parallelBuffer); - setAutoStart(autoStart); - #ifdef ULTRACOPIER_PLUGIN_RSYNC - setRsync(rsync); - #else - ui->label_rsync->setVisible(false); - ui->rsync->setVisible(false); - #endif - setCheckDestinationFolderExists(checkDestinationFolderExists); - set_doChecksum(doChecksum); - set_checksumIgnoreIfImpossible(checksumIgnoreIfImpossible); - set_checksumOnlyOnError(checksumOnlyOnError); - set_osBuffer(osBuffer); - set_osBufferLimited(osBufferLimited); - set_osBufferLimit(osBufferLimit); - setRightTransfer(doRightTransfer); - setKeepDate(keepDate); - setParallelizeIfSmallerThan(parallelizeIfSmallerThan); - setFollowTheStrictOrder(followTheStrictOrder); - setDeletePartiallyTransferredFiles(deletePartiallyTransferredFiles); - setInodeThreads(inodeThreads); - setRenameTheOriginalDestination(renameTheOriginalDestination); - setMoveTheWholeFolder(moveTheWholeFolder); - setCheckDiskSpace(checkDiskSpace); - setDefaultDestinationFolder(defaultDestinationFolder); - - switch(alwaysDoThisActionForFileExists) - { - case FileExists_NotSet: - ui->comboBoxFileCollision->setCurrentIndex(0); - break; - case FileExists_Skip: - ui->comboBoxFileCollision->setCurrentIndex(1); - break; - case FileExists_Overwrite: - ui->comboBoxFileCollision->setCurrentIndex(2); - break; - case FileExists_OverwriteIfNotSame: - ui->comboBoxFileCollision->setCurrentIndex(3); - break; - case FileExists_OverwriteIfNewer: - ui->comboBoxFileCollision->setCurrentIndex(4); - break; - case FileExists_OverwriteIfOlder: - ui->comboBoxFileCollision->setCurrentIndex(5); - break; - case FileExists_Rename: - ui->comboBoxFileCollision->setCurrentIndex(6); - break; - default: - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Error, unknow index, ignored"); - ui->comboBoxFileCollision->setCurrentIndex(0); - break; - } - switch(alwaysDoThisActionForFileError) - { - case FileError_NotSet: - ui->comboBoxFileError->setCurrentIndex(0); - break; - case FileError_Skip: - ui->comboBoxFileError->setCurrentIndex(1); - break; - case FileError_PutToEndOfTheList: - ui->comboBoxFileError->setCurrentIndex(2); - break; - default: - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Error, unknow index, ignored"); - ui->comboBoxFileError->setCurrentIndex(0); - break; - } - switch(alwaysDoThisActionForFolderExists) - { - case FolderExists_NotSet: - ui->comboBoxFolderCollision->setCurrentIndex(0); - break; - case FolderExists_Merge: - ui->comboBoxFolderCollision->setCurrentIndex(1); - break; - case FolderExists_Skip: - ui->comboBoxFolderCollision->setCurrentIndex(2); - break; - case FolderExists_Rename: - ui->comboBoxFolderCollision->setCurrentIndex(3); - break; - default: - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Error, unknow index, ignored"); - ui->comboBoxFolderCollision->setCurrentIndex(0); - break; - } - switch(alwaysDoThisActionForFolderError) - { - case FileError_NotSet: - ui->comboBoxFolderError->setCurrentIndex(0); - break; - case FileError_Skip: - ui->comboBoxFolderError->setCurrentIndex(1); - break; - default: - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Error, unknow index, ignored: "+std::to_string(alwaysDoThisActionForFolderError)); - ui->comboBoxFolderError->setCurrentIndex(0); - break; - } - switch(transferAlgorithm) - { - case TransferAlgorithm_Automatic: - ui->transferAlgorithm->setCurrentIndex(0); - break; - case TransferAlgorithm_Sequential: - ui->transferAlgorithm->setCurrentIndex(1); - break; - case TransferAlgorithm_Parallel: - ui->transferAlgorithm->setCurrentIndex(2); - break; - default: - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Error, unknow index, ignored"); - ui->transferAlgorithm->setCurrentIndex(0); - break; - } - return true; -} - -//to have interface widget to do modal dialog -void CopyEngine::setInterfacePointer(QWidget * interface) -{ - this->interface=interface; - filters=new Filters(tempWidget); - renamingRules=new RenamingRules(tempWidget); - - if(uiIsInstalled) - { - connect(ui->doRightTransfer, &QCheckBox::toggled, this,&CopyEngine::setRightTransfer); - connect(ui->keepDate, &QCheckBox::toggled, this,&CopyEngine::setKeepDate); - connect(ui->blockSize, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged), this,&CopyEngine::setBlockSize); - connect(ui->autoStart, &QCheckBox::toggled, this,&CopyEngine::setAutoStart); - connect(ui->doChecksum, &QCheckBox::toggled, this,&CopyEngine::doChecksum_toggled); - connect(ui->checksumIgnoreIfImpossible, &QCheckBox::toggled, this,&CopyEngine::checksumIgnoreIfImpossible_toggled); - connect(ui->checksumOnlyOnError, &QCheckBox::toggled, this,&CopyEngine::checksumOnlyOnError_toggled); - connect(ui->osBuffer, &QCheckBox::toggled, this,&CopyEngine::osBuffer_toggled); - connect(ui->osBufferLimited, &QCheckBox::toggled, this,&CopyEngine::osBufferLimited_toggled); - connect(ui->osBufferLimit, &QSpinBox::editingFinished, this,&CopyEngine::osBufferLimit_editingFinished); - connect(ui->moveTheWholeFolder, &QCheckBox::toggled, this,&CopyEngine::setMoveTheWholeFolder); - connect(ui->deletePartiallyTransferredFiles, &QCheckBox::toggled, this,&CopyEngine::setDeletePartiallyTransferredFiles); - connect(ui->followTheStrictOrder, &QCheckBox::toggled, this,&CopyEngine::setFollowTheStrictOrder); - connect(ui->checkBoxDestinationFolderExists, &QCheckBox::toggled, this,&CopyEngine::setCheckDestinationFolderExists); - #ifdef ULTRACOPIER_PLUGIN_RSYNC - connect(ui->rsync, &QCheckBox::toggled, this,&CopyEngine::setRsync); - #endif - connect(ui->renameTheOriginalDestination, &QCheckBox::toggled, this,&CopyEngine::setRenameTheOriginalDestination); - connect(filters, &Filters::haveNewFilters, this,&CopyEngine::sendNewFilters); - connect(ui->filters, &QPushButton::clicked, this,&CopyEngine::showFilterDialog); - connect(ui->inodeThreads, &QSpinBox::editingFinished, this,&CopyEngine::inodeThreadsFinished); - connect(ui->inodeThreads, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged), this,&CopyEngine::setInodeThreads); - connect(ui->defaultDestinationFolderBrowse, &QPushButton::clicked, this,&CopyEngine::defaultDestinationFolderBrowse); - - connect(ui->sequentialBuffer, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged), this,&CopyEngine::setSequentialBuffer); - connect(ui->parallelBuffer, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged), this,&CopyEngine::setParallelBuffer); - connect(ui->parallelizeIfSmallerThan, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged), this,&CopyEngine::setParallelizeIfSmallerThan); - connect(ui->comboBoxFolderError, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,&CopyEngine::setFolderError); - connect(ui->comboBoxFolderCollision, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,&CopyEngine::setFolderCollision); - connect(ui->comboBoxFileError, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,&CopyEngine::setFileError); - connect(ui->comboBoxFileCollision, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,&CopyEngine::setFileCollision); - connect(ui->transferAlgorithm, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,&CopyEngine::setTransferAlgorithm); - - if(!connect(renamingRules,&RenamingRules::sendNewRenamingRules,this,&CopyEngine::sendNewRenamingRules)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect sendNewRenamingRules()"); - if(!connect(ui->renamingRules,&QPushButton::clicked,this,&CopyEngine::showRenamingRules)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect renamingRules.clicked()"); - } - - filters->setFilters(includeStrings,includeOptions,excludeStrings,excludeOptions); - set_setFilters(includeStrings,includeOptions,excludeStrings,excludeOptions); - - renamingRules->setRenamingRules(firstRenamingRule,otherRenamingRule); - emit send_sendNewRenamingRules(firstRenamingRule,otherRenamingRule); -} - -bool CopyEngine::haveSameSource(const std::vector<std::string> &sources) -{ - return listThread->haveSameSource(sources); -} - -bool CopyEngine::haveSameDestination(const std::string &destination) -{ - return listThread->haveSameDestination(destination); -} - -bool CopyEngine::newCopy(const std::vector<std::string> &sources) -{ - if(forcedMode && mode!=Ultracopier::Copy) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"The engine is forced to move, you can't copy with it"); - QMessageBox::critical(NULL,QString::fromStdString(facilityEngine->translateText("Internal error")),tr("The engine is forced to move, you can't copy with it")); - return false; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); - std::string destination; - if(!defaultDestinationFolder.empty() && QDir(QString::fromStdString(defaultDestinationFolder)).exists()) - destination = defaultDestinationFolder; - else - destination = askDestination(); - if(destination.empty()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"Canceled by the user"); - return false; - } - return listThread->newCopy(sources,destination); -} - -bool CopyEngine::newCopy(const std::vector<std::string> &sources,const std::string &destination) -{ - if(forcedMode && mode!=Ultracopier::Copy) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"The engine is forced to move, you can't copy with it"); - QMessageBox::critical(NULL,QString::fromStdString(facilityEngine->translateText("Internal error")),tr("The engine is forced to move, you can't copy with it")); - return false; - } - return listThread->newCopy(sources,destination); -} - -bool CopyEngine::newMove(const std::vector<std::string> &sources) -{ - if(forcedMode && mode!=Ultracopier::Move) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"The engine is forced to copy, you can't move with it"); - QMessageBox::critical(NULL,QString::fromStdString(facilityEngine->translateText("Internal error")),tr("The engine is forced to copy, you can't move with it")); - return false; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); - std::string destination; - if(!ui->defaultDestinationFolder->text().isEmpty() && QDir(ui->defaultDestinationFolder->text()).exists()) - destination = ui->defaultDestinationFolder->text().toStdString(); - else - destination = askDestination(); - if(destination.empty()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"Canceled by the user"); - return false; - } - return listThread->newMove(sources,destination); -} - -bool CopyEngine::newMove(const std::vector<std::string> &sources,const std::string &destination) -{ - if(forcedMode && mode!=Ultracopier::Move) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"The engine is forced to copy, you can't move with it"); - QMessageBox::critical(NULL,QString::fromStdString(facilityEngine->translateText("Internal error")),tr("The engine is forced to copy, you can't move with it")); - return false; - } - return listThread->newMove(sources,destination); -} - -void CopyEngine::defaultDestinationFolderBrowse() -{ - std::string destination = askDestination(); - if(destination.empty()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"Canceled by the user"); - return; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed"); - if(uiIsInstalled) - ui->defaultDestinationFolder->setText(QString::fromStdString(destination)); -} - -std::string CopyEngine::askDestination() -{ - std::string destination = listThread->getUniqueDestinationFolder(); - if(!destination.empty()) - { - QMessageBox::StandardButton button=QMessageBox::question(interface,tr("Destination"),tr("Use the actual destination \"%1\"?") - .arg(QString::fromStdString(destination)), - QMessageBox::Yes | QMessageBox::No,QMessageBox::Yes); - if(button==QMessageBox::Yes) - return destination; - } - destination=QFileDialog::getExistingDirectory(interface,QString::fromStdString(facilityEngine->translateText("Select destination directory")),QStringLiteral(""),QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks).toStdString(); - return destination; -} - -void CopyEngine::newTransferList(const std::string &file) -{ - emit signal_importTransferList(file); -} - -//because direct access to list thread into the main thread can't be do -uint64_t CopyEngine::realByteTransfered() -{ - return size_for_speed; -} - -//speed limitation -bool CopyEngine::supportSpeedLimitation() const -{ - #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT - return true; - #else - return false; - #endif -} - -/** \brief to sync the transfer list - * Used when the interface is changed, useful to minimize the memory size */ -void CopyEngine::syncTransferList() -{ - listThread->syncTransferList(); -} - -void CopyEngine::set_doChecksum(bool doChecksum) -{ - listThread->set_doChecksum(doChecksum); - if(uiIsInstalled) - { - ui->doChecksum->setChecked(doChecksum); - ui->checksumOnlyOnError->setEnabled(ui->doChecksum->isChecked()); - ui->checksumIgnoreIfImpossible->setEnabled(ui->doChecksum->isChecked()); - } - this->doChecksum=doChecksum; -} - -void CopyEngine::set_checksumIgnoreIfImpossible(bool checksumIgnoreIfImpossible) -{ - listThread->set_checksumIgnoreIfImpossible(checksumIgnoreIfImpossible); - if(uiIsInstalled) - ui->checksumIgnoreIfImpossible->setChecked(checksumIgnoreIfImpossible); - this->checksumIgnoreIfImpossible=checksumIgnoreIfImpossible; -} - -void CopyEngine::set_checksumOnlyOnError(bool checksumOnlyOnError) -{ - listThread->set_checksumOnlyOnError(checksumOnlyOnError); - if(uiIsInstalled) - ui->checksumOnlyOnError->setChecked(checksumOnlyOnError); - this->checksumOnlyOnError=checksumOnlyOnError; -} - -void CopyEngine::set_osBuffer(bool osBuffer) -{ - listThread->set_osBuffer(osBuffer); - if(uiIsInstalled) - { - ui->osBuffer->setChecked(osBuffer); - updateBufferCheckbox(); - } - this->osBuffer=osBuffer; -} - -void CopyEngine::set_osBufferLimited(bool osBufferLimited) -{ - listThread->set_osBufferLimited(osBufferLimited); - if(uiIsInstalled) - { - ui->osBufferLimited->setChecked(osBufferLimited); - updateBufferCheckbox(); - } - this->osBufferLimited=osBufferLimited; -} - -void CopyEngine::set_osBufferLimit(unsigned int osBufferLimit) -{ - emit send_osBufferLimit(osBufferLimit); - if(uiIsInstalled) - ui->osBufferLimit->setValue(osBufferLimit); - this->osBufferLimit=osBufferLimit; -} - -void CopyEngine::updateBufferCheckbox() -{ - ui->osBufferLimited->setEnabled(ui->osBuffer->isChecked()); - ui->osBufferLimit->setEnabled(ui->osBuffer->isChecked() && ui->osBufferLimited->isChecked()); -} - -void CopyEngine::set_setFilters(std::vector<std::string> includeStrings,std::vector<std::string> includeOptions,std::vector<std::string> excludeStrings,std::vector<std::string> excludeOptions) -{ - if(filters!=NULL) - { - filters->setFilters(includeStrings,includeOptions,excludeStrings,excludeOptions); - emit send_setFilters(filters->getInclude(),filters->getExclude()); - } - this->includeStrings=includeStrings; - this->includeOptions=includeOptions; - this->excludeStrings=excludeStrings; - this->excludeOptions=excludeOptions; -} - -void CopyEngine::setRenamingRules(std::string firstRenamingRule,std::string otherRenamingRule) -{ - sendNewRenamingRules(firstRenamingRule,otherRenamingRule); -} - -bool CopyEngine::userAddFolder(const Ultracopier::CopyMode &mode) -{ - std::string source = QFileDialog::getExistingDirectory(interface,QString::fromStdString(facilityEngine->translateText("Select source directory")), - QStringLiteral(""), - QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks).toStdString(); - if(source.empty() || source=="") - return false; - std::vector<std::string> sources; - sources.push_back(source); - if(mode==Ultracopier::Copy) - return newCopy(sources); - else - return newMove(sources); -} - -bool CopyEngine::userAddFile(const Ultracopier::CopyMode &mode) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); - QStringList sources = QFileDialog::getOpenFileNames( - interface, - QString::fromStdString(facilityEngine->translateText("Select one or more files to open")), - QStringLiteral(""), - QString::fromStdString(facilityEngine->translateText("All files"))+QStringLiteral(" (*)")); - - std::vector<std::string> sourcesstd; - unsigned int index=0; - while(index<(unsigned int)sources.size()) - { - sourcesstd.push_back(sources.at(index).toStdString()); - index++; - } - - if(sourcesstd.empty()) - return false; - if(mode==Ultracopier::Copy) - return newCopy(sourcesstd); - else - return newMove(sourcesstd); -} - -void CopyEngine::pause() -{ - emit signal_pause(); -} - -void CopyEngine::resume() -{ - emit signal_resume(); -} - -void CopyEngine::skip(const uint64_t &id) -{ - emit signal_skip(id); -} - -void CopyEngine::cancel() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); - stopIt=true; - timerProgression.stop(); - timerActionDone.stop(); - emit tryCancel(); -} - -void CopyEngine::removeItems(const std::vector<uint64_t> &ids) -{ - emit signal_removeItems(ids); -} - -void CopyEngine::moveItemsOnTop(const std::vector<uint64_t> &ids) -{ - emit signal_moveItemsOnTop(ids); -} - -void CopyEngine::moveItemsUp(const std::vector<uint64_t> &ids) -{ - emit signal_moveItemsUp(ids); -} - -void CopyEngine::moveItemsDown(const std::vector<uint64_t> &ids) -{ - emit signal_moveItemsDown(ids); -} - -void CopyEngine::moveItemsOnBottom(const std::vector<uint64_t> &ids) -{ - emit signal_moveItemsOnBottom(ids); -} - -/** \brief give the forced mode, to export/import transfer list */ -void CopyEngine::forceMode(const Ultracopier::CopyMode &mode) -{ - #ifdef ULTRACOPIER_PLUGIN_RSYNC - if(mode==Ultracopier::Move) - { - listThread->setRsync(false); - rsync=false; - } - if(uiIsInstalled) - ui->rsync->setEnabled(mode==Ultracopier::Copy); - #endif - if(forcedMode) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Mode forced previously"); - QMessageBox::critical(NULL,QString::fromStdString(facilityEngine->translateText("Internal error")),tr("The mode has been forced previously. This is an internal error, please report it")); - return; - } - #ifdef ULTRACOPIER_PLUGIN_RSYNC - if(mode==Ultracopier::Move) - rsync=false; - #endif - if(mode==Ultracopier::Copy) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"Force mode to copy"); - else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"Force mode to move"); - #ifdef ULTRACOPIER_PLUGIN_RSYNC - if(uiIsInstalled) - ui->rsync->setEnabled(mode==Ultracopier::Copy); - #endif - this->mode=mode; - forcedMode=true; - emit signal_forceMode(mode); -} - -void CopyEngine::exportTransferList() -{ - std::string fileName = QFileDialog::getSaveFileName(interface,QString::fromStdString(facilityEngine->translateText("Save transfer list")),QStringLiteral("transfer-list.lst"),QString::fromStdString(facilityEngine->translateText("Transfer list"))+QStringLiteral(" (*.lst)")).toStdString(); - if(fileName.empty()) - return; - emit signal_exportTransferList(fileName); -} - -void CopyEngine::importTransferList() -{ - std::string fileName = QFileDialog::getOpenFileName(interface,QString::fromStdString(facilityEngine->translateText("Open transfer list")),QStringLiteral("transfer-list.lst"),QString::fromStdString(facilityEngine->translateText("Transfer list"))+QStringLiteral(" (*.lst)")).toStdString(); - if(fileName.empty()) - return; - emit signal_importTransferList(fileName); -} - -void CopyEngine::warningTransferList(const std::string &warning) -{ - QMessageBox::warning(interface,QString::fromStdString(facilityEngine->translateText("Error")),QString::fromStdString(warning)); -} - -void CopyEngine::errorTransferList(const std::string &error) -{ - QMessageBox::critical(interface,QString::fromStdString(facilityEngine->translateText("Error")),QString::fromStdString(error)); -} - -bool CopyEngine::setSpeedLimitation(const int64_t &speedLimitation) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"maxSpeed: "+std::to_string(speedLimitation)); - maxSpeed=speedLimitation; - emit send_speedLimitation(speedLimitation); - return true; -} - -void CopyEngine::setFileCollision(int index) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"action index: "+std::to_string(index)); - if(uiIsInstalled) - if(index!=ui->comboBoxFileCollision->currentIndex()) - ui->comboBoxFileCollision->setCurrentIndex(index); - switch(index) - { - case 0: - alwaysDoThisActionForFileExists=FileExists_NotSet; - break; - case 1: - alwaysDoThisActionForFileExists=FileExists_Skip; - break; - case 2: - alwaysDoThisActionForFileExists=FileExists_Overwrite; - break; - case 3: - alwaysDoThisActionForFileExists=FileExists_OverwriteIfNotSame; - break; - case 4: - alwaysDoThisActionForFileExists=FileExists_OverwriteIfNewer; - break; - case 5: - alwaysDoThisActionForFileExists=FileExists_OverwriteIfOlder; - break; - case 6: - alwaysDoThisActionForFileExists=FileExists_Rename; - break; - default: - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Error, unknow index, ignored"); - alwaysDoThisActionForFileExists=FileExists_NotSet; - break; - } - emit signal_setCollisionAction(alwaysDoThisActionForFileExists); -} - -void CopyEngine::setFileError(int index) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"action index: "+std::to_string(index)); - if(uiIsInstalled) - if(index!=ui->comboBoxFileError->currentIndex()) - ui->comboBoxFileError->setCurrentIndex(index); - switch(index) - { - case 0: - alwaysDoThisActionForFileError=FileError_NotSet; - break; - case 1: - alwaysDoThisActionForFileError=FileError_Skip; - break; - case 2: - alwaysDoThisActionForFileError=FileError_PutToEndOfTheList; - break; - default: - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Error, unknow index, ignored"); - alwaysDoThisActionForFileError=FileError_NotSet; - break; - } - emit signal_setCollisionAction(alwaysDoThisActionForFileExists); -} - -void CopyEngine::setTransferAlgorithm(int index) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"action index: "+std::to_string(index)); - if(uiIsInstalled) - if(index!=ui->transferAlgorithm->currentIndex()) - ui->transferAlgorithm->setCurrentIndex(index); - switch(index) - { - case 0: - transferAlgorithm=TransferAlgorithm_Automatic; - break; - case 1: - transferAlgorithm=TransferAlgorithm_Sequential; - break; - case 2: - transferAlgorithm=TransferAlgorithm_Parallel; - break; - default: - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Error, unknow index, ignored"); - transferAlgorithm=TransferAlgorithm_Automatic; - break; - } - if(transferAlgorithm==TransferAlgorithm_Sequential) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"transferAlgorithm==TransferAlgorithm_Sequential"); - else if(transferAlgorithm==TransferAlgorithm_Automatic) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"transferAlgorithm==TransferAlgorithm_Automatic"); - else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"transferAlgorithm==TransferAlgorithm_Parallel"); - emit signal_setTransferAlgorithm(transferAlgorithm); -} - -void CopyEngine::setRightTransfer(const bool doRightTransfer) -{ - this->doRightTransfer=doRightTransfer; - if(uiIsInstalled) - ui->doRightTransfer->setChecked(doRightTransfer); - listThread->setRightTransfer(doRightTransfer); -} - -//set keep date -void CopyEngine::setKeepDate(const bool keepDate) -{ - this->keepDate=keepDate; - if(uiIsInstalled) - ui->keepDate->setChecked(keepDate); - listThread->setKeepDate(keepDate); -} - -//set block size in KB -void CopyEngine::setBlockSize(const int blockSize) -{ - this->blockSize=blockSize; - if(uiIsInstalled) - { - ui->blockSize->setValue(blockSize); - ui->sequentialBuffer->setSingleStep(blockSize); - ui->parallelBuffer->setSingleStep(blockSize); - } - emit send_blockSize(blockSize); - updatedBlockSize(); -} - -void CopyEngine::setParallelBuffer(int parallelBuffer) -{ - parallelBuffer=round((float)parallelBuffer/(float)blockSize)*blockSize; - this->parallelBuffer=parallelBuffer; - if(uiIsInstalled) - ui->parallelBuffer->setValue(parallelBuffer); - emit send_parallelBuffer(parallelBuffer/blockSize); -} - -void CopyEngine::setSequentialBuffer(int sequentialBuffer) -{ - sequentialBuffer=round((float)sequentialBuffer/(float)blockSize)*blockSize; - this->sequentialBuffer=sequentialBuffer; - if(uiIsInstalled) - ui->sequentialBuffer->setValue(sequentialBuffer); - emit send_sequentialBuffer(sequentialBuffer/blockSize); -} - -void CopyEngine::setParallelizeIfSmallerThan(int parallelizeIfSmallerThan) -{ - this->parallelizeIfSmallerThan=parallelizeIfSmallerThan; - if(uiIsInstalled) - ui->parallelizeIfSmallerThan->setValue(parallelizeIfSmallerThan); - emit send_parallelizeIfSmallerThan(parallelizeIfSmallerThan*1024); -} - -void CopyEngine::setMoveTheWholeFolder(const bool &moveTheWholeFolder) -{ - this->moveTheWholeFolder=moveTheWholeFolder; - if(uiIsInstalled) - ui->moveTheWholeFolder->setChecked(moveTheWholeFolder); - emit send_moveTheWholeFolder(moveTheWholeFolder); -} - -void CopyEngine::setFollowTheStrictOrder(const bool &followTheStrictOrder) -{ - this->followTheStrictOrder=followTheStrictOrder; - if(uiIsInstalled) - ui->followTheStrictOrder->setChecked(followTheStrictOrder); - emit send_followTheStrictOrder(followTheStrictOrder); -} - -void CopyEngine::setDeletePartiallyTransferredFiles(const bool &deletePartiallyTransferredFiles) -{ - this->deletePartiallyTransferredFiles=deletePartiallyTransferredFiles; - if(uiIsInstalled) - ui->deletePartiallyTransferredFiles->setChecked(deletePartiallyTransferredFiles); - emit send_deletePartiallyTransferredFiles(deletePartiallyTransferredFiles); -} - -void CopyEngine::setInodeThreads(const int &inodeThreads) -{ - this->inodeThreads=inodeThreads; - if(uiIsInstalled) - ui->inodeThreads->setValue(inodeThreads); - emit send_setInodeThreads(inodeThreads); -} - -void CopyEngine::setRenameTheOriginalDestination(const bool &renameTheOriginalDestination) -{ - this->renameTheOriginalDestination=renameTheOriginalDestination; - if(uiIsInstalled) - ui->renameTheOriginalDestination->setChecked(renameTheOriginalDestination); - emit send_setRenameTheOriginalDestination(renameTheOriginalDestination); -} - -void CopyEngine::inodeThreadsFinished() -{ - this->inodeThreads=ui->inodeThreads->value(); - emit send_setInodeThreads(inodeThreads); -} - -//set auto start -void CopyEngine::setAutoStart(const bool autoStart) -{ - this->autoStart=autoStart; - if(uiIsInstalled) - ui->autoStart->setChecked(autoStart); - listThread->setAutoStart(autoStart); -} - -#ifdef ULTRACOPIER_PLUGIN_RSYNC -/// \brief set rsync -void CopyEngine::setRsync(const bool rsync) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"set rsync: "+std::to_string(rsync)); - this->rsync=rsync; - if(uiIsInstalled) - { - ui->rsync->setChecked(rsync); - ui->rsync->setEnabled(forcedMode && mode==Ultracopier::Copy); - ui->label_rsync->setEnabled(forcedMode && mode==Ultracopier::Copy); - } - listThread->setRsync(rsync); -} -#endif - -//set check destination folder -void CopyEngine::setCheckDestinationFolderExists(const bool checkDestinationFolderExists) -{ - this->checkDestinationFolderExists=checkDestinationFolderExists; - if(uiIsInstalled) - ui->checkBoxDestinationFolderExists->setChecked(checkDestinationFolderExists); - listThread->setCheckDestinationFolderExists(checkDestinationFolderExists); -} - -//reset widget -void CopyEngine::resetTempWidget() -{ - uiIsInstalled=false; - tempWidget=NULL; -} - -void CopyEngine::setFolderCollision(int index) -{ - switch(index) - { - case 0: - setComboBoxFolderCollision(FolderExists_NotSet,false); - break; - case 1: - setComboBoxFolderCollision(FolderExists_Merge,false); - break; - case 2: - setComboBoxFolderCollision(FolderExists_Skip,false); - break; - case 3: - setComboBoxFolderCollision(FolderExists_Rename,false); - break; - } -} - -void CopyEngine::setFolderError(int index) -{ - switch(index) - { - case 0: - setComboBoxFolderError(FileError_NotSet,false); - break; - case 1: - setComboBoxFolderError(FileError_Skip,false); - break; - } -} - -//set the translate -void CopyEngine::newLanguageLoaded() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start, retranslate the widget options"); - if(tempWidget!=NULL) - { - ui->retranslateUi(tempWidget); - ui->comboBoxFolderError->setItemText(0,tr("Ask")); - ui->comboBoxFolderError->setItemText(1,tr("Skip")); - - ui->comboBoxFolderCollision->setItemText(0,tr("Ask")); - ui->comboBoxFolderCollision->setItemText(1,tr("Merge")); - ui->comboBoxFolderCollision->setItemText(2,tr("Skip")); - ui->comboBoxFolderCollision->setItemText(3,tr("Rename")); - - ui->comboBoxFileError->setItemText(0,tr("Ask")); - ui->comboBoxFileError->setItemText(1,tr("Skip")); - ui->comboBoxFileError->setItemText(2,tr("Put at the end")); - - ui->comboBoxFileCollision->setItemText(0,tr("Ask")); - ui->comboBoxFileCollision->setItemText(1,tr("Skip")); - ui->comboBoxFileCollision->setItemText(2,tr("Overwrite")); - ui->comboBoxFileCollision->setItemText(3,tr("Overwrite if different")); - ui->comboBoxFileCollision->setItemText(4,tr("Overwrite if newer")); - ui->comboBoxFileCollision->setItemText(5,tr("Overwrite if older")); - ui->comboBoxFileCollision->setItemText(6,tr("Rename")); - - ui->transferAlgorithm->setItemText(0,tr("Automatic")); - ui->transferAlgorithm->setItemText(1,tr("Sequential")); - ui->transferAlgorithm->setItemText(2,tr("Parallel")); - } - else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"ui not loaded!"); -} - -void CopyEngine::setComboBoxFolderCollision(FolderExistsAction action,bool changeComboBox) -{ - alwaysDoThisActionForFolderExists=action; - emit signal_setFolderCollision(alwaysDoThisActionForFolderExists); - if(!changeComboBox || !uiIsInstalled) - return; - switch(action) - { - case FolderExists_Merge: - ui->comboBoxFolderCollision->setCurrentIndex(1); - break; - case FolderExists_Skip: - ui->comboBoxFolderCollision->setCurrentIndex(2); - break; - case FolderExists_Rename: - ui->comboBoxFolderCollision->setCurrentIndex(3); - break; - default: - ui->comboBoxFolderCollision->setCurrentIndex(0); - break; - } -} - -void CopyEngine::setComboBoxFolderError(FileErrorAction action,bool changeComboBox) -{ - alwaysDoThisActionForFileError=action; - if(!changeComboBox || !uiIsInstalled) - return; - switch(action) - { - case FileError_Skip: - ui->comboBoxFolderError->setCurrentIndex(1); - break; - default: - ui->comboBoxFolderError->setCurrentIndex(0); - break; - } -} - -void CopyEngine::doChecksum_toggled(bool doChecksum) -{ - listThread->set_doChecksum(doChecksum); -} - -void CopyEngine::checksumOnlyOnError_toggled(bool checksumOnlyOnError) -{ - listThread->set_checksumOnlyOnError(checksumOnlyOnError); -} - -void CopyEngine::checksumIgnoreIfImpossible_toggled(bool checksumIgnoreIfImpossible) -{ - listThread->set_checksumIgnoreIfImpossible(checksumIgnoreIfImpossible); -} - -void CopyEngine::osBuffer_toggled(bool osBuffer) -{ - listThread->set_osBuffer(osBuffer); - updateBufferCheckbox(); -} - -void CopyEngine::osBufferLimited_toggled(bool osBufferLimited) -{ - listThread->set_osBufferLimited(osBufferLimited); - updateBufferCheckbox(); -} - -void CopyEngine::osBufferLimit_editingFinished() -{ - emit send_osBufferLimit(ui->osBufferLimit->value()); -} - -void CopyEngine::showFilterDialog() -{ - if(filters!=NULL) - filters->exec(); -} - -void CopyEngine::sendNewFilters() -{ - if(filters!=NULL) - emit send_setFilters(filters->getInclude(),filters->getExclude()); -} - -void CopyEngine::sendNewRenamingRules(std::string firstRenamingRule,std::string otherRenamingRule) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"new filter"); - this->firstRenamingRule=firstRenamingRule; - this->otherRenamingRule=otherRenamingRule; - emit send_sendNewRenamingRules(firstRenamingRule,otherRenamingRule); -} - -void CopyEngine::showRenamingRules() -{ - if(renamingRules==NULL) - { - QMessageBox::critical(NULL,tr("Options error"),tr("Options engine is not loaded. Unable to access the filters")); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"options not loaded"); - return; - } - renamingRules->exec(); -} - -void CopyEngine::get_realBytesTransfered(quint64 realBytesTransfered) -{ - size_for_speed=realBytesTransfered; -} - -void CopyEngine::newActionInProgess(Ultracopier::EngineActionInProgress action) -{ - if(action==Ultracopier::Idle) - { - timerProgression.stop(); - timerActionDone.stop(); - } - else - { - timerProgression.start(); - timerActionDone.start(); - } -} - -void CopyEngine::updatedBlockSize() -{ - if(uiIsInstalled) - { - ui->sequentialBuffer->setMinimum(ui->blockSize->value()); - ui->sequentialBuffer->setSingleStep(ui->blockSize->value()); - ui->sequentialBuffer->setMaximum(ui->blockSize->value()*ULTRACOPIER_PLUGIN_MAX_SEQUENTIAL_NUMBER_OF_BLOCK); - ui->parallelBuffer->setMinimum(ui->blockSize->value()); - ui->parallelBuffer->setSingleStep(ui->blockSize->value()); - ui->parallelBuffer->setMaximum(ui->blockSize->value()*ULTRACOPIER_PLUGIN_MAX_PARALLEL_NUMBER_OF_BLOCK); - } - setParallelBuffer(parallelBuffer); - setSequentialBuffer(sequentialBuffer); -} - -void CopyEngine::setCheckDiskSpace(const bool &checkDiskSpace) -{ - this->checkDiskSpace=checkDiskSpace; - if(uiIsInstalled) - ui->checkDiskSpace->setChecked(checkDiskSpace); - listThread->setCheckDiskSpace(checkDiskSpace); -} - -void CopyEngine::setDefaultDestinationFolder(const std::string &defaultDestinationFolder) -{ - this->defaultDestinationFolder=defaultDestinationFolder; - if(uiIsInstalled) - ui->defaultDestinationFolder->setText(QString::fromStdString(defaultDestinationFolder)); -} - -void CopyEngine::setCopyListOrder(const bool &order) -{ - listThread->setCopyListOrder(order); -} - -void CopyEngine::exportErrorIntoTransferList() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"exportErrorIntoTransferList"); - std::string fileName = QFileDialog::getSaveFileName(interface,QString::fromStdString(facilityEngine->translateText("Save transfer list")),QStringLiteral("transfer-list.lst"),QString::fromStdString(facilityEngine->translateText("Transfer list"))+QStringLiteral(" (*.lst)")).toStdString(); - if(fileName.empty()) - return; - emit signal_exportErrorIntoTransferList(fileName); -} diff --git a/plugins/CopyEngine/Ultracopier/CopyEngine.h b/plugins/CopyEngine/Ultracopier/CopyEngine.h deleted file mode 100644 index e5311d8..0000000 --- a/plugins/CopyEngine/Ultracopier/CopyEngine.h +++ /dev/null @@ -1,382 +0,0 @@ -/** \file copyEngine.h -\brief Define the copy engine -\author alpha_one_x86 -\licence GPL3, see the file COPYING */ - -#include <QWidget> -#include <QObject> -#include <QList> -#include <vector> -#include <string> -#include <QFileInfo> -#include <QFile> -#include <QFileDialog> -#include <QMessageBox> - -#include "../../../interface/PluginInterface_CopyEngine.h" -#include "FileErrorDialog.h" -#include "FileExistsDialog.h" -#include "FolderExistsDialog.h" -#include "FileIsSameDialog.h" -#include "ui_copyEngineOptions.h" -#include "Environment.h" -#include "ListThread.h" -#include "Filters.h" -#include "RenamingRules.h" - -#ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW -#include "DebugDialog.h" -#include <QTimer> -#endif - -#ifndef COPY_ENGINE_H -#define COPY_ENGINE_H - -namespace Ui { - class copyEngineOptions; -} - -/// \brief the implementation of copy engine plugin, manage directly few stuff, else pass to ListThread class. -class CopyEngine : public PluginInterface_CopyEngine -{ - Q_OBJECT -public: - CopyEngine(FacilityInterface * facilityEngine); - ~CopyEngine(); - void connectTheSignalsSlots(); -private: - ListThread * listThread; - #ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW - DebugDialog debugDialogWindow; - #endif - QWidget * tempWidget; - Ui::copyEngineOptions * ui; - bool uiIsInstalled; - QWidget * interface; - Filters * filters; - RenamingRules * renamingRules; - FacilityInterface * facilityEngine; - uint32_t maxSpeed; - bool doRightTransfer; - bool keepDate; - int blockSize; - int parallelBuffer; - int sequentialBuffer; - int parallelizeIfSmallerThan; - bool followTheStrictOrder; - bool deletePartiallyTransferredFiles; - int inodeThreads; - bool renameTheOriginalDestination; - bool moveTheWholeFolder; - bool autoStart; - #ifdef ULTRACOPIER_PLUGIN_RSYNC - bool rsync; - #endif - bool checkDestinationFolderExists; - FileExistsAction alwaysDoThisActionForFileExists; - FileErrorAction alwaysDoThisActionForFileError; - FileErrorAction alwaysDoThisActionForFolderError; - FolderExistsAction alwaysDoThisActionForFolderExists; - TransferAlgorithm transferAlgorithm; - bool dialogIsOpen; - volatile bool stopIt; - std::string defaultDestinationFolder; - /// \brief error queue - struct errorQueueItem - { - TransferThread * transfer; ///< NULL if send by scan thread - ScanFileOrFolder * scan; ///< NULL if send by transfer thread - bool mkPath; - bool rmPath; - QFileInfo inode; - std::string errorString; - ErrorType errorType; - }; - std::vector<errorQueueItem> errorQueue; - /// \brief already exists queue - struct alreadyExistsQueueItem - { - TransferThread * transfer; ///< NULL if send by scan thread - ScanFileOrFolder * scan; ///< NULL if send by transfer thread - QFileInfo source; - QFileInfo destination; - bool isSame; - }; - std::vector<alreadyExistsQueueItem> alreadyExistsQueue; - uint64_t size_for_speed;//because direct access to list thread into the main thread can't be do - Ultracopier::CopyMode mode; - bool forcedMode; - - bool doChecksum; - bool checksumIgnoreIfImpossible; - bool checksumOnlyOnError; - bool osBuffer; - bool osBufferLimited; - bool checkDiskSpace; - unsigned int osBufferLimit; - std::vector<std::string> includeStrings,includeOptions,excludeStrings,excludeOptions; - std::string firstRenamingRule; - std::string otherRenamingRule; - - //send action done timer - QTimer timerActionDone; - //send progression timer - QTimer timerProgression; - - QTimer timerUpdateMount; - int putAtBottom;//to keep how many automatic put at bottom have been used -private slots: - #ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW - void updateTheDebugInfo(const std::vector<std::string> &newList, const std::vector<std::string> &newList2, const int &numberOfInodeOperation); - #endif - - /************* External call ********************/ - //dialog message - /// \note Can be call without queue because all call will be serialized - void fileAlreadyExistsSlot(QFileInfo source,QFileInfo destination,bool isSame,TransferThread * thread); - /// \note Can be call without queue because all call will be serialized - void errorOnFileSlot(QFileInfo fileInfo, std::string errorString, TransferThread * thread, const ErrorType &errorType); - /// \note Can be call without queue because all call will be serialized - void folderAlreadyExistsSlot(QFileInfo source,QFileInfo destination,bool isSame,ScanFileOrFolder * thread); - /// \note Can be call without queue because all call will be serialized - void errorOnFolderSlot(QFileInfo fileInfo, std::string errorString, ScanFileOrFolder * thread, ErrorType errorType); - //mkpath event - void mkPathErrorOnFolderSlot(QFileInfo, std::string, ErrorType errorType); - - //dialog message - /// \note Can be call without queue because all call will be serialized - void fileAlreadyExists(QFileInfo source,QFileInfo destination,bool isSame,TransferThread * thread,bool isCalledByShowOneNewDialog=false); - /// \note Can be call without queue because all call will be serialized - void errorOnFile(QFileInfo fileInfo, std::string errorString, TransferThread * thread, const ErrorType &errorType, bool isCalledByShowOneNewDialog=false); - /// \note Can be call without queue because all call will be serialized - void folderAlreadyExists(QFileInfo source,QFileInfo destination,bool isSame,ScanFileOrFolder * thread,bool isCalledByShowOneNewDialog=false); - /// \note Can be call without queue because all call will be serialized - void errorOnFolder(QFileInfo fileInfo, std::string errorString, ScanFileOrFolder * thread, ErrorType errorType, bool isCalledByShowOneNewDialog=false); - //mkpath event - void mkPathErrorOnFolder(QFileInfo, std::string, const ErrorType &errorType, bool isCalledByShowOneNewDialog=false); - - //show one new dialog if needed - void showOneNewDialog(); - void sendNewFilters(); - - void doChecksum_toggled(bool); - void checksumOnlyOnError_toggled(bool); - void checksumIgnoreIfImpossible_toggled(bool); - void osBuffer_toggled(bool); - void osBufferLimited_toggled(bool); - void osBufferLimit_editingFinished(); - void showFilterDialog(); - void sendNewRenamingRules(std::string firstRenamingRule,std::string otherRenamingRule); - void showRenamingRules(); - void get_realBytesTransfered(quint64 realBytesTransfered); - void newActionInProgess(Ultracopier::EngineActionInProgress); - void updatedBlockSize(); - void updateBufferCheckbox(); - void haveNeedPutAtBottom(bool needPutAtBottom, const QFileInfo &fileInfo, const std::string &errorString, TransferThread *thread, const ErrorType &errorType); - void missingDiskSpace(std::vector<Diskspace> list); - void exportErrorIntoTransferList(); -public: - /** \brief to send the options panel - * \return return false if have not the options - * \param tempWidget the widget to generate on it the options */ - bool getOptionsEngine(QWidget * tempWidget); - /** \brief to have interface widget to do modal dialog - * \param interface to have the widget of the interface, useful for modal dialog */ - void setInterfacePointer(QWidget * interface); - //return empty if multiple - /** \brief compare the current sources of the copy, with the passed arguments - * \param sources the sources list to compares with the current sources list - * \return true if have same sources, else false (or empty) */ - bool haveSameSource(const std::vector<std::string> &sources); - /** \brief compare the current destination of the copy, with the passed arguments - * \param destination the destination to compares with the current destination - * \return true if have same destination, else false (or empty) */ - bool haveSameDestination(const std::string &destination); - //external soft like file browser have send copy/move list to do - /** \brief send copy without destination, ask the destination - * \param sources the sources list to copy - * \return true if the copy have been accepted */ - bool newCopy(const std::vector<std::string> &sources); - /** \brief send copy with destination - * \param sources the sources list to copy - * \param destination the destination to copy - * \return true if the copy have been accepted */ - bool newCopy(const std::vector<std::string> &sources,const std::string &destination); - /** \brief send move without destination, ask the destination - * \param sources the sources list to move - * \return true if the move have been accepted */ - bool newMove(const std::vector<std::string> &sources); - /** \brief send move without destination, ask the destination - * \param sources the sources list to move - * \param destination the destination to move - * \return true if the move have been accepted */ - bool newMove(const std::vector<std::string> &sources,const std::string &destination); - /** \brief send the new transfer list - * \param file the transfer list */ - void newTransferList(const std::string &file); - - /** \brief to get byte read, use by Ultracopier for the speed calculation - * real size transfered to right speed calculation */ - uint64_t realByteTransfered(); - /** \brief support speed limitation */ - bool supportSpeedLimitation() const; - - /** \brief to set drives detected - * specific to this copy engine */ - - /** \brief to sync the transfer list - * Used when the interface is changed, useful to minimize the memory size */ - void syncTransferList(); - - void set_doChecksum(bool doChecksum); - void set_checksumIgnoreIfImpossible(bool checksumIgnoreIfImpossible); - void set_checksumOnlyOnError(bool checksumOnlyOnError); - void set_osBuffer(bool osBuffer); - void set_osBufferLimited(bool osBufferLimited); - void set_osBufferLimit(unsigned int osBufferLimit); - void set_setFilters(std::vector<std::string> includeStrings,std::vector<std::string> includeOptions,std::vector<std::string> excludeStrings,std::vector<std::string> excludeOptions); - void setRenamingRules(std::string firstRenamingRule,std::string otherRenamingRule); - #ifdef ULTRACOPIER_PLUGIN_RSYNC - void setRsync(const bool rsync); - #endif - void setCheckDiskSpace(const bool &checkDiskSpace); - void setDefaultDestinationFolder(const std::string &defaultDestinationFolder); - void setCopyListOrder(const bool &order); - void defaultDestinationFolderBrowse(); - std::string askDestination(); -public slots: - //user ask ask to add folder (add it with interface ask source/destination) - /** \brief add folder called on the interface - * Used by manual adding */ - bool userAddFolder(const Ultracopier::CopyMode &mode); - /** \brief add file called on the interface - * Used by manual adding */ - bool userAddFile(const Ultracopier::CopyMode &mode); - //action on the copy - /// \brief put the transfer in pause - void pause(); - /// \brief resume the transfer - void resume(); - /** \brief skip one transfer entry - * \param id id of the file to remove */ - void skip(const uint64_t &id); - /// \brief cancel all the transfer - void cancel(); - //edit the transfer list - /** \brief remove the selected item - * \param ids ids is the id list of the selected items */ - void removeItems(const std::vector<uint64_t> &ids); - /** \brief move on top of the list the selected item - * \param ids ids is the id list of the selected items */ - void moveItemsOnTop(const std::vector<uint64_t> &ids); - /** \brief move up the list the selected item - * \param ids ids is the id list of the selected items */ - void moveItemsUp(const std::vector<uint64_t> &ids); - /** \brief move down the list the selected item - * \param ids ids is the id list of the selected items */ - void moveItemsDown(const std::vector<uint64_t> &ids); - /** \brief move on bottom of the list the selected item - * \param ids ids is the id list of the selected items */ - void moveItemsOnBottom(const std::vector<uint64_t> &ids); - - /** \brief give the forced mode, to export/import transfer list */ - void forceMode(const Ultracopier::CopyMode &mode); - /// \brief export the transfer list into a file - void exportTransferList(); - /// \brief import the transfer list into a file - void importTransferList(); - - /** \brief to set the speed limitation - * -1 if not able, 0 if disabled */ - bool setSpeedLimitation(const int64_t &speedLimitation); - - // specific to this copy engine - - /// \brief set if the rights shoul be keep - void setRightTransfer(const bool doRightTransfer); - /// \brief set keep date - void setKeepDate(const bool keepDate); - /// \brief set block size in KB - void setBlockSize(const int blockSize); - - void setParallelBuffer(int parallelBuffer); - void setSequentialBuffer(int sequentialBuffer); - void setParallelizeIfSmallerThan(int parallelizeIfSmallerThan); - void setMoveTheWholeFolder(const bool &moveTheWholeFolder); - void setFollowTheStrictOrder(const bool &followTheStrictOrder); - void setDeletePartiallyTransferredFiles(const bool &deletePartiallyTransferredFiles); - void setInodeThreads(const int &inodeThreads); - void setRenameTheOriginalDestination(const bool &renameTheOriginalDestination); - void inodeThreadsFinished(); - - /// \brief set auto start - void setAutoStart(const bool autoStart); - /// \brief set if need check if the destination folder exists - void setCheckDestinationFolderExists(const bool checkDestinationFolderExists); - /// \brief reset widget - void resetTempWidget(); - //autoconnect - void setFolderCollision(int index); - void setFolderError(int index); - void setFileCollision(int index); - void setFileError(int index); - void setTransferAlgorithm(int index); - /// \brief need retranslate the insterface - void newLanguageLoaded(); -private slots: - void setComboBoxFolderCollision(FolderExistsAction action,bool changeComboBox=true); - void setComboBoxFolderError(FileErrorAction action,bool changeComboBox=true); - void warningTransferList(const std::string &warning); - void errorTransferList(const std::string &error); -signals: - //action on the copy - void signal_pause() const; - void signal_resume() const; - void signal_skip(const uint64_t &id) const; - - //edit the transfer list - void signal_removeItems(const std::vector<uint64_t> &ids) const; - void signal_moveItemsOnTop(const std::vector<uint64_t> &ids) const; - void signal_moveItemsUp(const std::vector<uint64_t> &ids) const; - void signal_moveItemsDown(const std::vector<uint64_t> &ids) const; - void signal_moveItemsOnBottom(const std::vector<uint64_t> &ids) const; - - void signal_forceMode(const Ultracopier::CopyMode &mode) const; - void signal_exportTransferList(const std::string &fileName) const; - void signal_importTransferList(const std::string &fileName) const; - void signal_exportErrorIntoTransferList(const std::string &fileName) const; - - //action - void signal_setTransferAlgorithm(TransferAlgorithm transferAlgorithm) const; - void signal_setCollisionAction(FileExistsAction alwaysDoThisActionForFileExists) const; - void signal_setComboBoxFolderCollision(FolderExistsAction action) const; - void signal_setFolderCollision(FolderExistsAction action) const; - - //internal cancel - void tryCancel() const; - void getNeedPutAtBottom(const QFileInfo &fileInfo,const std::string &errorString,TransferThread * thread,const ErrorType &errorType) const; - - #ifdef ULTRACOPIER_PLUGIN_DEBUG - /// \brief To debug source - void debugInformation(const Ultracopier::DebugLevel &level,std::string fonction,std::string text,std::string file,int ligne) const; - #endif - - //other signals - void queryOneNewDialog() const; - - void send_speedLimitation(const uint64_t &speedLimitation) const; - void send_blockSize(const int &blockSize) const; - void send_osBufferLimit(const unsigned int &osBufferLimit) const; - void send_setFilters(const std::vector<Filters_rules> &include,const std::vector<Filters_rules> &exclude) const; - void send_sendNewRenamingRules(std::string firstRenamingRule,std::string otherRenamingRule) const; - void send_parallelBuffer(const int ¶llelBuffer) const; - void send_sequentialBuffer(const int &sequentialBuffer) const; - void send_parallelizeIfSmallerThan(const int ¶llelizeIfSmallerThan) const; - void send_followTheStrictOrder(const bool &followTheStrictOrder) const; - void send_deletePartiallyTransferredFiles(const bool &deletePartiallyTransferredFiles) const; - void send_setInodeThreads(const int &inodeThreads) const; - void send_moveTheWholeFolder(const bool &moveTheWholeFolder) const; - void send_setRenameTheOriginalDestination(const bool &renameTheOriginalDestination) const; -}; - -#endif // COPY_ENGINE_H diff --git a/plugins/CopyEngine/Ultracopier/CopyEngine.pro b/plugins/CopyEngine/Ultracopier/CopyEngine.pro deleted file mode 100644 index 112e999..0000000 --- a/plugins/CopyEngine/Ultracopier/CopyEngine.pro +++ /dev/null @@ -1,106 +0,0 @@ -CONFIG += c++11 -QMAKE_CXXFLAGS+="-std=c++0x -Wall -Wextra" -mac:QMAKE_CXXFLAGS+="-stdlib=libc++" - -QT += widgets xml -DEFINES += UNICODE _UNICODE -TEMPLATE = lib -CONFIG += plugin -win32 { - LIBS += -ladvapi32 -} - -HEADERS = \ - $$PWD/StructEnumDefinition.h \ - $$PWD/StructEnumDefinition_CopyEngine.h \ - $$PWD/DebugEngineMacro.h \ - $$PWD/Variable.h \ - $$PWD/TransferThread.h \ - $$PWD/ReadThread.h \ - $$PWD/WriteThread.h \ - $$PWD/MkPath.h \ - $$PWD/AvancedQFile.h \ - $$PWD/ListThread.h \ - $$PWD/../../../interface/PluginInterface_CopyEngine.h \ - $$PWD/../../../interface/OptionInterface.h \ - $$PWD/../../../interface/FacilityInterface.h \ - $$PWD/../../../cpp11addition.h \ - $$PWD/Filters.h \ - $$PWD/FilterRules.h \ - $$PWD/RenamingRules.h \ - $$PWD/DriveManagement.h \ - $$PWD/CopyEngine.h \ - $$PWD/DebugDialog.h \ - $$PWD/CopyEngineFactory.h \ - $$PWD/FileErrorDialog.h \ - $$PWD/FileExistsDialog.h \ - $$PWD/FileIsSameDialog.h \ - $$PWD/FolderExistsDialog.h \ - $$PWD/ScanFileOrFolder.h \ - $$PWD/DiskSpace.h -SOURCES = \ - $$PWD/TransferThread.cpp \ - $$PWD/ReadThread.cpp \ - $$PWD/WriteThread.cpp \ - $$PWD/MkPath.cpp \ - $$PWD/AvancedQFile.cpp \ - $$PWD/ListThread.cpp \ - $$PWD/../../../cpp11addition.cpp \ - $$PWD/../../../cpp11additionstringtointcpp.cpp \ - $$PWD/Filters.cpp \ - $$PWD/FilterRules.cpp \ - $$PWD/RenamingRules.cpp \ - $$PWD/ListThread_InodeAction.cpp \ - $$PWD/DriveManagement.cpp \ - $$PWD/CopyEngine-collision-and-error.cpp \ - $$PWD/CopyEngine.cpp \ - $$PWD/DebugDialog.cpp \ - $$PWD/CopyEngineFactory.cpp \ - $$PWD/FileErrorDialog.cpp \ - $$PWD/FileExistsDialog.cpp \ - $$PWD/FileIsSameDialog.cpp \ - $$PWD/FolderExistsDialog.cpp \ - $$PWD/ScanFileOrFolder.cpp \ - $$PWD/DiskSpace.cpp -TARGET = $$qtLibraryTarget(copyEngine) -TRANSLATIONS += \ - $$PWD/Languages/ar/translation.ts \ - $$PWD/Languages/de/translation.ts \ - $$PWD/Languages/el/translation.ts \ - $$PWD/Languages/en/translation.ts \ - $$PWD/Languages/es/translation.ts \ - $$PWD/Languages/fr/translation.ts \ - $$PWD/Languages/hi/translation.ts \ - $$PWD/Languages/hu/translation.ts \ - $$PWD/Languages/id/translation.ts \ - $$PWD/Languages/it/translation.ts \ - $$PWD/Languages/ja/translation.ts \ - $$PWD/Languages/ko/translation.ts \ - $$PWD/Languages/nl/translation.ts \ - $$PWD/Languages/no/translation.ts \ - $$PWD/Languages/pl/translation.ts \ - $$PWD/Languages/pt/translation.ts \ - $$PWD/Languages/ru/translation.ts \ - $$PWD/Languages/th/translation.ts \ - $$PWD/Languages/tr/translation.ts \ - $$PWD/Languages/zh/translation.ts - -FORMS += \ - $$PWD/fileErrorDialog.ui \ - $$PWD/fileExistsDialog.ui \ - $$PWD/fileIsSameDialog.ui \ - $$PWD/debugDialog.ui \ - $$PWD/folderExistsDialog.ui \ - $$PWD/Filters.ui \ - $$PWD/FilterRules.ui \ - $$PWD/RenamingRules.ui \ - $$PWD/copyEngineOptions.ui \ - $$PWD/DiskSpace.ui - -OTHER_FILES += \ - $$PWD/informations.xml - -!CONFIG(static) { -RESOURCES += \ - $$PWD/copyEngineResources.qrc -} diff --git a/plugins/CopyEngine/Ultracopier/CopyEngineFactory.cpp b/plugins/CopyEngine/Ultracopier/CopyEngineFactory.cpp deleted file mode 100644 index ce86c94..0000000 --- a/plugins/CopyEngine/Ultracopier/CopyEngineFactory.cpp +++ /dev/null @@ -1,709 +0,0 @@ -/** \file factory.cpp -\brief Define the factory to create new instance -\author alpha_one_x86 */ - -#include <QFileDialog> -#include <QList> -#include <QDebug> -#include <cmath> -#include <QStorageInfo> - -#include "../../../cpp11addition.h" -#include "CopyEngineFactory.h" - -// The cmath header from MSVC does not contain round() -#if (defined(_WIN64) || defined(_WIN32)) && defined(_MSC_VER) -inline double round(double d) { - return floor( d + 0.5 ); -} -#endif - -CopyEngineFactory::CopyEngineFactory() : - ui(new Ui::copyEngineOptions()) -{ - qRegisterMetaType<FolderExistsAction>("FolderExistsAction"); - qRegisterMetaType<FileExistsAction>("FileExistsAction"); - qRegisterMetaType<QList<Filters_rules> >("QList<Filters_rules>"); - qRegisterMetaType<TransferStat>("TransferStat"); - qRegisterMetaType<QList<QByteArray> >("QList<QByteArray>"); - qRegisterMetaType<TransferAlgorithm>("TransferAlgorithm"); - qRegisterMetaType<ActionType>("ActionType"); - qRegisterMetaType<ErrorType>("ErrorType"); - qRegisterMetaType<Diskspace>("Diskspace"); - qRegisterMetaType<QList<Diskspace> >("QList<Diskspace>"); - qRegisterMetaType<QFileInfo>("QFileInfo"); - qRegisterMetaType<Ultracopier::CopyMode>("Ultracopier::CopyMode"); - qRegisterMetaType<std::vector<Filters_rules> >("std::vector<Filters_rules>"); - - tempWidget=new QWidget(); - ui->setupUi(tempWidget); - ui->toolBox->setCurrentIndex(0); - ui->blockSize->setMaximum(ULTRACOPIER_PLUGIN_MAX_BLOCK_SIZE); - errorFound=false; - optionsEngine=NULL; - filters=new Filters(tempWidget); - renamingRules=new RenamingRules(tempWidget); - - connect(ui->doRightTransfer, &QCheckBox::toggled, this,&CopyEngineFactory::setDoRightTransfer); - connect(ui->keepDate, &QCheckBox::toggled, this,&CopyEngineFactory::setKeepDate); - connect(ui->blockSize, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged), this,&CopyEngineFactory::setBlockSize); - connect(ui->sequentialBuffer, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged), this,&CopyEngineFactory::setSequentialBuffer); - connect(ui->parallelBuffer, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged), this,&CopyEngineFactory::setParallelBuffer); - connect(ui->parallelizeIfSmallerThan, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged), this,&CopyEngineFactory::setParallelizeIfSmallerThan); - connect(ui->inodeThreads, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged), this,&CopyEngineFactory::on_inodeThreads_editingFinished); - connect(ui->autoStart, &QCheckBox::toggled, this,&CopyEngineFactory::setAutoStart); - connect(ui->doChecksum, &QCheckBox::toggled, this,&CopyEngineFactory::doChecksum_toggled); - connect(ui->comboBoxFolderError, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,&CopyEngineFactory::setFolderError); - connect(ui->comboBoxFolderCollision, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,&CopyEngineFactory::setFolderCollision); - connect(ui->comboBoxFileError, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,&CopyEngineFactory::setFileError); - connect(ui->comboBoxFileCollision, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,&CopyEngineFactory::setFileCollision); - connect(ui->transferAlgorithm, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,&CopyEngineFactory::setTransferAlgorithm); - connect(ui->checkBoxDestinationFolderExists, &QCheckBox::toggled, this,&CopyEngineFactory::setCheckDestinationFolder); - connect(ui->checksumIgnoreIfImpossible, &QCheckBox::toggled, this,&CopyEngineFactory::checksumIgnoreIfImpossible_toggled); - connect(ui->checksumOnlyOnError, &QCheckBox::toggled, this,&CopyEngineFactory::checksumOnlyOnError_toggled); - connect(ui->osBuffer, &QCheckBox::toggled, this,&CopyEngineFactory::osBuffer_toggled); - connect(ui->osBufferLimited, &QCheckBox::toggled, this,&CopyEngineFactory::osBufferLimited_toggled); - connect(ui->osBufferLimit, &QSpinBox::editingFinished, this,&CopyEngineFactory::osBufferLimit_editingFinished); - #ifdef ULTRACOPIER_PLUGIN_RSYNC - connect(ui->rsync, &QCheckBox::toggled, this,&CopyEngineFactory::setRsync); - #endif - connect(ui->inodeThreads, &QSpinBox::editingFinished, this,&CopyEngineFactory::on_inodeThreads_editingFinished); - connect(ui->osBufferLimited, &QAbstractButton::toggled, this,&CopyEngineFactory::updateBufferCheckbox); - connect(ui->osBuffer, &QAbstractButton::toggled, this,&CopyEngineFactory::updateBufferCheckbox); - connect(ui->moveTheWholeFolder, &QCheckBox::toggled, this,&CopyEngineFactory::moveTheWholeFolder); - connect(ui->followTheStrictOrder, &QCheckBox::toggled, this,&CopyEngineFactory::followTheStrictOrder); - connect(ui->deletePartiallyTransferredFiles,&QCheckBox::toggled, this,&CopyEngineFactory::deletePartiallyTransferredFiles); - connect(ui->renameTheOriginalDestination,&QCheckBox::toggled, this,&CopyEngineFactory::renameTheOriginalDestination); - connect(ui->checkDiskSpace, &QCheckBox::toggled, this,&CopyEngineFactory::checkDiskSpace); - connect(ui->defaultDestinationFolderBrowse,&QPushButton::clicked, this,&CopyEngineFactory::defaultDestinationFolderBrowse); - connect(ui->defaultDestinationFolder,&QLineEdit::editingFinished, this,&CopyEngineFactory::defaultDestinationFolder); - connect(ui->copyListOrder, &QCheckBox::toggled, this,&CopyEngineFactory::copyListOrder); - - connect(filters,&Filters::sendNewFilters,this,&CopyEngineFactory::sendNewFilters); - connect(ui->filters,&QPushButton::clicked,this,&CopyEngineFactory::showFilterDialog); - connect(renamingRules,&RenamingRules::sendNewRenamingRules,this,&CopyEngineFactory::sendNewRenamingRules); - connect(ui->renamingRules,&QPushButton::clicked,this,&CopyEngineFactory::showRenamingRules); - - lunchInitFunction.setInterval(0); - lunchInitFunction.setSingleShot(true); - connect(&lunchInitFunction,&QTimer::timeout,this,&CopyEngineFactory::init,Qt::QueuedConnection); - lunchInitFunction.start(); -} - -CopyEngineFactory::~CopyEngineFactory() -{ - delete renamingRules; - delete filters; - delete ui; -} - -void CopyEngineFactory::init() -{ -} - -PluginInterface_CopyEngine * CopyEngineFactory::getInstance() -{ - CopyEngine *realObject=new CopyEngine(facilityEngine); - #ifdef ULTRACOPIER_PLUGIN_DEBUG - connect(realObject,&CopyEngine::debugInformation,this,&CopyEngineFactory::debugInformation); - #endif - realObject->connectTheSignalsSlots(); - PluginInterface_CopyEngine * newTransferEngine=realObject; - connect(this,&CopyEngineFactory::reloadLanguage,realObject,&CopyEngine::newLanguageLoaded); - realObject->setRightTransfer(ui->doRightTransfer->isChecked()); - realObject->setKeepDate(ui->keepDate->isChecked()); - realObject->setBlockSize(ui->blockSize->value()); - realObject->setAutoStart(ui->autoStart->isChecked()); - #ifdef ULTRACOPIER_PLUGIN_RSYNC - realObject->setRsync(ui->rsync->isChecked()); - #endif - realObject->setFolderCollision(ui->comboBoxFolderCollision->currentIndex()); - realObject->setFolderError(ui->comboBoxFolderError->currentIndex()); - realObject->setFileCollision(ui->comboBoxFileCollision->currentIndex()); - realObject->setFileError(ui->comboBoxFileError->currentIndex()); - realObject->setTransferAlgorithm(ui->transferAlgorithm->currentIndex()); - realObject->setCheckDestinationFolderExists(ui->checkBoxDestinationFolderExists->isChecked()); - realObject->set_doChecksum(ui->doChecksum->isChecked()); - realObject->set_checksumIgnoreIfImpossible(ui->checksumIgnoreIfImpossible->isChecked()); - realObject->set_checksumOnlyOnError(ui->checksumOnlyOnError->isChecked()); - realObject->set_osBuffer(ui->osBuffer->isChecked()); - realObject->set_osBufferLimited(ui->osBufferLimited->isChecked()); - realObject->set_osBufferLimit(ui->osBufferLimit->value()); - realObject->set_setFilters(includeStrings,includeOptions,excludeStrings,excludeOptions); - realObject->setRenamingRules(firstRenamingRule,otherRenamingRule); - realObject->setSequentialBuffer(ui->sequentialBuffer->value()); - realObject->setParallelBuffer(ui->parallelBuffer->value()); - realObject->setParallelizeIfSmallerThan(ui->parallelizeIfSmallerThan->value()); - realObject->setMoveTheWholeFolder(ui->moveTheWholeFolder->isChecked()); - realObject->setFollowTheStrictOrder(ui->followTheStrictOrder->isChecked()); - realObject->setDeletePartiallyTransferredFiles(ui->deletePartiallyTransferredFiles->isChecked()); - realObject->setInodeThreads(ui->inodeThreads->value()); - realObject->setRenameTheOriginalDestination(ui->renameTheOriginalDestination->isChecked()); - realObject->setCheckDiskSpace(ui->checkDiskSpace->isChecked()); - realObject->setDefaultDestinationFolder(ui->defaultDestinationFolder->text().toStdString()); - realObject->setCopyListOrder(ui->copyListOrder->isChecked()); - return newTransferEngine; -} - -void CopyEngineFactory::setResources(OptionInterface * options,const std::string &writePath,const std::string &pluginPath, - FacilityInterface * facilityInterface,const bool &portableVersion) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start, writePath: "+writePath+", pluginPath:"+pluginPath); - this->facilityEngine=facilityInterface; - Q_UNUSED(portableVersion); - #ifndef ULTRACOPIER_PLUGIN_DEBUG - Q_UNUSED(writePath); - Q_UNUSED(pluginPath); - #endif - #if ! defined (Q_CC_GNU) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,QStringLiteral("Unable to change date time of files, only gcc is supported")); - #endif - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,COMPILERINFO); - #if defined (ULTRACOPIER_PLUGIN_CHECKLISTTYPE) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"CHECK LIST TYPE set"); - #else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"CHECK LIST TYPE not set"); - #endif - if(options!=NULL) - { - //load the options - std::vector<std::pair<std::string, std::string> > KeysList; - KeysList.push_back(std::pair<std::string, std::string>("doRightTransfer","true")); - #ifndef Q_OS_LINUX - KeysList.push_back(std::pair<std::string, std::string>("keepDate","false")); - #else - KeysList.push_back(std::pair<std::string, std::string>("keepDate","true")); - #endif - KeysList.push_back(std::pair<std::string, std::string>("blockSize",std::to_string(ULTRACOPIER_PLUGIN_DEFAULT_BLOCK_SIZE))); - uint32_t sequentialBuffer=ULTRACOPIER_PLUGIN_DEFAULT_BLOCK_SIZE*ULTRACOPIER_PLUGIN_DEFAULT_SEQUENTIAL_NUMBER_OF_BLOCK; - uint32_t parallelBuffer=ULTRACOPIER_PLUGIN_DEFAULT_BLOCK_SIZE*ULTRACOPIER_PLUGIN_DEFAULT_PARALLEL_NUMBER_OF_BLOCK; - //to prevent swap and other bad effect, only under windows and unix for now - #if defined(Q_OS_WIN32) or (defined(Q_OS_LINUX) and defined(_SC_PHYS_PAGES)) - size_t max_memory=getTotalSystemMemory()/1024; - if(max_memory>0) - { - if(max_memory>2147483648) - max_memory=2147483648; - if(sequentialBuffer>(max_memory/10)) - sequentialBuffer=max_memory/10; - if(parallelBuffer>(max_memory/100)) - parallelBuffer=max_memory/100; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,QStringLiteral("detected memory: %1MB").arg(max_memory/1024).toStdString()); - #endif - KeysList.push_back(std::pair<std::string, std::string>("sequentialBuffer",std::to_string(sequentialBuffer))); - KeysList.push_back(std::pair<std::string, std::string>("parallelBuffer",std::to_string(parallelBuffer))); - KeysList.push_back(std::pair<std::string, std::string>("parallelizeIfSmallerThan",std::to_string(128)));//128KB, better for modern hardware: Multiple queue en linux, SSD, ... - KeysList.push_back(std::pair<std::string, std::string>("autoStart","true")); - #ifdef ULTRACOPIER_PLUGIN_RSYNC - KeysList.push_back(std::pair<std::string, std::string>("rsync","true")); - #endif - KeysList.push_back(std::pair<std::string, std::string>("folderError",std::to_string(0))); - KeysList.push_back(std::pair<std::string, std::string>("folderCollision",std::to_string(0))); - KeysList.push_back(std::pair<std::string, std::string>("fileError",std::to_string(2))); - KeysList.push_back(std::pair<std::string, std::string>("fileCollision",std::to_string(0))); - KeysList.push_back(std::pair<std::string, std::string>("transferAlgorithm",std::to_string(0))); - KeysList.push_back(std::pair<std::string, std::string>("checkDestinationFolder","true")); - KeysList.push_back(std::pair<std::string, std::string>("includeStrings","")); - KeysList.push_back(std::pair<std::string, std::string>("includeOptions","")); - KeysList.push_back(std::pair<std::string, std::string>("excludeStrings","")); - KeysList.push_back(std::pair<std::string, std::string>("excludeOptions","")); - KeysList.push_back(std::pair<std::string, std::string>("doChecksum","false")); - KeysList.push_back(std::pair<std::string, std::string>("checksumIgnoreIfImpossible","true")); - KeysList.push_back(std::pair<std::string, std::string>("checksumOnlyOnError","true")); - KeysList.push_back(std::pair<std::string, std::string>("osBuffer","false")); - KeysList.push_back(std::pair<std::string, std::string>("firstRenamingRule","")); - KeysList.push_back(std::pair<std::string, std::string>("otherRenamingRule","")); - KeysList.push_back(std::pair<std::string, std::string>("osBufferLimited","false")); - KeysList.push_back(std::pair<std::string, std::string>("osBufferLimit",std::to_string(512))); - KeysList.push_back(std::pair<std::string, std::string>("deletePartiallyTransferredFiles","true")); - KeysList.push_back(std::pair<std::string, std::string>("moveTheWholeFolder","true")); - KeysList.push_back(std::pair<std::string, std::string>("followTheStrictOrder","false")); - KeysList.push_back(std::pair<std::string, std::string>("renameTheOriginalDestination","false")); - KeysList.push_back(std::pair<std::string, std::string>("checkDiskSpace","true")); - KeysList.push_back(std::pair<std::string, std::string>("defaultDestinationFolder","")); - KeysList.push_back(std::pair<std::string, std::string>("inodeThreads",std::to_string(1))); - KeysList.push_back(std::pair<std::string, std::string>("copyListOrder","false")); - options->addOptionGroup(KeysList); - - optionsEngine=options; - resetOptions(); - - updateBufferCheckbox(); - - updatedBlockSize(); - } -} - -std::vector<std::string> CopyEngineFactory::supportedProtocolsForTheSource() const -{ - std::vector<std::string> l; - l.push_back("file"); - return l; -} - -std::vector<std::string> CopyEngineFactory::supportedProtocolsForTheDestination() const -{ - std::vector<std::string> l; - l.push_back("file"); - return l; -} - -Ultracopier::CopyType CopyEngineFactory::getCopyType() -{ - return Ultracopier::FileAndFolder; -} - -Ultracopier::TransferListOperation CopyEngineFactory::getTransferListOperation() -{ - return Ultracopier::TransferListOperation_ImportExport; -} - -bool CopyEngineFactory::canDoOnlyCopy() const -{ - return false; -} - -void CopyEngineFactory::resetOptions() -{ - auto options=optionsEngine; - optionsEngine=NULL; - #if ! defined (Q_CC_GNU) - ui->keepDate->setEnabled(false); - ui->keepDate->setToolTip(QStringLiteral("Not supported with this compiler")); - #endif - ui->doRightTransfer->setChecked(stringtobool(options->getOptionValue("doRightTransfer"))); - ui->keepDate->setChecked(stringtobool(options->getOptionValue("keepDate"))); - ui->blockSize->setValue(stringtouint32(options->getOptionValue("blockSize")));//keep before sequentialBuffer and parallelBuffer - ui->autoStart->setChecked(stringtobool(options->getOptionValue("autoStart"))); - #ifdef ULTRACOPIER_PLUGIN_RSYNC - ui->rsync->setChecked(stringtobool(options->getOptionValue("rsync"))); - #else - ui->label_rsync->setVisible(false); - ui->rsync->setVisible(false); - #endif - ui->comboBoxFolderError->setCurrentIndex(stringtouint32(options->getOptionValue("folderError"))); - ui->comboBoxFolderCollision->setCurrentIndex(stringtouint32(options->getOptionValue("folderCollision"))); - ui->comboBoxFileError->setCurrentIndex(stringtouint32(options->getOptionValue("fileError"))); - ui->comboBoxFileCollision->setCurrentIndex(stringtouint32(options->getOptionValue("fileCollision"))); - ui->transferAlgorithm->setCurrentIndex(stringtouint32(options->getOptionValue("transferAlgorithm"))); - ui->checkBoxDestinationFolderExists->setChecked(stringtobool(options->getOptionValue("checkDestinationFolder"))); - ui->parallelizeIfSmallerThan->setValue(stringtouint32(options->getOptionValue("parallelizeIfSmallerThan"))); - ui->sequentialBuffer->setValue(stringtouint32(options->getOptionValue("sequentialBuffer"))); - ui->parallelBuffer->setValue(stringtouint32(options->getOptionValue("parallelBuffer"))); - ui->sequentialBuffer->setSingleStep(ui->blockSize->value()); - ui->parallelBuffer->setSingleStep(ui->blockSize->value()); - ui->deletePartiallyTransferredFiles->setChecked(stringtobool(options->getOptionValue("deletePartiallyTransferredFiles"))); - ui->moveTheWholeFolder->setChecked(stringtobool(options->getOptionValue("moveTheWholeFolder"))); - ui->followTheStrictOrder->setChecked(stringtobool(options->getOptionValue("followTheStrictOrder"))); - ui->inodeThreads->setValue(stringtouint32(options->getOptionValue("inodeThreads"))); - ui->renameTheOriginalDestination->setChecked(stringtobool(options->getOptionValue("renameTheOriginalDestination"))); - ui->checkDiskSpace->setChecked(stringtobool(options->getOptionValue("checkDiskSpace"))); - ui->defaultDestinationFolder->setText(QString::fromStdString(options->getOptionValue("defaultDestinationFolder"))); - - ui->doChecksum->setChecked(stringtobool(options->getOptionValue("doChecksum"))); - ui->checksumIgnoreIfImpossible->setChecked(stringtobool(options->getOptionValue("checksumIgnoreIfImpossible"))); - ui->checksumOnlyOnError->setChecked(stringtobool(options->getOptionValue("checksumOnlyOnError"))); - - ui->osBuffer->setChecked(stringtobool(options->getOptionValue("osBuffer"))); - ui->osBufferLimited->setChecked(stringtobool(options->getOptionValue("osBufferLimited"))); - ui->osBufferLimit->setValue(stringtouint32(options->getOptionValue("osBufferLimit"))); - //ui->autoStart->setChecked(options->getOptionValue("autoStart").toBool());//moved from options(), wrong previous place - includeStrings=stringtostringlist(options->getOptionValue("includeStrings")); - includeOptions=stringtostringlist(options->getOptionValue("includeOptions")); - excludeStrings=stringtostringlist(options->getOptionValue("excludeStrings")); - excludeOptions=stringtostringlist(options->getOptionValue("excludeOptions")); - filters->setFilters(includeStrings,includeOptions,excludeStrings,excludeOptions); - firstRenamingRule=options->getOptionValue("firstRenamingRule"); - otherRenamingRule=options->getOptionValue("otherRenamingRule"); - renamingRules->setRenamingRules(firstRenamingRule,otherRenamingRule); - - ui->checksumOnlyOnError->setEnabled(ui->doChecksum->isChecked()); - ui->checksumIgnoreIfImpossible->setEnabled(ui->doChecksum->isChecked()); - ui->copyListOrder->setChecked(stringtobool(options->getOptionValue("copyListOrder"))); - - optionsEngine=options; -} - -QWidget * CopyEngineFactory::options() -{ - return tempWidget; -} - -void CopyEngineFactory::setDoRightTransfer(bool doRightTransfer) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed"); - if(optionsEngine!=NULL) - optionsEngine->setOptionValue("doRightTransfer",booltostring(doRightTransfer)); -} - -void CopyEngineFactory::setKeepDate(bool keepDate) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed"); - if(optionsEngine!=NULL) - optionsEngine->setOptionValue("keepDate",booltostring(keepDate)); -} - -void CopyEngineFactory::setBlockSize(int blockSize) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed"); - if(optionsEngine!=NULL) - optionsEngine->setOptionValue("blockSize",std::to_string(blockSize)); - updatedBlockSize(); -} - -void CopyEngineFactory::setParallelBuffer(int parallelBuffer) -{ - if(optionsEngine!=NULL) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed"); - parallelBuffer=round((float)parallelBuffer/(float)ui->blockSize->value())*ui->blockSize->value(); - ui->parallelBuffer->setValue(parallelBuffer); - optionsEngine->setOptionValue("parallelBuffer",std::to_string(parallelBuffer)); - } -} - -void CopyEngineFactory::setSequentialBuffer(int sequentialBuffer) -{ - if(optionsEngine!=NULL) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed"); - sequentialBuffer=round((float)sequentialBuffer/(float)ui->blockSize->value())*ui->blockSize->value(); - ui->sequentialBuffer->setValue(sequentialBuffer); - optionsEngine->setOptionValue("sequentialBuffer",std::to_string(sequentialBuffer)); - } -} - -void CopyEngineFactory::setParallelizeIfSmallerThan(int parallelizeIfSmallerThan) -{ - if(optionsEngine!=NULL) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed"); - optionsEngine->setOptionValue("parallelizeIfSmallerThan",std::to_string(parallelizeIfSmallerThan)); - } -} - -void CopyEngineFactory::setAutoStart(bool autoStart) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed"); - if(optionsEngine!=NULL) - optionsEngine->setOptionValue("autoStart",booltostring(autoStart)); -} - -void CopyEngineFactory::setFolderCollision(int index) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed"); - if(optionsEngine!=NULL) - optionsEngine->setOptionValue("folderCollision",std::to_string(index)); -} - -void CopyEngineFactory::setFolderError(int index) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed"); - if(optionsEngine!=NULL) - optionsEngine->setOptionValue("folderError",std::to_string(index)); -} - -void CopyEngineFactory::setTransferAlgorithm(int index) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed"); - if(optionsEngine!=NULL) - optionsEngine->setOptionValue("transferAlgorithm",std::to_string(index)); -} - -void CopyEngineFactory::setCheckDestinationFolder() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed"); - if(optionsEngine!=NULL) - optionsEngine->setOptionValue("checkDestinationFolder",booltostring(ui->checkBoxDestinationFolderExists->isChecked())); -} - -void CopyEngineFactory::newLanguageLoaded() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start, retranslate the widget options"); - OptionInterface * optionsEngine=this->optionsEngine; - this->optionsEngine=NULL; - ui->retranslateUi(tempWidget); - ui->comboBoxFolderError->setItemText(0,tr("Ask")); - ui->comboBoxFolderError->setItemText(1,tr("Skip")); - - ui->comboBoxFolderCollision->setItemText(0,tr("Ask")); - ui->comboBoxFolderCollision->setItemText(1,tr("Merge")); - ui->comboBoxFolderCollision->setItemText(2,tr("Skip")); - ui->comboBoxFolderCollision->setItemText(3,tr("Rename")); - - ui->comboBoxFileError->setItemText(0,tr("Ask")); - ui->comboBoxFileError->setItemText(1,tr("Skip")); - ui->comboBoxFileError->setItemText(2,tr("Put at the end")); - - ui->comboBoxFileCollision->setItemText(0,tr("Ask")); - ui->comboBoxFileCollision->setItemText(1,tr("Skip")); - ui->comboBoxFileCollision->setItemText(2,tr("Overwrite")); - ui->comboBoxFileCollision->setItemText(3,tr("Overwrite if different")); - ui->comboBoxFileCollision->setItemText(4,tr("Overwrite if newer")); - ui->comboBoxFileCollision->setItemText(5,tr("Overwrite if older")); - ui->comboBoxFileCollision->setItemText(6,tr("Rename")); - - ui->transferAlgorithm->setItemText(0,tr("Automatic")); - ui->transferAlgorithm->setItemText(1,tr("Sequential")); - ui->transferAlgorithm->setItemText(2,tr("Parallel")); - if(optionsEngine!=NULL) - { - filters->newLanguageLoaded(); - renamingRules->newLanguageLoaded(); - } - emit reloadLanguage(); - this->optionsEngine=optionsEngine; -} - -void CopyEngineFactory::doChecksum_toggled(bool doChecksum) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed"); - if(optionsEngine!=NULL) - optionsEngine->setOptionValue("doChecksum",booltostring(doChecksum)); -} - -void CopyEngineFactory::checksumOnlyOnError_toggled(bool checksumOnlyOnError) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed"); - if(optionsEngine!=NULL) - optionsEngine->setOptionValue("checksumOnlyOnError",booltostring(checksumOnlyOnError)); -} - -void CopyEngineFactory::osBuffer_toggled(bool osBuffer) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed"); - if(optionsEngine!=NULL) - optionsEngine->setOptionValue("osBuffer",booltostring(osBuffer)); - ui->osBufferLimit->setEnabled(ui->osBuffer->isChecked() && ui->osBufferLimited->isChecked()); -} - -void CopyEngineFactory::osBufferLimited_toggled(bool osBufferLimited) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed"); - if(optionsEngine!=NULL) - optionsEngine->setOptionValue("osBufferLimited",booltostring(osBufferLimited)); - ui->osBufferLimit->setEnabled(ui->osBuffer->isChecked() && ui->osBufferLimited->isChecked()); -} - -void CopyEngineFactory::osBufferLimit_editingFinished() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the spinbox have changed"); - if(optionsEngine!=NULL) - optionsEngine->setOptionValue("osBufferLimit",std::to_string(ui->osBufferLimit->value())); -} - -void CopyEngineFactory::showFilterDialog() -{ - if(optionsEngine==NULL) - { - QMessageBox::critical(NULL,tr("Options error"),tr("Options engine is not loaded. Unable to access the filters")); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"options not loaded"); - return; - } - filters->exec(); -} - -void CopyEngineFactory::sendNewFilters(const std::vector<std::string> &includeStrings,const std::vector<std::string> &includeOptions,const std::vector<std::string> &excludeStrings,const std::vector<std::string> &excludeOptions) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"new filter"); - this->includeStrings=includeStrings; - this->includeOptions=includeOptions; - this->excludeStrings=excludeStrings; - this->excludeOptions=excludeOptions; - if(optionsEngine!=NULL) - { - optionsEngine->setOptionValue("includeStrings",stringlisttostring(includeStrings)); - optionsEngine->setOptionValue("includeOptions",stringlisttostring(includeOptions)); - optionsEngine->setOptionValue("excludeStrings",stringlisttostring(excludeStrings)); - optionsEngine->setOptionValue("excludeOptions",stringlisttostring(excludeOptions)); - } -} - -void CopyEngineFactory::sendNewRenamingRules(const std::string &firstRenamingRule,const std::string &otherRenamingRule) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"new filter"); - this->firstRenamingRule=firstRenamingRule; - this->otherRenamingRule=otherRenamingRule; - if(optionsEngine!=NULL) - { - optionsEngine->setOptionValue("firstRenamingRule",firstRenamingRule); - optionsEngine->setOptionValue("otherRenamingRule",otherRenamingRule); - } -} - -void CopyEngineFactory::showRenamingRules() -{ - if(optionsEngine==NULL) - { - QMessageBox::critical(NULL,tr("Options error"),tr("Options engine is not loaded, can't access to the filters")); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"options not loaded"); - return; - } - renamingRules->exec(); -} - -void CopyEngineFactory::updateBufferCheckbox() -{ - ui->osBufferLimited->setEnabled(ui->osBuffer->isChecked()); - ui->osBufferLimit->setEnabled(ui->osBuffer->isChecked() && ui->osBufferLimited->isChecked()); -} - -void CopyEngineFactory::checksumIgnoreIfImpossible_toggled(bool checksumIgnoreIfImpossible) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed"); - if(optionsEngine!=NULL) - optionsEngine->setOptionValue("checksumIgnoreIfImpossible",booltostring(checksumIgnoreIfImpossible)); -} - -void CopyEngineFactory::setFileCollision(int index) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"action index: "+std::to_string(index)); - if(optionsEngine==NULL) - return; - switch(index) - { - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - optionsEngine->setOptionValue("fileCollision",std::to_string(index)); - break; - default: - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Error, unknow index, ignored"); - break; - } -} - -void CopyEngineFactory::setFileError(int index) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"action index: "+std::to_string(index)); - if(optionsEngine==NULL) - return; - switch(index) - { - case 0: - case 1: - case 2: - optionsEngine->setOptionValue("fileError",std::to_string(index)); - break; - default: - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Error, unknow index, ignored"); - break; - } -} - -void CopyEngineFactory::updatedBlockSize() -{ - ui->sequentialBuffer->setMinimum(ui->blockSize->value()); - ui->sequentialBuffer->setSingleStep(ui->blockSize->value()); - ui->sequentialBuffer->setMaximum(ui->blockSize->value()*ULTRACOPIER_PLUGIN_MAX_SEQUENTIAL_NUMBER_OF_BLOCK); - ui->parallelBuffer->setMinimum(ui->blockSize->value()); - ui->parallelBuffer->setSingleStep(ui->blockSize->value()); - ui->parallelBuffer->setMaximum(ui->blockSize->value()*ULTRACOPIER_PLUGIN_MAX_PARALLEL_NUMBER_OF_BLOCK); - setParallelBuffer(ui->parallelBuffer->value()); - setSequentialBuffer(ui->sequentialBuffer->value()); -} - -void CopyEngineFactory::deletePartiallyTransferredFiles(bool checked) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed"); - if(optionsEngine!=NULL) - optionsEngine->setOptionValue("deletePartiallyTransferredFiles",booltostring(checked)); -} - -void CopyEngineFactory::renameTheOriginalDestination(bool checked) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed"); - if(optionsEngine!=NULL) - optionsEngine->setOptionValue("renameTheOriginalDestination",booltostring(checked)); -} - -void CopyEngineFactory::checkDiskSpace(bool checked) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed"); - if(optionsEngine!=NULL) - optionsEngine->setOptionValue("checkDiskSpace",booltostring(checked)); -} - -void CopyEngineFactory::defaultDestinationFolderBrowse() -{ - QString destination = QFileDialog::getExistingDirectory(ui->defaultDestinationFolder, - QString::fromStdString(facilityEngine->translateText("Select destination directory")), - "",QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks); - if(destination.isEmpty()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"Canceled by the user"); - return; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed"); - ui->defaultDestinationFolder->setText(destination); - if(optionsEngine!=NULL) - optionsEngine->setOptionValue("defaultDestinationFolder",destination.toStdString()); -} - -void CopyEngineFactory::defaultDestinationFolder() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed"); - if(optionsEngine!=NULL) - optionsEngine->setOptionValue("defaultDestinationFolder",ui->defaultDestinationFolder->text().toStdString()); -} - -void CopyEngineFactory::followTheStrictOrder(bool checked) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed"); - if(optionsEngine!=NULL) - optionsEngine->setOptionValue("followTheStrictOrder",booltostring(checked)); -} - -void CopyEngineFactory::moveTheWholeFolder(bool checked) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed"); - if(optionsEngine!=NULL) - optionsEngine->setOptionValue("moveTheWholeFolder",booltostring(checked)); -} - -void CopyEngineFactory::on_inodeThreads_editingFinished() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the spinbox have changed"); - if(optionsEngine!=NULL) - optionsEngine->setOptionValue("inodeThreads",std::to_string(ui->inodeThreads->value())); -} - -#ifdef Q_OS_WIN32 -size_t CopyEngineFactory::getTotalSystemMemory() -{ - MEMORYSTATUSEX status; - status.dwLength = sizeof(status); - GlobalMemoryStatusEx(&status); - return status.ullTotalPhys; -} -#endif - -#ifdef Q_OS_LINUX -size_t CopyEngineFactory::getTotalSystemMemory() -{ - long pages = sysconf(_SC_PHYS_PAGES); - long page_size = sysconf(_SC_PAGE_SIZE); - return pages * page_size; -} -#endif - -#ifdef ULTRACOPIER_PLUGIN_RSYNC -void CopyEngineFactory::setRsync(bool rsync) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed"); - if(optionsEngine!=NULL) - optionsEngine->setOptionValue("rsync",std::to_string(rsync)); -} -#endif - -void CopyEngineFactory::copyListOrder(bool checked) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed"); - if(optionsEngine!=NULL) - optionsEngine->setOptionValue("copyListOrder",booltostring(checked)); -} diff --git a/plugins/CopyEngine/Ultracopier/CopyEngineFactory.h b/plugins/CopyEngine/Ultracopier/CopyEngineFactory.h deleted file mode 100644 index 59c4208..0000000 --- a/plugins/CopyEngine/Ultracopier/CopyEngineFactory.h +++ /dev/null @@ -1,133 +0,0 @@ -/** \file factory.h -\brief Define the factory to create new instance -\author alpha_one_x86 -\licence GPL3, see the file COPYING */ - -#include "StructEnumDefinition_CopyEngine.h" - -#include <QObject> -#include <QList> -#include <QStringList> -#include <QFileInfo> -#include <QProcess> -#include <QTimer> - -#include "../../../interface/PluginInterface_CopyEngine.h" -#include "qstorageinfo.h" -#include "StructEnumDefinition.h" -#include "ui_copyEngineOptions.h" -#include "CopyEngine.h" -#include "Environment.h" -#include "Filters.h" -#include "RenamingRules.h" - -#ifdef Q_OS_WIN32 - #ifndef NOMINMAX - #define NOMINMAX - #endif - #include <windows.h> -#endif -#ifdef Q_OS_LINUX - #include <unistd.h> -#endif - -#ifndef FACTORY_H -#define FACTORY_H - -namespace Ui { - class copyEngineOptions; -} - -/** \brief to generate copy engine instance */ -class CopyEngineFactory : public PluginInterface_CopyEngineFactory -{ - Q_OBJECT - #ifndef ULTRACOPIER_PLUGIN_ALL_IN_ONE_DIRECT - Q_PLUGIN_METADATA(IID "first-world.info.ultracopier.PluginInterface.CopyEngineFactory/1.0.0.0" FILE "plugin.json") - Q_INTERFACES(PluginInterface_CopyEngineFactory) - #endif -public: - CopyEngineFactory(); - ~CopyEngineFactory(); - /// \brief to return the instance of the copy engine - PluginInterface_CopyEngine * getInstance(); - /// \brief set the resources, to store options, to have facilityInterface - void setResources(OptionInterface * options,const std::string &writePath,const std::string &pluginPath,FacilityInterface * facilityInterface,const bool &portableVersion); - //get mode allowed - /// \brief define if can copy file, folder or both - Ultracopier::CopyType getCopyType(); - /// \brief to return which kind of transfer list operation is supported - Ultracopier::TransferListOperation getTransferListOperation(); - /// \brief define if can only copy, or copy and move - bool canDoOnlyCopy() const; - /// \brief to get the supported protocols for the source - std::vector<std::string> supportedProtocolsForTheSource() const; - /// \brief to get the supported protocols for the destination - std::vector<std::string> supportedProtocolsForTheDestination() const; - /// \brief to get the options of the copy engine - QWidget * options(); - -private: - Ui::copyEngineOptions *ui; - QWidget* tempWidget; - OptionInterface * optionsEngine; - bool errorFound; - FacilityInterface * facilityEngine; - Filters *filters; - RenamingRules *renamingRules; - QStorageInfo storageInfo; - QTimer lunchInitFunction; - std::vector<std::string> includeStrings,includeOptions,excludeStrings,excludeOptions; - std::string firstRenamingRule,otherRenamingRule; - -#if defined(Q_OS_WIN32) || (defined(Q_OS_LINUX) && defined(_SC_PHYS_PAGES)) - static size_t getTotalSystemMemory(); -#endif -private slots: - void init(); - void setDoRightTransfer(bool doRightTransfer); - void setKeepDate(bool keepDate); - void setBlockSize(int blockSize); - void setParallelBuffer(int parallelBuffer); - void setSequentialBuffer(int sequentialBuffer); - void setParallelizeIfSmallerThan(int parallelizeIfSmallerThan); - void setAutoStart(bool autoStart); - #ifdef ULTRACOPIER_PLUGIN_RSYNC - void setRsync(bool rsync); - #endif - void setFolderCollision(int index); - void setFolderError(int index); - void setTransferAlgorithm(int index); - void setCheckDestinationFolder(); - void showFilterDialog(); - void sendNewFilters(const std::vector<std::string> &includeStrings,const std::vector<std::string> &includeOptions, - const std::vector<std::string> &excludeStrings,const std::vector<std::string> &excludeOptions); - void doChecksum_toggled(bool); - void checksumOnlyOnError_toggled(bool); - void osBuffer_toggled(bool); - void osBufferLimited_toggled(bool); - void osBufferLimit_editingFinished(); - void checksumIgnoreIfImpossible_toggled(bool); - void sendNewRenamingRules(const std::string &firstRenamingRule, const std::string &otherRenamingRule); - void showRenamingRules(); - void updateBufferCheckbox(); - void setFileCollision(int index); - void setFileError(int index); - void updatedBlockSize(); - void deletePartiallyTransferredFiles(bool checked); - void renameTheOriginalDestination(bool checked); - void checkDiskSpace(bool checked); - void defaultDestinationFolderBrowse(); - void defaultDestinationFolder(); - void followTheStrictOrder(bool checked); - void moveTheWholeFolder(bool checked); - void on_inodeThreads_editingFinished(); - void copyListOrder(bool checked); -public slots: - void resetOptions(); - void newLanguageLoaded(); -signals: - void reloadLanguage() const; -}; - -#endif // FACTORY_H diff --git a/plugins/CopyEngine/Ultracopier/DebugDialog.cpp b/plugins/CopyEngine/Ultracopier/DebugDialog.cpp deleted file mode 100644 index 0b3fec4..0000000 --- a/plugins/CopyEngine/Ultracopier/DebugDialog.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/** \file debugDialog.cpp -\brief Define the dialog to have debug information -\author alpha_one_x86 */ - -#include "DebugDialog.h" -#include "ui_debugDialog.h" - -#ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW - -DebugDialog::DebugDialog(QWidget *parent) : - QWidget(parent), - ui(new Ui::debugDialog) -{ - ui->setupUi(this); -} - -DebugDialog::~DebugDialog() -{ - delete ui; -} - -void DebugDialog::setTransferList(const std::vector<std::string> &list) -{ - ui->tranferList->clear(); - unsigned int index=0; - while(index<list.size()) - { - ui->tranferList->addItem(QString::fromStdString(list.at(index))); - index++; - } -} - -void DebugDialog::setActiveTransfer(const int &activeTransfer) -{ - ui->spinBoxActiveTransfer->setValue(activeTransfer); -} - -void DebugDialog::setInodeUsage(const int &inodeUsage) -{ - ui->spinBoxNumberOfInode->setValue(inodeUsage); -} - -void DebugDialog::setTransferThreadList(const std::vector<std::string> &list) -{ - ui->transferThreadList->clear(); - unsigned int index=0; - while(index<list.size()) - { - ui->transferThreadList->addItem(QString::fromStdString(list.at(index))); - index++; - } -} - -#endif diff --git a/plugins/CopyEngine/Ultracopier/DebugDialog.h b/plugins/CopyEngine/Ultracopier/DebugDialog.h deleted file mode 100644 index c84cfaa..0000000 --- a/plugins/CopyEngine/Ultracopier/DebugDialog.h +++ /dev/null @@ -1,39 +0,0 @@ -/** \file debugDialog.h -\brief Define the dialog to have debug information -\author alpha_one_x86 -\licence GPL3, see the file COPYING */ - -#ifndef DEBUGDAILOG_H -#define DEBUGDAILOG_H - -#include "Environment.h" - -#ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW -#include <QWidget> - -namespace Ui { - class debugDialog; -} - -/// \brief class to the dialog to have debug information -class DebugDialog : public QWidget -{ - Q_OBJECT -public: - explicit DebugDialog(QWidget *parent = 0); - ~DebugDialog(); - /// \brief to set the transfer list, limited in result to not slow down the application - void setTransferList(const std::vector<std::string> &list); - /// \brief show the transfer thread, it show be a thread pool in normal time - void setTransferThreadList(const std::vector<std::string> &list); - /// \brief show how many transfer is active - void setActiveTransfer(const int &activeTransfer); - /// \brief show many many inode is manipulated - void setInodeUsage(const int &inodeUsage); -private: - Ui::debugDialog *ui; -}; - -#endif // ULTRACOPIER_PLUGIN_DEBUG_WINDOW - -#endif // DEBUGDAILOG_H diff --git a/plugins/CopyEngine/Ultracopier/DebugEngineMacro.h b/plugins/CopyEngine/Ultracopier/DebugEngineMacro.h deleted file mode 100644 index f9b5349..0000000 --- a/plugins/CopyEngine/Ultracopier/DebugEngineMacro.h +++ /dev/null @@ -1,28 +0,0 @@ -/** \file DebugEngineMacro.h -\brief Define the macro for the debug -\author alpha_one_x86 -\licence GPL3, see the file COPYING */ - -#ifndef DEBUGENGINEMACRO_H -#define DEBUGENGINEMACRO_H - -#ifdef WIN32 -# define __func__ __FUNCTION__ -#endif - -/// \brief Macro for the debug log -#ifdef ULTRACOPIER_PLUGIN_DEBUG - #if defined (__FILE__) && defined (__LINE__) - #define ULTRACOPIER_DEBUGCONSOLE(a,b) emit debugInformation(a,__func__,b,__FILE__,__LINE__) - #else - #define ULTRACOPIER_DEBUGCONSOLE(a,b) emit debugInformation(a,__func__,b) - #endif -#else // ULTRACOPIER_PLUGIN_DEBUG - #define ULTRACOPIER_DEBUGCONSOLE(a,b) void() -#endif // ULTRACOPIER_PLUGIN_DEBUG - -#endif // DEBUGENGINEMACRO_H - - - - diff --git a/plugins/CopyEngine/Ultracopier/DiskSpace.cpp b/plugins/CopyEngine/Ultracopier/DiskSpace.cpp deleted file mode 100644 index e9b996d..0000000 --- a/plugins/CopyEngine/Ultracopier/DiskSpace.cpp +++ /dev/null @@ -1,53 +0,0 @@ -#include "DiskSpace.h" -#include "ui_DiskSpace.h" -#include "StructEnumDefinition_CopyEngine.h" - -DiskSpace::DiskSpace(FacilityInterface * facilityEngine,std::vector<Diskspace> list,QWidget *parent) : - QDialog(parent), - ui(new Ui::DiskSpace) -{ - Qt::WindowFlags flags = windowFlags(); - #ifdef Q_OS_LINUX - flags=flags & ~Qt::X11BypassWindowManagerHint; - #endif - flags=flags | Qt::WindowStaysOnTopHint; - setWindowFlags(flags); - - ui->setupUi(this); - ok=false; - int index=0; - int size=list.size(); - QString drives; - while(index<size) - { - drives+=tr("Drives %1 have %2 available but need %3") - .arg(QString::fromStdString(list.at(index).drive)) - .arg(QString::fromStdString(facilityEngine->sizeToString(list.at(index).freeSpace))) - .arg(QString::fromStdString(facilityEngine->sizeToString(list.at(index).requiredSpace))); - drives+=QStringLiteral("<br />"); - index++; - } - ui->drives->setText(drives); -} - -DiskSpace::~DiskSpace() -{ - delete ui; -} - -void DiskSpace::on_ok_clicked() -{ - ok=true; - close(); -} - -void DiskSpace::on_cancel_clicked() -{ - ok=false; - close(); -} - -bool DiskSpace::getAction() const -{ - return ok; -} diff --git a/plugins/CopyEngine/Ultracopier/DiskSpace.h b/plugins/CopyEngine/Ultracopier/DiskSpace.h deleted file mode 100644 index 5a923ab..0000000 --- a/plugins/CopyEngine/Ultracopier/DiskSpace.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef DISKSPACE_H -#define DISKSPACE_H - -#include <QDialog> -#include <vector> -#include "../../../interface/PluginInterface_CopyEngine.h" -#include "StructEnumDefinition_CopyEngine.h" - -namespace Ui { -class DiskSpace; -} - -class DiskSpace : public QDialog -{ - Q_OBJECT - -public: - explicit DiskSpace(FacilityInterface * facilityEngine,std::vector<Diskspace> list,QWidget *parent = 0); - ~DiskSpace(); - bool getAction() const; -private slots: - void on_ok_clicked(); - void on_cancel_clicked(); -private: - Ui::DiskSpace *ui; - bool ok; -}; - -#endif // DISKSPACE_H diff --git a/plugins/CopyEngine/Ultracopier/DiskSpace.ui b/plugins/CopyEngine/Ultracopier/DiskSpace.ui deleted file mode 100644 index 10b5c69..0000000 --- a/plugins/CopyEngine/Ultracopier/DiskSpace.ui +++ /dev/null @@ -1,68 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>DiskSpace</class> - <widget class="QDialog" name="DiskSpace"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>367</width> - <height>146</height> - </rect> - </property> - <property name="windowTitle"> - <string>Disk space</string> - </property> - <property name="windowIcon"> - <iconset resource="copyEngineResources.qrc"> - <normaloff>:/CopyEngine/Ultracopier/resources/remove.png</normaloff>:/CopyEngine/Ultracopier/resources/remove.png</iconset> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <widget class="QLabel" name="label"> - <property name="text"> - <string>You need more space on this drive to finish this transfer</string> - </property> - </widget> - </item> - <item> - <widget class="QTextBrowser" name="drives"/> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <spacer name="horizontalSpacer"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QPushButton" name="ok"> - <property name="text"> - <string>Continue</string> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="cancel"> - <property name="text"> - <string>Cancel</string> - </property> - </widget> - </item> - </layout> - </item> - </layout> - </widget> - <resources> - <include location="copyEngineResources.qrc"/> - </resources> - <connections/> -</ui> diff --git a/plugins/CopyEngine/Ultracopier/DriveManagement.cpp b/plugins/CopyEngine/Ultracopier/DriveManagement.cpp deleted file mode 100644 index 27fc9cb..0000000 --- a/plugins/CopyEngine/Ultracopier/DriveManagement.cpp +++ /dev/null @@ -1,105 +0,0 @@ -#include "DriveManagement.h" - -#include <QDir> -#include <QFileInfoList> -#include <QStorageInfo> - -#include "../../../cpp11addition.h" - -DriveManagement::DriveManagement() -{ - tryUpdate(); - #ifdef Q_OS_WIN32 - reg1=std::regex("^(\\\\\\\\|//)[^\\\\\\\\/]+(\\\\|/)[^\\\\\\\\/]+.*"); - reg2=std::regex("^((\\\\\\\\|//)[^\\\\\\\\/]+(\\\\|/)[^\\\\\\\\/]+).*$"); - reg3=std::regex("^[a-zA-Z]:[\\\\/].*"); - reg4=std::regex("^([a-zA-Z]:[\\\\/]).*$"); - #endif - /// \warn ULTRACOPIER_DEBUGCONSOLE() don't work here because the sinal slot is not connected! -} - -//get drive of an file or folder -/// \todo do network drive support for windows -std::string DriveManagement::getDrive(const std::string &fileOrFolder) const -{ - const std::string &inode=QDir::toNativeSeparators(QString::fromStdString(fileOrFolder)).toStdString(); - int size=mountSysPoint.size(); - for (int i = 0; i < size; ++i) { - if(stringStartWith(inode,mountSysPoint.at(i))) - return QDir::toNativeSeparators(QString::fromStdString(mountSysPoint.at(i))).toStdString(); - } - #ifdef Q_OS_WIN32 - if(std::regex_match(fileOrFolder,reg1)) - { - std::string returnString=fileOrFolder; - std::regex_replace(returnString,reg2,"$1"); - return returnString; - } - //due to lack of WMI support into mingw, the new drive event is never called, this is a workaround - if(std::regex_match(fileOrFolder,reg3)) - { - std::string returnString=fileOrFolder; - std::regex_replace(returnString,reg4,"$1"); - return QDir::toNativeSeparators(QString::fromStdString(returnString)).toUpper().toStdString(); - } - #endif - //if unable to locate the right mount point - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"unable to locate the right mount point for: "+inode+", mount point: "+stringimplode(mountSysPoint,";")); - return std::string(); -} - -QByteArray DriveManagement::getDriveType(const std::string &drive) const -{ - int index=vectorindexOf(mountSysPoint,drive); - if(index!=-1) - return driveType.at(index); - return QByteArray(); -} - -bool DriveManagement::isSameDrive(const std::string &file1,const std::string &file2) const -{ - if(mountSysPoint.size()==0) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"no mount point found"); - return false; - } - const std::string &drive1=getDrive(file1); - if(drive1.empty()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"drive for the file1 not found: "+file1); - return false; - } - const std::string &drive2=getDrive(file2); - if(drive2.empty()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"drive for the file2 not found: "+file2); - return false; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,drive1+" is egal to "+drive2); - if(drive1==drive2) - return true; - else - return false; -} - -void DriveManagement::tryUpdate() -{ - mountSysPoint.clear(); - driveType.clear(); - const QList<QStorageInfo> mountedVolumesList=QStorageInfo::mountedVolumes(); - int index=0; - while(index<mountedVolumesList.size()) - { - mountSysPoint.push_back(QDir::toNativeSeparators(mountedVolumesList.at(index).rootPath()).toStdString()); - #ifdef Q_OS_WIN32 - if(mountSysPoint.back()!="A:\\" && mountSysPoint.back()!="A:/" && mountSysPoint.back()!="A:" && mountSysPoint.back()!="A" && - mountSysPoint.back()!="a:\\" && mountSysPoint.back()!="a:/" && mountSysPoint.back()!="a:" && mountSysPoint.back()!="a") - driveType.push_back(mountedVolumesList.at(index).fileSystemType()); - else - driveType.push_back(QByteArray()); - #else - driveType.push_back(mountedVolumesList.at(index).fileSystemType()); - #endif - index++; - } -} diff --git a/plugins/CopyEngine/Ultracopier/DriveManagement.h b/plugins/CopyEngine/Ultracopier/DriveManagement.h deleted file mode 100644 index 8013b7c..0000000 --- a/plugins/CopyEngine/Ultracopier/DriveManagement.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef DRIVEMANAGEMENT_H -#define DRIVEMANAGEMENT_H - -#include <QObject> -#include <QString> -#include <QStringList> -#include <QRegularExpression> -#include <QStorageInfo> -#include <QTimer> - -#include "Environment.h" - -class DriveManagement : public QObject -{ - Q_OBJECT -public: - explicit DriveManagement(); - bool isSameDrive(const std::string &file1, const std::string &file2) const; - /// \brief get drive of an file or folder - std::string getDrive(const std::string &fileOrFolder) const; - QByteArray getDriveType(const std::string &drive) const; - void tryUpdate(); -protected: - std::vector<std::string> mountSysPoint; - std::vector<QByteArray> driveType; - #ifdef Q_OS_WIN32 - std::regex reg1,reg2,reg3,reg4; - #endif -signals: - /// \brief To debug source - void debugInformation(const Ultracopier::DebugLevel &level,const std::string &fonction,const std::string &text,const std::string &file,const int &ligne) const; -}; - -#endif // DRIVEMANAGEMENT_H diff --git a/plugins/CopyEngine/Ultracopier/Environment.h b/plugins/CopyEngine/Ultracopier/Environment.h deleted file mode 100644 index 34db2a2..0000000 --- a/plugins/CopyEngine/Ultracopier/Environment.h +++ /dev/null @@ -1,11 +0,0 @@ -/** \file Environment.h
-\brief Define the environment variable and global function
-\author alpha_one_x86
-\licence GPL3, see the file COPYING */
-
-#include "Variable.h"
-/// \brief The global include
-#include "StructEnumDefinition.h"
-#include "StructEnumDefinition_CopyEngine.h"
-#include "DebugEngineMacro.h"
-#include "CompilerInfo.h"
diff --git a/plugins/CopyEngine/Ultracopier/FileErrorDialog.cpp b/plugins/CopyEngine/Ultracopier/FileErrorDialog.cpp deleted file mode 100644 index d88fb90..0000000 --- a/plugins/CopyEngine/Ultracopier/FileErrorDialog.cpp +++ /dev/null @@ -1,163 +0,0 @@ -#include "FileErrorDialog.h" -#include "ui_fileErrorDialog.h" -#include "TransferThread.h" - -#include <QString> - -bool FileErrorDialog::isInAdmin=false; - -FileErrorDialog::FileErrorDialog(QWidget *parent, QFileInfo fileInfo, std::string errorString, const ErrorType &errorType) : - QDialog(parent), - ui(new Ui::fileErrorDialog) -{ - Qt::WindowFlags flags = windowFlags(); - #ifdef Q_OS_LINUX - flags=flags & ~Qt::X11BypassWindowManagerHint; - #endif - flags=flags | Qt::WindowStaysOnTopHint; - setWindowFlags(flags); - - ui->setupUi(this); - action=FileError_Cancel; - ui->label_error->setText(QString::fromStdString(errorString)); - if(fileInfo.exists()) - { - ui->label_content_file_name->setText(QString::fromStdString(TransferThread::resolvedName(fileInfo))); - if(ui->label_content_file_name->text().isEmpty()) - { - ui->label_content_file_name->setText(fileInfo.absoluteFilePath()); - ui->label_folder->setVisible(false); - ui->label_content_folder->setVisible(false); - } - else - { - QString folder=fileInfo.absolutePath(); - if(folder.size()>80) - folder=folder.mid(0,38)+"..."+folder.mid(folder.size()-38); - ui->label_content_folder->setText(fileInfo.absolutePath()); - } - ui->label_content_size->setText(QString::number(fileInfo.size())); - QDateTime maxTime(QDate(ULTRACOPIER_PLUGIN_MINIMALYEAR,1,1)); - if(maxTime<fileInfo.lastModified()) - { - ui->label_modified->setVisible(true); - ui->label_content_modified->setVisible(true); - ui->label_content_modified->setText(fileInfo.lastModified().toString()); - } - else - { - ui->label_modified->setVisible(false); - ui->label_content_modified->setVisible(false); - } - if(fileInfo.isDir()) - { - this->setWindowTitle(tr("Error on folder")); - ui->label_size->hide(); - ui->label_content_size->hide(); - ui->label_file_name->setText(tr("Folder name")); - } - ui->label_file_destination->setVisible(fileInfo.isSymLink()); - ui->label_content_file_destination->setVisible(fileInfo.isSymLink()); - if(fileInfo.isSymLink()) - ui->label_content_file_destination->setText(fileInfo.symLinkTarget()); - } - else - { - ui->label_content_file_name->setText(QString::fromStdString(TransferThread::resolvedName(fileInfo))); - if(ui->label_content_file_name->text().isEmpty()) - { - ui->label_content_file_name->setText(fileInfo.absoluteFilePath()); - ui->label_folder->setVisible(false); - ui->label_content_folder->setVisible(false); - } - else - ui->label_content_folder->setText(fileInfo.absolutePath()); - - ui->label_file_destination->hide(); - ui->label_content_file_destination->hide(); - ui->label_size->hide(); - ui->label_content_size->hide(); - ui->label_modified->hide(); - ui->label_content_modified->hide(); - } - if(errorType==ErrorType_Folder || errorType==ErrorType_FolderWithRety) - ui->PutToBottom->hide(); - if(errorType==ErrorType_Folder) - ui->Retry->hide(); - - ui->Rights->hide(); - #ifdef ULTRACOPIER_PLUGIN_RIGHTS - if(isInAdmin) - ui->Rights->hide(); - #ifdef Q_OS_WIN32 - if(errorType!=ErrorType_Rights) - ui->Rights->hide(); - #else - ui->Rights->hide(); - #endif - #else - ui->Rights->hide(); - #endif -} - -FileErrorDialog::~FileErrorDialog() -{ - delete ui; -} - -void FileErrorDialog::changeEvent(QEvent *e) -{ - QWidget::changeEvent(e); - switch (e->type()) { - case QEvent::LanguageChange: - ui->retranslateUi(this); - break; - default: - break; - } -} - -void FileErrorDialog::on_PutToBottom_clicked() -{ - action=FileError_PutToEndOfTheList; - this->close(); -} - -void FileErrorDialog::on_Retry_clicked() -{ - action=FileError_Retry; - this->close(); -} - -void FileErrorDialog::on_Skip_clicked() -{ - action=FileError_Skip; - this->close(); -} - -void FileErrorDialog::on_Cancel_clicked() -{ - action=FileError_Cancel; - this->close(); -} - -bool FileErrorDialog::getAlways() -{ - return ui->checkBoxAlways->isChecked(); -} - -FileErrorAction FileErrorDialog::getAction() -{ - return action; -} - -void FileErrorDialog::on_checkBoxAlways_clicked() -{ - ui->Rights->setEnabled(!ui->checkBoxAlways->isChecked()); -} - -#ifdef ULTRACOPIER_PLUGIN_RIGHTS -void FileErrorDialog::on_Rights_clicked() -{ -} -#endif diff --git a/plugins/CopyEngine/Ultracopier/FileErrorDialog.h b/plugins/CopyEngine/Ultracopier/FileErrorDialog.h deleted file mode 100644 index 133a8b0..0000000 --- a/plugins/CopyEngine/Ultracopier/FileErrorDialog.h +++ /dev/null @@ -1,51 +0,0 @@ -/** \file fileErrorDialog.h -\brief Define the dialog error on the file -\author alpha_one_x86 -\licence GPL3, see the file COPYING */ - -#include <QDialog> -#include <QWidget> -#include <QString> -#include <QDateTime> -#include <QFileInfo> -#include "Environment.h" - -#ifndef FILEERRORDIALOG_H -#define FILEERRORDIALOG_H - - - -namespace Ui { - class fileErrorDialog; -} - -/// \brief to show error dialog, and ask what do -class FileErrorDialog : public QDialog -{ - Q_OBJECT -public: - /// \brief create the object and pass all the informations to it - explicit FileErrorDialog(QWidget *parent,QFileInfo fileInfo,std::string errorString,const ErrorType &errorType); - ~FileErrorDialog(); - /// \brief return the the always checkbox is checked - bool getAlways(); - /// \brief return the action clicked - FileErrorAction getAction(); -protected: - void changeEvent(QEvent *e); - static bool isInAdmin; -private slots: - void on_PutToBottom_clicked(); - void on_Retry_clicked(); - void on_Skip_clicked(); - void on_Cancel_clicked(); - void on_checkBoxAlways_clicked(); - #ifdef ULTRACOPIER_PLUGIN_RIGHTS - void on_Rights_clicked(); - #endif -private: - Ui::fileErrorDialog *ui; - FileErrorAction action; -}; - -#endif // FILEERRORDIALOG_H diff --git a/plugins/CopyEngine/Ultracopier/FileExistsDialog.cpp b/plugins/CopyEngine/Ultracopier/FileExistsDialog.cpp deleted file mode 100644 index 10b8543..0000000 --- a/plugins/CopyEngine/Ultracopier/FileExistsDialog.cpp +++ /dev/null @@ -1,240 +0,0 @@ -#include "FileExistsDialog.h" -#include "ui_fileExistsDialog.h" -#include "TransferThread.h" - -#ifdef Q_OS_WIN32 -#define CURRENTSEPARATOR "\\" -#else -#define CURRENTSEPARATOR "/" -#endif - -#include <QRegularExpression> -#include <QFileInfo> -#include <QMessageBox> - -FileExistsDialog::FileExistsDialog(QWidget *parent, QFileInfo source, QFileInfo destination, std::string firstRenamingRule, std::string otherRenamingRule) : - QDialog(parent), - ui(new Ui::fileExistsDialog) -{ - Qt::WindowFlags flags = windowFlags(); - #ifdef Q_OS_LINUX - flags=flags & ~Qt::X11BypassWindowManagerHint; - #endif - flags=flags | Qt::WindowStaysOnTopHint; - setWindowFlags(flags); - - ui->setupUi(this); - action=FileExists_Cancel; - destinationInfo=destination; - oldName=TransferThread::resolvedName(destination); - ui->lineEditNewName->setText(QString::fromStdString(oldName)); - ui->lineEditNewName->setPlaceholderText(QString::fromStdString(oldName)); - ui->Overwrite->addAction(ui->actionOverwrite_if_newer); - ui->Overwrite->addAction(ui->actionOverwrite_if_not_same_modification_date); - ui->label_content_source_size->setText(QString::number(source.size())); - ui->label_content_source_modified->setText(source.lastModified().toString()); - ui->label_content_source_file_name->setText(QString::fromStdString(TransferThread::resolvedName(source))); - QString folder=source.absolutePath(); - if(folder.size()>80) - folder=folder.mid(0,38)+"..."+folder.mid(folder.size()-38); - ui->label_content_source_folder->setText(folder); - ui->label_content_destination_size->setText(QString::number(destination.size())); - ui->label_content_destination_modified->setText(destination.lastModified().toString()); - ui->label_content_destination_file_name->setText(QString::fromStdString(TransferThread::resolvedName(destination))); - folder=destination.absolutePath(); - if(folder.size()>80) - folder=folder.mid(0,38)+"..."+folder.mid(folder.size()-38); - ui->label_content_destination_folder->setText(folder); - QDateTime maxTime(QDate(ULTRACOPIER_PLUGIN_MINIMALYEAR,1,1)); - if(maxTime<source.lastModified()) - { - ui->label_source_modified->setVisible(true); - ui->label_content_source_modified->setVisible(true); - ui->label_content_source_modified->setText(source.lastModified().toString()); - } - else - { - ui->label_source_modified->setVisible(false); - ui->label_content_source_modified->setVisible(false); - } - if(maxTime<destination.lastModified()) - { - ui->label_destination_modified->setVisible(true); - ui->label_content_destination_modified->setVisible(true); - ui->label_content_destination_modified->setText(destination.lastModified().toString()); - } - else - { - ui->label_destination_modified->setVisible(false); - ui->label_content_destination_modified->setVisible(false); - } - if(!source.exists()) - { - ui->label_content_source_size->setVisible(false); - ui->label_source_size->setVisible(false); - ui->label_source_modified->setVisible(false); - ui->label_content_source_modified->setVisible(false); - } - if(!destination.exists()) - { - ui->label_content_destination_size->setVisible(false); - ui->label_destination_size->setVisible(false); - ui->label_destination_modified->setVisible(false); - ui->label_content_destination_modified->setVisible(false); - } - this->firstRenamingRule=firstRenamingRule; - this->otherRenamingRule=otherRenamingRule; - on_SuggestNewName_clicked(); -} - -FileExistsDialog::~FileExistsDialog() -{ - delete ui; -} - -void FileExistsDialog::changeEvent(QEvent *e) -{ - QWidget::changeEvent(e); - switch (e->type()) { - case QEvent::LanguageChange: - ui->retranslateUi(this); - break; - default: - break; - } -} - -std::string FileExistsDialog::getNewName() -{ - if(oldName==ui->lineEditNewName->text().toStdString() || ui->checkBoxAlways->isChecked()) - return oldName; - else - return ui->lineEditNewName->text().toStdString(); -} - -void FileExistsDialog::on_SuggestNewName_clicked() -{ - QFileInfo destinationInfo=this->destinationInfo; - QString absolutePath=destinationInfo.absolutePath(); - QString fileName=QString::fromStdString(TransferThread::resolvedName(destinationInfo)); - QString suffix=""; - QString destination; - QString newFileName; - //resolv the suffix - if(fileName.contains(QRegularExpression(QStringLiteral("^(.*)(\\.[a-z0-9]+)$")))) - { - suffix=fileName; - suffix.replace(QRegularExpression(QStringLiteral("^(.*)(\\.[a-z0-9]+)$")),QStringLiteral("\\2")); - fileName.replace(QRegularExpression(QStringLiteral("^(.*)(\\.[a-z0-9]+)$")),QStringLiteral("\\1")); - } - //resolv the new name - int num=1; - do - { - if(num==1) - { - if(firstRenamingRule.empty()) - newFileName=tr("%name% - copy%suffix%"); - else - newFileName=QString::fromStdString(firstRenamingRule); - } - else - { - if(otherRenamingRule.empty()) - newFileName=tr("%name% - copy (%number%)%suffix%"); - else - newFileName=QString::fromStdString(otherRenamingRule); - newFileName.replace(QStringLiteral("%number%"),QString::number(num)); - } - newFileName.replace(QStringLiteral("%name%"),fileName); - newFileName.replace(QStringLiteral("%suffix%"),suffix); - destination=absolutePath+CURRENTSEPARATOR+newFileName; - destinationInfo.setFile(destination); - num++; - } - while(destinationInfo.exists()); - ui->lineEditNewName->setText(newFileName); -} - -void FileExistsDialog::on_Rename_clicked() -{ - action=FileExists_Rename; - this->close(); -} - -void FileExistsDialog::on_Overwrite_clicked() -{ - action=FileExists_Overwrite; - this->close(); -} - -void FileExistsDialog::on_Skip_clicked() -{ - action=FileExists_Skip; - this->close(); -} - -void FileExistsDialog::on_Cancel_clicked() -{ - action=FileExists_Cancel; - this->close(); -} - -void FileExistsDialog::on_actionOverwrite_if_newer_triggered() -{ - action=FileExists_OverwriteIfNewer; - this->close(); -} - -void FileExistsDialog::on_actionOverwrite_if_not_same_modification_date_triggered() -{ - action=FileExists_OverwriteIfNotSame; - this->close(); -} - -FileExistsAction FileExistsDialog::getAction() -{ - return action; -} - -bool FileExistsDialog::getAlways() -{ - return ui->checkBoxAlways->isChecked(); -} - -void FileExistsDialog::updateRenameButton() -{ - ui->Rename->setEnabled(ui->checkBoxAlways->isChecked() || (!ui->lineEditNewName->text().contains(QRegularExpression("[/\\\\\\*]")) && oldName!=ui->lineEditNewName->text().toStdString() && !ui->lineEditNewName->text().isEmpty())); -} - -void FileExistsDialog::on_checkBoxAlways_toggled(bool checked) -{ - Q_UNUSED(checked); - updateRenameButton(); -} - -void FileExistsDialog::on_lineEditNewName_textChanged(const QString &arg1) -{ - Q_UNUSED(arg1); - updateRenameButton(); -} - -void FileExistsDialog::on_lineEditNewName_returnPressed() -{ - updateRenameButton(); - if(ui->Rename->isEnabled()) - on_Rename_clicked(); - else - QMessageBox::warning(this,tr("Error"),tr("Try rename with using special characters")); -} - -void FileExistsDialog::on_actionOverwrite_if_older_triggered() -{ - action=FileExists_OverwriteIfOlder; - this->close(); -} - -void FileExistsDialog::on_lineEditNewName_editingFinished() -{ - updateRenameButton(); -} diff --git a/plugins/CopyEngine/Ultracopier/FileExistsDialog.h b/plugins/CopyEngine/Ultracopier/FileExistsDialog.h deleted file mode 100644 index 05ff7e0..0000000 --- a/plugins/CopyEngine/Ultracopier/FileExistsDialog.h +++ /dev/null @@ -1,60 +0,0 @@ -/** \file fileExistsDialog.h -\brief Define the dialog when file already exists -\author alpha_one_x86 -\licence GPL3, see the file COPYING */ - -#include <QDialog> -#include <QWidget> -#include <QString> -#include <QDateTime> -#include <QFileInfo> -#include <QDir> -#include "Environment.h" - -#ifndef FILEEXISTSDIALOG_H -#define FILEEXISTSDIALOG_H - -namespace Ui { - class fileExistsDialog; -} - -/// \brief to show file exists dialog, and ask what do -class FileExistsDialog : public QDialog -{ - Q_OBJECT -public: - /// \brief create the object and pass all the informations to it - explicit FileExistsDialog(QWidget *parent,QFileInfo source,QFileInfo destination,std::string firstRenamingRule,std::string otherRenamingRule); - ~FileExistsDialog(); - /// \brief return the the always checkbox is checked - bool getAlways(); - /// \brief return the action clicked - FileExistsAction getAction(); - /// \brief return the new rename is case in manual renaming - std::string getNewName(); -protected: - void changeEvent(QEvent *e); -private slots: - void on_SuggestNewName_clicked(); - void on_Rename_clicked(); - void on_Overwrite_clicked(); - void on_Skip_clicked(); - void on_Cancel_clicked(); - void on_actionOverwrite_if_newer_triggered(); - void on_actionOverwrite_if_not_same_modification_date_triggered(); - void updateRenameButton(); - void on_checkBoxAlways_toggled(bool checked); - void on_lineEditNewName_textChanged(const QString &arg1); - void on_lineEditNewName_returnPressed(); - void on_actionOverwrite_if_older_triggered(); - void on_lineEditNewName_editingFinished(); -private: - Ui::fileExistsDialog *ui; - FileExistsAction action; - std::string oldName; - QFileInfo destinationInfo; - std::string firstRenamingRule; - std::string otherRenamingRule; -}; - -#endif // FILEEXISTSDIALOG_H diff --git a/plugins/CopyEngine/Ultracopier/FileIsSameDialog.cpp b/plugins/CopyEngine/Ultracopier/FileIsSameDialog.cpp deleted file mode 100644 index 7683d1d..0000000 --- a/plugins/CopyEngine/Ultracopier/FileIsSameDialog.cpp +++ /dev/null @@ -1,190 +0,0 @@ -#include "FileIsSameDialog.h" -#include "ui_fileIsSameDialog.h" -#include "TransferThread.h" - -#ifdef Q_OS_WIN32 -#define CURRENTSEPARATOR "\\" -#else -#define CURRENTSEPARATOR "/" -#endif - -#include <QRegularExpression> -#include <QFileInfo> -#include <QMessageBox> - -FileIsSameDialog::FileIsSameDialog(QWidget *parent, QFileInfo fileInfo, std::string firstRenamingRule, std::string otherRenamingRule) : - QDialog(parent), - ui(new Ui::fileIsSameDialog) -{ - Qt::WindowFlags flags = windowFlags(); - #ifdef Q_OS_LINUX - flags=flags & ~Qt::X11BypassWindowManagerHint; - #endif - flags=flags | Qt::WindowStaysOnTopHint; - setWindowFlags(flags); - - ui->setupUi(this); - action=FileExists_Cancel; - oldName=TransferThread::resolvedName(fileInfo); - destinationInfo=fileInfo; - ui->lineEditNewName->setText(QString::fromStdString(oldName)); - ui->lineEditNewName->setPlaceholderText(QString::fromStdString(oldName)); - ui->label_content_size->setText(QString::number(fileInfo.size())); - ui->label_content_modified->setText(fileInfo.lastModified().toString()); - ui->label_content_file_name->setText(QString::fromStdString(TransferThread::resolvedName(fileInfo))); - QString folder=fileInfo.absolutePath(); - if(folder.size()>80) - folder=folder.mid(0,38)+"..."+folder.mid(folder.size()-38); - ui->label_content_folder->setText(folder); - updateRenameButton(); - QDateTime maxTime(QDate(ULTRACOPIER_PLUGIN_MINIMALYEAR,1,1)); - if(maxTime<fileInfo.lastModified()) - { - ui->label_modified->setVisible(true); - ui->label_content_modified->setVisible(true); - ui->label_content_modified->setText(fileInfo.lastModified().toString()); - } - else - { - ui->label_modified->setVisible(false); - ui->label_content_modified->setVisible(false); - } - if(!fileInfo.exists()) - { - ui->label_content_size->setVisible(false); - ui->label_size->setVisible(false); - ui->label_modified->setVisible(false); - ui->label_content_modified->setVisible(false); - } - this->firstRenamingRule=firstRenamingRule; - this->otherRenamingRule=otherRenamingRule; - on_SuggestNewName_clicked(); -} - -FileIsSameDialog::~FileIsSameDialog() -{ - delete ui; -} - -void FileIsSameDialog::changeEvent(QEvent *e) -{ - QWidget::changeEvent(e); - switch (e->type()) { - case QEvent::LanguageChange: - ui->retranslateUi(this); - break; - default: - break; - } -} - -std::string FileIsSameDialog::getNewName() -{ - if(oldName==ui->lineEditNewName->text().toStdString() || ui->checkBoxAlways->isChecked()) - return oldName; - else - return ui->lineEditNewName->text().toStdString(); -} - -void FileIsSameDialog::on_SuggestNewName_clicked() -{ - QFileInfo destinationInfo=this->destinationInfo; - QString absolutePath=destinationInfo.absolutePath(); - QString fileName=QString::fromStdString(TransferThread::resolvedName(destinationInfo)); - QString suffix=""; - QString destination; - QString newFileName; - //resolv the suffix - if(fileName.contains(QRegularExpression(QStringLiteral("^(.*)(\\.[a-z0-9]+)$")))) - { - suffix=fileName; - suffix.replace(QRegularExpression(QStringLiteral("^(.*)(\\.[a-z0-9]+)$")),QStringLiteral("\\2")); - fileName.replace(QRegularExpression(QStringLiteral("^(.*)(\\.[a-z0-9]+)$")),QStringLiteral("\\1")); - } - //resolv the new name - int num=1; - do - { - if(num==1) - { - if(firstRenamingRule.empty()) - newFileName=tr("%name% - copy"); - else - newFileName=QString::fromStdString(firstRenamingRule); - } - else - { - if(otherRenamingRule.empty()) - newFileName=tr("%name% - copy (%number%)"); - else - newFileName=QString::fromStdString(otherRenamingRule); - newFileName.replace(QStringLiteral("%number%"),QString::number(num)); - } - newFileName.replace(QStringLiteral("%name%"),fileName); - newFileName.replace(QStringLiteral("%suffix%"),suffix); - destination=absolutePath+CURRENTSEPARATOR+newFileName+suffix; - destinationInfo.setFile(destination); - num++; - } - while(destinationInfo.exists()); - ui->lineEditNewName->setText(newFileName); -} - -void FileIsSameDialog::on_Rename_clicked() -{ - action=FileExists_Rename; - this->close(); -} - -void FileIsSameDialog::on_Skip_clicked() -{ - action=FileExists_Skip; - this->close(); -} - -void FileIsSameDialog::on_Cancel_clicked() -{ - action=FileExists_Cancel; - this->close(); -} - -FileExistsAction FileIsSameDialog::getAction() -{ - return action; -} - -bool FileIsSameDialog::getAlways() -{ - return ui->checkBoxAlways->isChecked(); -} - -void FileIsSameDialog::updateRenameButton() -{ - ui->Rename->setEnabled(ui->checkBoxAlways->isChecked() || (!ui->lineEditNewName->text().contains(QRegularExpression("[/\\\\\\*]")) && oldName!=ui->lineEditNewName->text().toStdString() && !ui->lineEditNewName->text().isEmpty())); -} - -void FileIsSameDialog::on_lineEditNewName_textChanged(const QString &arg1) -{ - Q_UNUSED(arg1); - updateRenameButton(); -} - -void FileIsSameDialog::on_checkBoxAlways_toggled(bool checked) -{ - Q_UNUSED(checked); - updateRenameButton(); -} - -void FileIsSameDialog::on_lineEditNewName_returnPressed() -{ - updateRenameButton(); - if(ui->Rename->isEnabled()) - on_Rename_clicked(); - else - QMessageBox::warning(this,tr("Error"),tr("Try rename with using special characters")); -} - -void FileIsSameDialog::on_lineEditNewName_editingFinished() -{ - updateRenameButton(); -} diff --git a/plugins/CopyEngine/Ultracopier/FileIsSameDialog.h b/plugins/CopyEngine/Ultracopier/FileIsSameDialog.h deleted file mode 100644 index 5dc0067..0000000 --- a/plugins/CopyEngine/Ultracopier/FileIsSameDialog.h +++ /dev/null @@ -1,57 +0,0 @@ -/** \file fileIsSameDialog.h -\brief Define the dialog when file is same -\author alpha_one_x86 -\licence GPL3, see the file COPYING */ - -#include <QDialog> -#include <QWidget> -#include <QString> -#include <QDateTime> -#include <QFileInfo> -#include <QDir> -#include "Environment.h" - -#ifndef FILEISSAMEDIALOG_H -#define FILEISSAMEDIALOG_H - -namespace Ui { - class fileIsSameDialog; -} - -/// \brief to show file is same dialog, and ask what do -class FileIsSameDialog : public QDialog -{ - Q_OBJECT -public: - /// \brief create the object and pass all the informations to it - explicit FileIsSameDialog(QWidget *parent,QFileInfo fileInfo,std::string firstRenamingRule,std::string otherRenamingRule); - ~FileIsSameDialog(); - /// \brief return the the always checkbox is checked - bool getAlways(); - /// \brief return the action clicked - FileExistsAction getAction(); - /// \brief return the new rename is case in manual renaming - std::string getNewName(); -protected: - void changeEvent(QEvent *e); -private slots: - void on_SuggestNewName_clicked(); - void on_Rename_clicked(); - void on_Skip_clicked(); - void on_Cancel_clicked(); - void updateRenameButton(); - void on_lineEditNewName_textChanged(const QString &arg1); - void on_checkBoxAlways_toggled(bool checked); - void on_lineEditNewName_returnPressed(); - void on_lineEditNewName_editingFinished(); -private: - Ui::fileIsSameDialog *ui; - FileExistsAction action; - std::string oldName; - QFileInfo destinationInfo; - std::string firstRenamingRule; - std::string otherRenamingRule; - -}; - -#endif // FILEISSAMEDIALOG_H diff --git a/plugins/CopyEngine/Ultracopier/FilterRules.cpp b/plugins/CopyEngine/Ultracopier/FilterRules.cpp deleted file mode 100644 index 0f6bf2c..0000000 --- a/plugins/CopyEngine/Ultracopier/FilterRules.cpp +++ /dev/null @@ -1,193 +0,0 @@ -#include "FilterRules.h" -#include "ui_FilterRules.h" - -#include <QRegularExpression> - -FilterRules::FilterRules(QWidget *parent) : - QDialog(parent), - ui(new Ui::FilterRules) -{ - ui->setupUi(this); - updateChecking(); - haveBeenValided=false; -} - -FilterRules::~FilterRules() -{ - delete ui; -} - -bool FilterRules::getIsValid() -{ - return isValid && haveBeenValided; -} - -std::string FilterRules::get_search_text() -{ - return ui->search->text().toStdString(); -} - -SearchType FilterRules::get_search_type() -{ - switch(ui->search_type->currentIndex()) - { - case 0: - return SearchType_rawText; - case 1: - return SearchType_simpleRegex; - case 2: - return SearchType_perlRegex; - } - return SearchType_simpleRegex; -} - -ApplyOn FilterRules::get_apply_on() -{ - switch(ui->apply_on->currentIndex()) - { - case 0: - return ApplyOn_file; - case 1: - return ApplyOn_fileAndFolder; - case 2: - return ApplyOn_folder; - } - return ApplyOn_fileAndFolder; -} - -bool FilterRules::get_need_match_all() -{ - return ui->need_match_all->isChecked(); -} - -void FilterRules::set_search_text(std::string search_text) -{ - ui->search->setText(QString::fromStdString(search_text)); -} - -void FilterRules::set_search_type(SearchType search_type) -{ - switch(search_type) - { - case SearchType_rawText: - ui->search_type->setCurrentIndex(0); - break; - case SearchType_simpleRegex: - ui->search_type->setCurrentIndex(1); - break; - case SearchType_perlRegex: - ui->search_type->setCurrentIndex(2); - break; - } -} - -void FilterRules::set_apply_on(ApplyOn apply_on) -{ - switch(apply_on) - { - case ApplyOn_file: - ui->apply_on->setCurrentIndex(0); - break; - case ApplyOn_fileAndFolder: - ui->apply_on->setCurrentIndex(1); - break; - case ApplyOn_folder: - ui->apply_on->setCurrentIndex(2); - break; - } -} - -void FilterRules::set_need_match_all(bool need_match_all) -{ - ui->need_match_all->setChecked(need_match_all); -} - -void FilterRules::on_search_textChanged(const std::string &arg1) -{ - Q_UNUSED(arg1); - updateChecking(); -} - -void FilterRules::updateChecking() -{ - QRegularExpression regex; - isValid=!ui->search->text().isEmpty(); - if(isValid) - { - QString tempString; - if(ui->search_type->currentIndex()==0) - { - tempString=QRegularExpression::escape(ui->search->text()); - if(tempString.contains('/') || tempString.contains('\\')) - isValid=false; - } - else if(ui->search_type->currentIndex()==1) - { - tempString=QRegularExpression::escape(ui->search->text()); - tempString.replace(QStringLiteral("\\*"),QStringLiteral("[^\\\\/]*")); - } - else if(ui->search_type->currentIndex()==2) - { - tempString=ui->search->text(); - if(tempString.startsWith('^') && tempString.endsWith('$')) - { - ui->need_match_all->setChecked(true); - tempString.remove(QRegularExpression(QStringLiteral("^\\^"))); - tempString.remove(QRegularExpression(QStringLiteral("\\$$"))); - ui->search->setText(tempString); - } - } - if(isValid) - { - if(ui->need_match_all->isChecked()) - tempString=QStringLiteral("^")+tempString+QStringLiteral("$"); - regex=QRegularExpression(tempString); - isValid=regex.isValid(); - } - } - - ui->isValid->setChecked(isValid); - ui->testString->setEnabled(isValid); - ui->label_test_string->setEnabled(isValid); - ui->matched->setEnabled(isValid); - ui->matched->setChecked(isValid && ui->testString->text().contains(regex)); - ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(isValid); -} - -void FilterRules::on_isValid_clicked() -{ - updateChecking(); -} - -void FilterRules::on_testString_textChanged(const std::string &arg1) -{ - Q_UNUSED(arg1); - updateChecking(); -} - -void FilterRules::on_matched_clicked() -{ - updateChecking(); -} - -void FilterRules::on_search_type_currentIndexChanged(int index) -{ - Q_UNUSED(index); - updateChecking(); -} - -void FilterRules::on_need_match_all_clicked() -{ - updateChecking(); -} - -void FilterRules::on_buttonBox_clicked(QAbstractButton *button) -{ - if(ui->buttonBox->buttonRole(button)==QDialogButtonBox::RejectRole) - reject(); - else - { - haveBeenValided=true; - accept(); - } -} diff --git a/plugins/CopyEngine/Ultracopier/FilterRules.h b/plugins/CopyEngine/Ultracopier/FilterRules.h deleted file mode 100644 index 0838792..0000000 --- a/plugins/CopyEngine/Ultracopier/FilterRules.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef FILTERRULES_H -#define FILTERRULES_H - -#include <QDialog> -#include <QAbstractButton> -#include <QPushButton> - -#include "StructEnumDefinition_CopyEngine.h" - -namespace Ui { -class FilterRules; -} - -/** All the filter rules to include/exclude some file during the listing */ -class FilterRules : public QDialog -{ - Q_OBJECT - -public: - explicit FilterRules(QWidget *parent = 0); - ~FilterRules(); - bool getIsValid(); - std::string get_search_text(); - SearchType get_search_type(); - ApplyOn get_apply_on(); - bool get_need_match_all(); - void set_search_text(std::string search_text); - void set_search_type(SearchType search_type); - void set_apply_on(ApplyOn apply_on); - void set_need_match_all(bool need_match_all); -private slots: - void on_search_textChanged(const std::string &arg1); - void on_isValid_clicked(); - void on_testString_textChanged(const std::string &arg1); - void on_matched_clicked(); - void on_search_type_currentIndexChanged(int index); - void on_need_match_all_clicked(); - void on_buttonBox_clicked(QAbstractButton *button); -private: - Ui::FilterRules *ui; - void updateChecking(); - bool isValid; - bool haveBeenValided; -}; - -#endif // FILTERRULES_H diff --git a/plugins/CopyEngine/Ultracopier/FilterRules.ui b/plugins/CopyEngine/Ultracopier/FilterRules.ui deleted file mode 100644 index a4006fe..0000000 --- a/plugins/CopyEngine/Ultracopier/FilterRules.ui +++ /dev/null @@ -1,162 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>FilterRules</class> - <widget class="QDialog" name="FilterRules"> - <property name="windowModality"> - <enum>Qt::WindowModal</enum> - </property> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>289</width> - <height>231</height> - </rect> - </property> - <property name="windowTitle"> - <string>Filters dialog</string> - </property> - <property name="windowIcon"> - <iconset resource="copyEngineResources.qrc"> - <normaloff>:/CopyEngine/resources/resources/filter.png</normaloff>:/CopyEngine/resources/resources/filter.png</iconset> - </property> - <layout class="QGridLayout" name="gridLayout_2"> - <property name="margin"> - <number>1</number> - </property> - <property name="spacing"> - <number>1</number> - </property> - <item row="0" column="0"> - <widget class="QLabel" name="label"> - <property name="text"> - <string>Search:</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QLineEdit" name="search"/> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="label_3"> - <property name="text"> - <string>Search type:</string> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QComboBox" name="search_type"> - <item> - <property name="text"> - <string>Raw text</string> - </property> - </item> - <item> - <property name="text"> - <string>Simplified regex</string> - </property> - </item> - <item> - <property name="text"> - <string>Perl's regex</string> - </property> - </item> - </widget> - </item> - <item row="2" column="0"> - <widget class="QLabel" name="label_2"> - <property name="text"> - <string>Apply on:</string> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QComboBox" name="apply_on"> - <item> - <property name="text"> - <string>File</string> - </property> - </item> - <item> - <property name="text"> - <string>Folder</string> - </property> - </item> - <item> - <property name="text"> - <string>File and folder</string> - </property> - </item> - </widget> - </item> - <item row="3" column="0" colspan="2"> - <widget class="QCheckBox" name="need_match_all"> - <property name="text"> - <string>Whole string must match</string> - </property> - </widget> - </item> - <item row="4" column="0" colspan="2"> - <widget class="QGroupBox" name="groupBoxChecking"> - <property name="title"> - <string>Checking</string> - </property> - <layout class="QGridLayout" name="gridLayout"> - <item row="0" column="0" colspan="2"> - <widget class="QCheckBox" name="isValid"> - <property name="text"> - <string>The regex is valid</string> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="label_test_string"> - <property name="text"> - <string>Test string:</string> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QLineEdit" name="testString"/> - </item> - <item row="2" column="0" colspan="2"> - <widget class="QCheckBox" name="matched"> - <property name="text"> - <string>The test string matches with the regex</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item row="5" column="0" colspan="2"> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <spacer name="horizontalSpacer"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>68</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QDialogButtonBox" name="buttonBox"> - <property name="standardButtons"> - <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> - </property> - </widget> - </item> - </layout> - </item> - </layout> - </widget> - <resources> - <include location="copyEngineResources.qrc"/> - </resources> - <connections/> -</ui> diff --git a/plugins/CopyEngine/Ultracopier/Filters.cpp b/plugins/CopyEngine/Ultracopier/Filters.cpp deleted file mode 100644 index c7b1526..0000000 --- a/plugins/CopyEngine/Ultracopier/Filters.cpp +++ /dev/null @@ -1,460 +0,0 @@ -#include "Filters.h" -#include "ui_Filters.h" -#include "../../../cpp11addition.h" - -#include <QRegularExpression> - -Filters::Filters(QWidget *parent) : - QDialog(parent), - ui(new Ui::Filters) -{ - ui->setupUi(this); -} - -Filters::~Filters() -{ - delete ui; -} - -void Filters::setFilters(std::vector<std::string> includeStrings,std::vector<std::string> includeOptions,std::vector<std::string> excludeStrings,std::vector<std::string> excludeOptions) -{ - if(includeStrings.size()!=includeOptions.size() || excludeStrings.size()!=excludeOptions.size()) - return; - Filters_rules new_item; - - include.clear(); - unsigned int index=0; - while(index<(unsigned int)includeStrings.size()) - { - new_item.search_text=includeStrings.at(index); - std::vector<std::string> options=stringsplit(includeOptions.at(index),';'); - new_item.need_match_all=false; - new_item.search_type=SearchType_rawText; - new_item.apply_on=ApplyOn_fileAndFolder; - - if(vectorcontainsAtLeastOne(options,std::string("SearchType_simpleRegex"))) - new_item.search_type=SearchType_simpleRegex; - if(vectorcontainsAtLeastOne(options,std::string("SearchType_perlRegex"))) - new_item.search_type=SearchType_perlRegex; - if(vectorcontainsAtLeastOne(options,std::string("ApplyOn_file"))) - new_item.apply_on=ApplyOn_file; - if(vectorcontainsAtLeastOne(options,std::string("ApplyOn_folder"))) - new_item.apply_on=ApplyOn_folder; - if(vectorcontainsAtLeastOne(options,std::string("need_match_all"))) - new_item.need_match_all=true; - - if(convertToRegex(new_item)) - include.push_back(new_item); - - index++; - } - - exclude.clear(); - index=0; - while(index<excludeStrings.size()) - { - new_item.search_text=excludeStrings.at(index); - std::vector<std::string> options=stringsplit(excludeOptions.at(index),';'); - new_item.need_match_all=false; - new_item.search_type=SearchType_rawText; - new_item.apply_on=ApplyOn_fileAndFolder; - - if(vectorcontainsAtLeastOne(options,std::string("SearchType_simpleRegex"))) - new_item.search_type=SearchType_simpleRegex; - if(vectorcontainsAtLeastOne(options,std::string("SearchType_perlRegex"))) - new_item.search_type=SearchType_perlRegex; - if(vectorcontainsAtLeastOne(options,std::string("ApplyOn_file"))) - new_item.apply_on=ApplyOn_file; - if(vectorcontainsAtLeastOne(options,std::string("ApplyOn_folder"))) - new_item.apply_on=ApplyOn_folder; - if(vectorcontainsAtLeastOne(options,std::string("need_match_all"))) - new_item.need_match_all=true; - - if(convertToRegex(new_item)) - exclude.push_back(new_item); - - index++; - } - - reShowAll(); -} - -void Filters::reShowAll() -{ - ui->inclusion->clear(); - unsigned int index=0; - while(index<(unsigned int)include.size()) - { - std::string entryShow=include.at(index).search_text+" ("; - std::vector<std::string> optionsToShow; - switch(include.at(index).search_type) - { - case SearchType_rawText: - optionsToShow.push_back(tr("Raw text").toStdString()); - break; - case SearchType_simpleRegex: - optionsToShow.push_back(tr("Simplified regex").toStdString()); - break; - case SearchType_perlRegex: - optionsToShow.push_back(tr("Perl's regex").toStdString()); - break; - default: - break; - } - switch(include.at(index).apply_on) - { - case ApplyOn_file: - optionsToShow.push_back(tr("Only on file").toStdString()); - break; - case ApplyOn_folder: - optionsToShow.push_back(tr("Only on folder").toStdString()); - break; - default: - break; - } - if(include.at(index).need_match_all) - optionsToShow.push_back(tr("Full match").toStdString()); - entryShow+=stringimplode(optionsToShow,","); - entryShow+=")"; - ui->inclusion->addItem(new QListWidgetItem(QString::fromStdString(entryShow))); - index++; - } - ui->exclusion->clear(); - index=0; - while(index<(unsigned int)exclude.size()) - { - std::string entryShow=exclude.at(index).search_text+" ("; - std::vector<std::string> optionsToShow; - switch(exclude.at(index).search_type) - { - case SearchType_rawText: - optionsToShow.push_back(tr("Raw text").toStdString()); - break; - case SearchType_simpleRegex: - optionsToShow.push_back(tr("Simplified regex").toStdString()); - break; - case SearchType_perlRegex: - optionsToShow.push_back(tr("Perl's regex").toStdString()); - break; - default: - break; - } - switch(exclude.at(index).apply_on) - { - case ApplyOn_file: - optionsToShow.push_back(tr("Only on file").toStdString()); - break; - case ApplyOn_folder: - optionsToShow.push_back(tr("Only on folder").toStdString()); - break; - default: - break; - } - if(exclude.at(index).need_match_all) - optionsToShow.push_back(tr("Full match").toStdString()); - entryShow+=stringimplode(optionsToShow,","); - entryShow+=")"; - ui->exclusion->addItem(new QListWidgetItem(QString::fromStdString(entryShow))); - index++; - } -} - -std::vector<Filters_rules> Filters::getInclude() const -{ - return include; -} - -std::vector<Filters_rules> Filters::getExclude() const -{ - return exclude; -} - -void Filters::newLanguageLoaded() -{ - ui->retranslateUi(this); - reShowAll(); -} - -void Filters::updateFilters() -{ - std::vector<std::string> includeStrings,includeOptions,excludeStrings,excludeOptions; - unsigned int index=0; - while(index<(unsigned int)include.size()) - { - includeStrings.push_back(include.at(index).search_text); - std::vector<std::string> optionsToShow; - - switch(include.at(index).search_type) - { - case SearchType_rawText: - optionsToShow.push_back("SearchType_rawText"); - break; - case SearchType_simpleRegex: - optionsToShow.push_back("SearchType_simpleRegex"); - break; - case SearchType_perlRegex: - optionsToShow.push_back("SearchType_perlRegex"); - break; - default: - break; - } - switch(include.at(index).apply_on) - { - case ApplyOn_file: - optionsToShow.push_back("ApplyOn_file"); - break; - case ApplyOn_fileAndFolder: - optionsToShow.push_back("ApplyOn_fileAndFolder"); - break; - case ApplyOn_folder: - optionsToShow.push_back("ApplyOn_folder"); - break; - default: - break; - } - if(include.at(index).need_match_all) - optionsToShow.push_back(tr("Full match").toStdString()); - includeOptions.push_back(stringimplode(optionsToShow,";")); - index++; - } - index=0; - while(index<(unsigned int)exclude.size()) - { - excludeStrings.push_back(exclude.at(index).search_text); - std::vector<std::string> optionsToShow; - - switch(exclude.at(index).search_type) - { - case SearchType_rawText: - optionsToShow.push_back("SearchType_rawText"); - break; - case SearchType_simpleRegex: - optionsToShow.push_back("SearchType_simpleRegex"); - break; - case SearchType_perlRegex: - optionsToShow.push_back("SearchType_perlRegex"); - break; - default: - break; - } - switch(exclude.at(index).apply_on) - { - case ApplyOn_file: - optionsToShow.push_back("ApplyOn_file"); - break; - case ApplyOn_fileAndFolder: - optionsToShow.push_back("ApplyOn_fileAndFolder"); - break; - case ApplyOn_folder: - optionsToShow.push_back("ApplyOn_folder"); - break; - default: - break; - } - if(exclude.at(index).need_match_all) - optionsToShow.push_back(tr("Full match").toStdString()); - excludeOptions.push_back(stringimplode(optionsToShow,";")); - index++; - } - emit sendNewFilters(includeStrings,includeOptions,excludeStrings,excludeOptions); - emit haveNewFilters(); -} - -bool Filters::convertToRegex(Filters_rules &item) -{ - bool isValid=!item.search_text.empty(); - if(isValid) - { - std::regex regex; - std::string tempString; - if(item.search_type==SearchType_rawText) - { - tempString=QRegularExpression::escape(QString::fromStdString(item.search_text)).toStdString(); - if(tempString.find('/') != std::string::npos || tempString.find('\\') != std::string::npos) - isValid=false; - } - else if(item.search_type==SearchType_simpleRegex) - { - tempString=QRegularExpression::escape(QString::fromStdString(item.search_text)).toStdString(); - stringreplaceAll(tempString,"\\*","[^\\\\/]*"); - } - else if(item.search_type==SearchType_perlRegex) - { - tempString=item.search_text; - if(stringStartWith(tempString,'^') && stringEndsWith(tempString,'$')) - { - item.need_match_all=true; - if(stringStartWith(tempString,'^')) - tempString=tempString.substr(1,tempString.size()-1); - if(stringEndsWith(tempString,'$')) - tempString=tempString.substr(0,tempString.size()-1); - item.search_text=tempString; - } - } - if(isValid) - { - if(item.need_match_all==true) - tempString="^"+tempString+"$"; - regex=std::regex(tempString); - //isValid=regex.isValid(); - item.regex=regex; - return true; - } - else - return false; - } - return false; -} - -void Filters::on_remove_exclusion_clicked() -{ - bool removedEntry=false; - int index=0; - while(index<ui->exclusion->count()) - { - if(ui->exclusion->item(index)->isSelected()) - { - delete ui->exclusion->item(index); - exclude.erase(exclude.cbegin()+index); - removedEntry=true; - } - else - index++; - } - if(removedEntry) - { - reShowAll(); - updateFilters(); - } -} - -void Filters::on_remove_inclusion_clicked() -{ - bool removedEntry=false; - int index=0; - while(index<ui->inclusion->count()) - { - if(ui->inclusion->item(index)->isSelected()) - { - delete ui->inclusion->item(index); - include.erase(include.cbegin()+index); - removedEntry=true; - } - else - index++; - } - if(removedEntry) - { - reShowAll(); - updateFilters(); - } -} - -void Filters::on_add_exclusion_clicked() -{ - FilterRules dialog(this); - dialog.exec(); - if(dialog.getIsValid()) - { - Filters_rules new_item; - new_item.apply_on=dialog.get_apply_on(); - new_item.need_match_all=dialog.get_need_match_all(); - new_item.search_text=dialog.get_search_text(); - new_item.search_type=dialog.get_search_type(); - exclude.push_back(new_item); - reShowAll(); - updateFilters(); - } -} - -void Filters::on_buttonBox_clicked(QAbstractButton *button) -{ - if(ui->buttonBox->buttonRole(button)==QDialogButtonBox::RejectRole) - reject(); -} - -void Filters::on_add_inclusion_clicked() -{ - FilterRules dialog(this); - dialog.exec(); - if(dialog.getIsValid()) - { - Filters_rules new_item; - new_item.apply_on=dialog.get_apply_on(); - new_item.need_match_all=dialog.get_need_match_all(); - new_item.search_text=dialog.get_search_text(); - new_item.search_type=dialog.get_search_type(); - if(convertToRegex(new_item)) - include.push_back(new_item); - reShowAll(); - updateFilters(); - } -} - -void Filters::on_edit_exclusion_clicked() -{ - bool editedEntry=false; - int index=0; - while(index<ui->exclusion->count()) - { - if(ui->exclusion->item(index)->isSelected()) - { - FilterRules dialog(this); - dialog.set_apply_on(exclude.at(index).apply_on); - dialog.set_need_match_all(exclude.at(index).need_match_all); - dialog.set_search_text(exclude.at(index).search_text); - dialog.set_search_type(exclude.at(index).search_type); - dialog.exec(); - if(dialog.getIsValid()) - { - exclude[index].apply_on=dialog.get_apply_on(); - exclude[index].need_match_all=dialog.get_need_match_all(); - exclude[index].search_text=dialog.get_search_text(); - exclude[index].search_type=dialog.get_search_type(); - if(!convertToRegex(exclude[index])) - exclude.erase(exclude.cbegin()+index); - editedEntry=true; - } - } - index++; - } - if(editedEntry) - { - reShowAll(); - updateFilters(); - } -} - -void Filters::on_edit_inclusion_clicked() -{ - bool editedEntry=false; - int index=0; - while(index<ui->inclusion->count()) - { - if(ui->inclusion->item(index)->isSelected()) - { - FilterRules dialog(this); - dialog.set_apply_on(exclude.at(index).apply_on); - dialog.set_need_match_all(exclude.at(index).need_match_all); - dialog.set_search_text(exclude.at(index).search_text); - dialog.set_search_type(exclude.at(index).search_type); - dialog.exec(); - if(dialog.getIsValid()) - { - exclude[index].apply_on=dialog.get_apply_on(); - exclude[index].need_match_all=dialog.get_need_match_all(); - exclude[index].search_text=dialog.get_search_text(); - exclude[index].search_type=dialog.get_search_type(); - if(!convertToRegex(exclude[index])) - exclude.erase(exclude.cbegin()+index); - editedEntry=true; - } - } - index++; - } - if(editedEntry) - { - reShowAll(); - updateFilters(); - } -} diff --git a/plugins/CopyEngine/Ultracopier/Filters.h b/plugins/CopyEngine/Ultracopier/Filters.h deleted file mode 100644 index 6645afc..0000000 --- a/plugins/CopyEngine/Ultracopier/Filters.h +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef FILTERS_H -#define FILTERS_H - -#include <QDialog> -#include <QStringList> - -#include "FilterRules.h" -#include "StructEnumDefinition_CopyEngine.h" - -namespace Ui { -class Filters; -} - -/** To add/edit one filter rules */ -class Filters : public QDialog -{ - Q_OBJECT -public: - explicit Filters(QWidget *parent = 0); - ~Filters(); - void setFilters(std::vector<std::string> includeStrings, std::vector<std::string> includeOptions, std::vector<std::string> excludeStrings, std::vector<std::string> excludeOptions); - void reShowAll(); - std::vector<Filters_rules> getInclude() const; - std::vector<Filters_rules> getExclude() const; - void newLanguageLoaded(); -private: - Ui::Filters *ui; - std::vector<Filters_rules> include; - std::vector<Filters_rules> exclude; - void updateFilters(); - bool convertToRegex(Filters_rules &item); -signals: - void sendNewFilters(const std::vector<std::string> &includeStrings,const std::vector<std::string> &includeOptions,const std::vector<std::string> &excludeStrings,const std::vector<std::string> &excludeOptions) const; - void haveNewFilters() const; -private slots: - void on_remove_exclusion_clicked(); - void on_remove_inclusion_clicked(); - void on_add_exclusion_clicked(); - void on_buttonBox_clicked(QAbstractButton *button); - void on_add_inclusion_clicked(); - void on_edit_exclusion_clicked(); - void on_edit_inclusion_clicked(); -}; - -#endif // FILTERS_H diff --git a/plugins/CopyEngine/Ultracopier/Filters.ui b/plugins/CopyEngine/Ultracopier/Filters.ui deleted file mode 100644 index 33822af..0000000 --- a/plugins/CopyEngine/Ultracopier/Filters.ui +++ /dev/null @@ -1,194 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>Filters</class> - <widget class="QDialog" name="Filters"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>507</width> - <height>502</height> - </rect> - </property> - <property name="windowTitle"> - <string>Filters</string> - </property> - <property name="windowIcon"> - <iconset resource="resources.qrc"> - <normaloff>:/CopyEngine/Ultracopier/resources/filter.png</normaloff>:/CopyEngine/Ultracopier/resources/filter.png</iconset> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <property name="spacing"> - <number>1</number> - </property> - <property name="margin"> - <number>1</number> - </property> - <item> - <widget class="QGroupBox" name="groupBox"> - <property name="title"> - <string>Exclusion filters</string> - </property> - <layout class="QHBoxLayout" name="horizontalLayout_2"> - <property name="spacing"> - <number>1</number> - </property> - <property name="margin"> - <number>2</number> - </property> - <item> - <widget class="QListWidget" name="exclusion"> - <property name="selectionMode"> - <enum>QAbstractItemView::MultiSelection</enum> - </property> - </widget> - </item> - <item> - <layout class="QVBoxLayout" name="verticalLayout_2"> - <item> - <widget class="QToolButton" name="add_exclusion"> - <property name="icon"> - <iconset resource="resources.qrc"> - <normaloff>:/CopyEngine/Ultracopier/resources/add.png</normaloff>:/CopyEngine/Ultracopier/resources/add.png</iconset> - </property> - </widget> - </item> - <item> - <widget class="QToolButton" name="edit_exclusion"> - <property name="icon"> - <iconset resource="resources.qrc"> - <normaloff>:/CopyEngine/Ultracopier/resources/edit.png</normaloff>:/CopyEngine/Ultracopier/resources/edit.png</iconset> - </property> - </widget> - </item> - <item> - <widget class="QToolButton" name="remove_exclusion"> - <property name="icon"> - <iconset resource="resources.qrc"> - <normaloff>:/CopyEngine/Ultracopier/resources/remove.png</normaloff>:/CopyEngine/Ultracopier/resources/remove.png</iconset> - </property> - </widget> - </item> - <item> - <spacer name="verticalSpacer_2"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - </layout> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="groupBox_2"> - <property name="title"> - <string>Inclusion filters</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_4"> - <property name="spacing"> - <number>1</number> - </property> - <property name="margin"> - <number>2</number> - </property> - <item> - <widget class="QLabel" name="label"> - <property name="text"> - <string>None = Include all</string> - </property> - </widget> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <widget class="QListWidget" name="inclusion"> - <property name="selectionMode"> - <enum>QAbstractItemView::MultiSelection</enum> - </property> - </widget> - </item> - <item> - <layout class="QVBoxLayout" name="verticalLayout_3"> - <item> - <widget class="QToolButton" name="add_inclusion"> - <property name="icon"> - <iconset resource="resources.qrc"> - <normaloff>:/CopyEngine/Ultracopier/resources/add.png</normaloff>:/CopyEngine/Ultracopier/resources/add.png</iconset> - </property> - </widget> - </item> - <item> - <widget class="QToolButton" name="edit_inclusion"> - <property name="icon"> - <iconset resource="resources.qrc"> - <normaloff>:/CopyEngine/Ultracopier/resources/edit.png</normaloff>:/CopyEngine/Ultracopier/resources/edit.png</iconset> - </property> - </widget> - </item> - <item> - <widget class="QToolButton" name="remove_inclusion"> - <property name="icon"> - <iconset resource="resources.qrc"> - <normaloff>:/CopyEngine/Ultracopier/resources/remove.png</normaloff>:/CopyEngine/Ultracopier/resources/remove.png</iconset> - </property> - </widget> - </item> - <item> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - </layout> - </item> - </layout> - </item> - </layout> - </widget> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_3"> - <item> - <spacer name="horizontalSpacer"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QDialogButtonBox" name="buttonBox"> - <property name="standardButtons"> - <set>QDialogButtonBox::Cancel</set> - </property> - </widget> - </item> - </layout> - </item> - </layout> - </widget> - <resources> - <include location="resources.qrc"/> - </resources> - <connections/> -</ui> diff --git a/plugins/CopyEngine/Ultracopier/FolderExistsDialog.cpp b/plugins/CopyEngine/Ultracopier/FolderExistsDialog.cpp deleted file mode 100644 index 59466ed..0000000 --- a/plugins/CopyEngine/Ultracopier/FolderExistsDialog.cpp +++ /dev/null @@ -1,202 +0,0 @@ -#include "FolderExistsDialog.h" -#include "ui_folderExistsDialog.h" -#include "TransferThread.h" - -#ifdef Q_OS_WIN32 -#define CURRENTSEPARATOR "\\" -#else -#define CURRENTSEPARATOR "/" -#endif - -#include <QMessageBox> -#include <QFileInfo> -#include <QMessageBox> - -FolderExistsDialog::FolderExistsDialog(QWidget *parent, QFileInfo source, bool isSame, QFileInfo destination, std::string firstRenamingRule, std::string otherRenamingRule) : - QDialog(parent), - ui(new Ui::folderExistsDialog) -{ - Qt::WindowFlags flags = windowFlags(); - #ifdef Q_OS_LINUX - flags=flags & ~Qt::X11BypassWindowManagerHint; - #endif - flags=flags | Qt::WindowStaysOnTopHint; - setWindowFlags(flags); - - ui->setupUi(this); - action=FolderExists_Cancel; - oldName=TransferThread::resolvedName(destination); - ui->lineEditNewName->setText(QString::fromStdString(oldName)); - ui->lineEditNewName->setPlaceholderText(QString::fromStdString(oldName)); - ui->label_content_source_modified->setText(source.lastModified().toString()); - ui->label_content_source_folder_name->setText(source.fileName()); - QString folder=source.absolutePath(); - if(folder.size()>80) - folder=folder.mid(0,38)+"..."+folder.mid(folder.size()-38); - ui->label_content_source_folder->setText(folder); - if(ui->label_content_source_folder_name->text().isEmpty()) - { - ui->label_source_folder_name->hide(); - ui->label_content_source_folder_name->hide(); - } - if(isSame) - { - this->destinationInfo=source; - ui->label_source->hide(); - ui->label_destination->hide(); - ui->label_destination_modified->hide(); - ui->label_destination_folder_name->hide(); - ui->label_destination_folder->hide(); - ui->label_content_destination_modified->hide(); - ui->label_content_destination_folder_name->hide(); - ui->label_content_destination_folder->hide(); - } - else - { - this->destinationInfo=destination; - this->setWindowTitle(tr("Folder already exists")); - ui->label_content_destination_modified->setText(destination.lastModified().toString()); - ui->label_content_destination_folder_name->setText(destination.fileName()); - QString folder=destination.absolutePath(); - if(folder.size()>80) - folder=folder.mid(0,38)+"..."+folder.mid(folder.size()-38); - ui->label_content_destination_folder->setText(folder); - if(ui->label_content_destination_folder_name->text().isEmpty()) - { - ui->label_destination_folder_name->hide(); - ui->label_content_destination_folder_name->hide(); - } - } - this->firstRenamingRule=firstRenamingRule; - this->otherRenamingRule=otherRenamingRule; - on_SuggestNewName_clicked(); -} - -FolderExistsDialog::~FolderExistsDialog() -{ - delete ui; -} - -void FolderExistsDialog::changeEvent(QEvent *e) -{ - QDialog::changeEvent(e); - switch (e->type()) { - case QEvent::LanguageChange: - ui->retranslateUi(this); - break; - default: - break; - } -} - -std::string FolderExistsDialog::getNewName() -{ - if(oldName==ui->lineEditNewName->text().toStdString() || ui->checkBoxAlways->isChecked()) - return ""; - else - return ui->lineEditNewName->text().toStdString(); -} - -void FolderExistsDialog::on_SuggestNewName_clicked() -{ - QFileInfo destinationInfo=this->destinationInfo; - QString absolutePath=destinationInfo.absolutePath(); - QString fileName=QString::fromStdString(TransferThread::resolvedName(destinationInfo)); - QString suffix; - QString destination; - QString newFileName; - //resolv the suffix - if(fileName.contains(QRegularExpression(QStringLiteral("^(.*)(\\.[a-z0-9]+)$")))) - { - suffix=fileName; - suffix.replace(QRegularExpression(QStringLiteral("^(.*)(\\.[a-z0-9]+)$")),QStringLiteral("\\2")); - fileName.replace(QRegularExpression(QStringLiteral("^(.*)(\\.[a-z0-9]+)$")),QStringLiteral("\\1")); - } - //resolv the new name - int num=1; - do - { - if(num==1) - { - if(firstRenamingRule.empty()) - newFileName=tr("%name% - copy"); - else - { - newFileName=QString::fromStdString(firstRenamingRule); - } - } - else - { - if(otherRenamingRule.empty()) - newFileName=tr("%name% - copy (%number%)"); - else - newFileName=QString::fromStdString(otherRenamingRule); - newFileName.replace(QStringLiteral("%number%"),QString::number(num)); - } - newFileName.replace(QStringLiteral("%name%"),fileName); - destination=absolutePath+CURRENTSEPARATOR+newFileName+suffix; - destinationInfo.setFile(destination); - num++; - } - while(destinationInfo.exists()); - ui->lineEditNewName->setText(newFileName); -} - -void FolderExistsDialog::on_Rename_clicked() -{ - action=FolderExists_Rename; - this->close(); -} - -void FolderExistsDialog::on_Skip_clicked() -{ - action=FolderExists_Skip; - this->close(); -} - -void FolderExistsDialog::on_Cancel_clicked() -{ - action=FolderExists_Cancel; - this->close(); -} - -FolderExistsAction FolderExistsDialog::getAction() -{ - return action; -} - -bool FolderExistsDialog::getAlways() -{ - return ui->checkBoxAlways->isChecked(); -} - -void FolderExistsDialog::on_Merge_clicked() -{ - action=FolderExists_Merge; - this->close(); -} - -void FolderExistsDialog::on_lineEditNewName_editingFinished() -{ - updateRenameButton(); -} - -void FolderExistsDialog::on_lineEditNewName_returnPressed() -{ - updateRenameButton(); - if(ui->Rename->isEnabled()) - on_Rename_clicked(); - else - QMessageBox::warning(this,tr("Error"),tr("Try rename with using special characters")); -} - -void FolderExistsDialog::on_lineEditNewName_textChanged(const std::string &arg1) -{ - Q_UNUSED(arg1); - updateRenameButton(); -} - -void FolderExistsDialog::updateRenameButton() -{ - ui->Rename->setEnabled(ui->checkBoxAlways->isChecked() || (!ui->lineEditNewName->text().contains(QRegularExpression("[/\\\\\\*]")) && oldName!=ui->lineEditNewName->text().toStdString() && !ui->lineEditNewName->text().isEmpty())); -} diff --git a/plugins/CopyEngine/Ultracopier/FolderExistsDialog.h b/plugins/CopyEngine/Ultracopier/FolderExistsDialog.h deleted file mode 100644 index a3bcf67..0000000 --- a/plugins/CopyEngine/Ultracopier/FolderExistsDialog.h +++ /dev/null @@ -1,57 +0,0 @@ -/** \file folderExistsDialog.h -\brief Define the dialog when file exists -\author alpha_one_x86 -\licence GPL3, see the file COPYING */ - -#ifndef FOLDERISSAMEDIALOG_H -#define FOLDERISSAMEDIALOG_H - -#include <QDialog> -#include <QFileInfo> -#include <QString> -#include <QDateTime> -#include <QDir> - -#include "Environment.h" - -namespace Ui { - class folderExistsDialog; -} - -/// \brief to show file exists dialog, and ask what do -class FolderExistsDialog : public QDialog -{ - Q_OBJECT - -public: - /// \brief create the object and pass all the informations to it - explicit FolderExistsDialog(QWidget *parent,QFileInfo source,bool isSame,QFileInfo destination,std::string firstRenamingRule,std::string otherRenamingRule); - ~FolderExistsDialog(); - /// \brief return the the always checkbox is checked - bool getAlways(); - /// \brief return the action clicked - FolderExistsAction getAction(); - /// \brief return the new rename is case in manual renaming - std::string getNewName(); -protected: - void changeEvent(QEvent *e); -private slots: - void updateRenameButton(); - void on_SuggestNewName_clicked(); - void on_Rename_clicked(); - void on_Skip_clicked(); - void on_Cancel_clicked(); - void on_Merge_clicked(); - void on_lineEditNewName_editingFinished(); - void on_lineEditNewName_returnPressed(); - void on_lineEditNewName_textChanged(const std::string &arg1); -private: - Ui::folderExistsDialog *ui; - FolderExistsAction action; - std::string oldName; - std::string firstRenamingRule; - std::string otherRenamingRule; - QFileInfo destinationInfo; -}; - -#endif // FOLDERISSAMEDIALOG_H diff --git a/plugins/CopyEngine/Ultracopier/Languages/ar/translation.ts b/plugins/CopyEngine/Ultracopier/Languages/ar/translation.ts deleted file mode 100644 index e17b3f2..0000000 --- a/plugins/CopyEngine/Ultracopier/Languages/ar/translation.ts +++ /dev/null @@ -1,1291 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE TS> -<TS version="2.1"> -<context> - <name>AvancedQFile</name> - <message> - <location filename="../../AvancedQFile.cpp" line="26"/> - <location filename="../../AvancedQFile.cpp" line="57"/> - <location filename="../../AvancedQFile.cpp" line="88"/> - <source>Not supported on this platform</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="40"/> - <source>Last modified date is wrong</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="71"/> - <source>Last access date is wrong</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="121"/> - <source>Unknown error: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="187"/> - <source>Unknown error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="133"/> - <source>Path conversion error</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>CopyEngine</name> - <message> - <location filename="../../CopyEngine.cpp" line="429"/> - <location filename="../../CopyEngine.cpp" line="451"/> - <source>The engine is forced to move, you can't copy with it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="462"/> - <location filename="../../CopyEngine.cpp" line="484"/> - <source>The engine is forced to copy, you can't move with it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Use the actual destination "%1"?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="732"/> - <source>The mode has been forced previously. This is an internal error, please report it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1062"/> - <location filename="../../CopyEngine.cpp" line="1065"/> - <location filename="../../CopyEngine.cpp" line="1070"/> - <location filename="../../CopyEngine.cpp" line="1074"/> - <source>Ask</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1063"/> - <location filename="../../CopyEngine.cpp" line="1067"/> - <location filename="../../CopyEngine.cpp" line="1071"/> - <location filename="../../CopyEngine.cpp" line="1075"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1066"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1068"/> - <location filename="../../CopyEngine.cpp" line="1080"/> - <source>Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1072"/> - <source>Put at the end</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1076"/> - <source>Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1077"/> - <source>Overwrite if different</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1078"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1079"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1082"/> - <source>Automatic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1083"/> - <source>Sequential</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1084"/> - <source>Parallel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>CopyEngineFactory</name> - <message> - <location filename="../../CopyEngineFactory.cpp" line="427"/> - <location filename="../../CopyEngineFactory.cpp" line="430"/> - <location filename="../../CopyEngineFactory.cpp" line="435"/> - <location filename="../../CopyEngineFactory.cpp" line="439"/> - <source>Ask</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="428"/> - <location filename="../../CopyEngineFactory.cpp" line="432"/> - <location filename="../../CopyEngineFactory.cpp" line="436"/> - <location filename="../../CopyEngineFactory.cpp" line="440"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="431"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="433"/> - <location filename="../../CopyEngineFactory.cpp" line="445"/> - <source>Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="437"/> - <source>Put at the end</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="441"/> - <source>Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="442"/> - <source>Overwrite if different</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="443"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="444"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="447"/> - <source>Automatic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="448"/> - <source>Sequential</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="449"/> - <source>Parallel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options engine is not loaded, can't access to the filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>DiskSpace</name> - <message> - <location filename="../../DiskSpace.ui" line="14"/> - <source>Disk space</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="24"/> - <source>You need more space on this drive to finish this transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="49"/> - <source>Continue</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="56"/> - <source>Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.cpp" line="23"/> - <source>Drives %1 have %2 available but need %3</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileErrorDialog</name> - <message> - <location filename="../../FileErrorDialog.cpp" line="54"/> - <source>Error on folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileErrorDialog.cpp" line="57"/> - <source>Folder name</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileExistsDialog</name> - <message> - <location filename="../../FileExistsDialog.cpp" line="137"/> - <source>%name% - copy%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="144"/> - <source>%name% - copy (%number%)%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileIsSameDialog</name> - <message> - <location filename="../../FileIsSameDialog.cpp" line="111"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="118"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FilterRules</name> - <message> - <location filename="../../FilterRules.ui" line="33"/> - <source>Search:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="43"/> - <source>Search type:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="51"/> - <source>Raw text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="56"/> - <source>Simplified regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="61"/> - <source>Perl's regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="69"/> - <source>Apply on:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="77"/> - <source>File</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="82"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="87"/> - <source>File and folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="125"/> - <source>The test string matches with the regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="102"/> - <source>Checking</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="115"/> - <source>Test string:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="17"/> - <source>Filters dialog</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="95"/> - <source>Whole string must match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="108"/> - <source>The regex is valid</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>Filters</name> - <message> - <location filename="../../Filters.ui" line="14"/> - <source>Filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="30"/> - <source>Exclusion filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="93"/> - <source>Inclusion filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="105"/> - <source>None = Include all</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="93"/> - <location filename="../../Filters.cpp" line="131"/> - <source>Raw text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="96"/> - <location filename="../../Filters.cpp" line="134"/> - <source>Simplified regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="99"/> - <location filename="../../Filters.cpp" line="137"/> - <source>Perl's regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="107"/> - <location filename="../../Filters.cpp" line="145"/> - <source>Only on file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="110"/> - <location filename="../../Filters.cpp" line="148"/> - <source>Only on folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="116"/> - <location filename="../../Filters.cpp" line="154"/> - <location filename="../../Filters.cpp" line="216"/> - <location filename="../../Filters.cpp" line="255"/> - <source>Full match</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FolderExistsDialog</name> - <message> - <location filename="../../FolderExistsDialog.cpp" line="57"/> - <source>Folder already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="122"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="131"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ListThread</name> - <message> - <location filename="../../ListThread.cpp" line="1487"/> - <location filename="../../ListThread.cpp" line="2419"/> - <source>Unable do to move or copy item into wrong forced mode: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1494"/> - <location filename="../../ListThread.cpp" line="2426"/> - <source>Unable to save the transfer list: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1510"/> - <source>Problem reading file, or file-size is 0</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1517"/> - <source>Wrong header: "%1"</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1526"/> - <source>The transfer list is in mixed mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1535"/> - <source>The transfer list is in copy mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1541"/> - <source>The transfer list is in move mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1604"/> - <source>Some errors have been found during the line parsing</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1612"/> - <source>Unable to open the transfer list: %1</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>MkPath</name> - <message> - <location filename="../../MkPath.cpp" line="142"/> - <source>Unable to create the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="155"/> - <source>The source folder don't exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="183"/> - <source>Unable to temporary rename the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="206"/> - <source>Unable to do the final real move the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="233"/> - <source>Unable to move the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="93"/> - <location filename="../../MkPath.cpp" line="276"/> - <source>Unable to remove</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ReadThread</name> - <message> - <location filename="../../ReadThread.cpp" line="59"/> - <source>Internal error, please report it!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="188"/> - <source>Internal error reading the source file:block size out of range</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="196"/> - <location filename="../../ReadThread.cpp" line="420"/> - <source>Unable to read the source file: </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="237"/> - <location filename="../../ReadThread.cpp" line="468"/> - <source>File truncated during the read, possible data change</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>RenamingRules</name> - <message> - <location filename="../../RenamingRules.ui" line="35"/> - <source>First renaming</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="41"/> - <source>%name% - copy%suffix%</source> - <extracomment>%name% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="57"/> - <source>%name% - copy (%number%)%suffix%</source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="67"/> - <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name, <span style=" font-weight:600;">%number%</span> for the extra number, <span style=" font-weight:600;">%suffix%</span> file suffix</p></body></html></source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="51"/> - <source>Second renaming</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="39"/> - <location filename="../../RenamingRules.cpp" line="62"/> - <source>%1 - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="43"/> - <location filename="../../RenamingRules.cpp" line="73"/> - <source>%1 - copy (%2)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="14"/> - <source>Renaming rules</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ScanFileOrFolder</name> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="274"/> - <source>Blacklisted folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="338"/> - <source>%1 - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="345"/> - <source>%1 - copy (%2)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="401"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="408"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="444"/> - <source>This is not a folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="446"/> - <source>The folder does exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="448"/> - <source>The folder is not readable</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="459"/> - <source>Problem with name encoding</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>TransferThread</name> - <message> - <location filename="../../TransferThread.cpp" line="244"/> - <location filename="../../TransferThread.cpp" line="673"/> - <location filename="../../TransferThread.cpp" line="745"/> - <location filename="../../TransferThread.cpp" line="1315"/> - <source>File not found</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="346"/> - <location filename="../../TransferThread.cpp" line="363"/> - <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="421"/> - <location filename="../../TransferThread.cpp" line="444"/> - <source>Internal error: Already opening</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="586"/> - <source>Drive %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="588"/> - <source>Unknown folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="592"/> - <source>root</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="645"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="652"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="711"/> - <location filename="../../TransferThread.cpp" line="826"/> - <source>The source file doesn't exist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="751"/> - <location filename="../../TransferThread.cpp" line="838"/> - <source>Unable to do the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="787"/> - <source>The source doesn't exist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="832"/> - <source>Another file exists at same place</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1134"/> - <source>The checksums do not match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1224"/> - <source>Internal error: The destination is not closed</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1239"/> - <source>Internal error: The size transfered doesn't match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1250"/> - <source>Internal error: The buffer is not empty</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1315"/> - <location filename="../../TransferThread.cpp" line="1333"/> - <location filename="../../TransferThread.cpp" line="1348"/> - <source>Unable to change the date</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>WriteThread</name> - <message> - <location filename="../../WriteThread.cpp" line="83"/> - <source>Path resolution error (Empty path)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="277"/> - <source>Internal error, please report it!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="680"/> - <source>Unable to read the source file: </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="705"/> - <source>File truncated during read, possible data change</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>copyEngineOptions</name> - <message> - <location filename="../../copyEngineOptions.ui" line="44"/> - <source>Transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="53"/> - <source>Move the whole folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="60"/> - <source>Transfer the file rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="70"/> - <source>Keep the file date</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="83"/> - <source>Autostart the transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="90"/> - <location filename="../../copyEngineOptions.ui" line="110"/> - <source>Less performance if checked</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="113"/> - <source>Follow the strict order</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="139"/> - <source>Error and collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="145"/> - <source>When folder error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="155"/> - <source>When file error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="181"/> - <source>When file collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="241"/> - <source>When folder collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="272"/> - <source>Check if destination folder exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="279"/> - <source>Renaming rules</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="299"/> - <source>Delete partially transferred files</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="312"/> - <source>Rename the original destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="343"/> - <source>Control</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="349"/> - <source>Checksum</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="358"/> - <source>Only after error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="365"/> - <source>Ignore if impossible</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="382"/> - <source>Verify checksums</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="414"/> - <source>Performance</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="420"/> - <source>Parallel buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="427"/> - <location filename="../../copyEngineOptions.ui" line="440"/> - <location filename="../../copyEngineOptions.ui" line="453"/> - <location filename="../../copyEngineOptions.ui" line="490"/> - <location filename="../../copyEngineOptions.ui" line="559"/> - <source>KB</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="469"/> - <source>Block size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="476"/> - <source>Sequential buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="483"/> - <source>Enable OS buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="506"/> - <source>OS buffer only if smaller than</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="513"/> - <source>Transfer algorithm</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="552"/> - <source>Parallelize if smaller than</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="582"/> - <source>Inode threads (unsafe > 1)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="589"/> - <location filename="../../copyEngineOptions.ui" line="599"/> - <source>More cpu, but better organisation on the disk</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="602"/> - <source>Order the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="618"/> - <source>Misc</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="624"/> - <source>Check the disk space</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="634"/> - <source>Use this folder when destination is not set</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="646"/> - <source>Browse</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="668"/> - <source>Filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileErrorDialog</name> - <message> - <location filename="../../fileErrorDialog.ui" line="14"/> - <source>Error with file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="20"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="59"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="76"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="93"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="110"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="127"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="173"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="193"/> - <source>Try in with elevated privileges</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="200"/> - <source>Put to bottom</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="207"/> - <source>Retry</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="214"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="221"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileExistsDialog</name> - <message> - <location filename="../../fileExistsDialog.ui" line="14"/> - <source>The file exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="34"/> - <source>Source</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="82"/> - <location filename="../../fileExistsDialog.ui" line="170"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="99"/> - <location filename="../../fileExistsDialog.ui" line="187"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="116"/> - <location filename="../../fileExistsDialog.ui" line="204"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="133"/> - <location filename="../../fileExistsDialog.ui" line="221"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="277"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="288"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="346"/> - <location filename="../../fileExistsDialog.ui" line="349"/> - <source>Overwrite if modification date differs</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="308"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="315"/> - <source>&Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="325"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="332"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="341"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="354"/> - <location filename="../../fileExistsDialog.ui" line="357"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileIsSameDialog</name> - <message> - <location filename="../../fileIsSameDialog.ui" line="40"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="110"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="70"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="14"/> - <source>The source and destination are same</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="90"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="159"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="170"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="190"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="197"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="204"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>folderExistsDialog</name> - <message> - <location filename="../../folderExistsDialog.ui" line="34"/> - <source>Source</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="14"/> - <source>The source and destination is identical</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="82"/> - <location filename="../../folderExistsDialog.ui" line="150"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="99"/> - <location filename="../../folderExistsDialog.ui" line="160"/> - <source>Folder name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="116"/> - <location filename="../../folderExistsDialog.ui" line="184"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="227"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="238"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="245"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="252"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="259"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="266"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -</TS> diff --git a/plugins/CopyEngine/Ultracopier/Languages/de/translation.ts b/plugins/CopyEngine/Ultracopier/Languages/de/translation.ts deleted file mode 100644 index fb6408e..0000000 --- a/plugins/CopyEngine/Ultracopier/Languages/de/translation.ts +++ /dev/null @@ -1,1292 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE TS> -<TS version="2.1" language="de" sourcelanguage="en"> -<context> - <name>AvancedQFile</name> - <message> - <location filename="../../AvancedQFile.cpp" line="26"/> - <location filename="../../AvancedQFile.cpp" line="57"/> - <location filename="../../AvancedQFile.cpp" line="88"/> - <source>Not supported on this platform</source> - <translation>Auf dieser Plattform nicht unterstützt</translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="40"/> - <source>Last modified date is wrong</source> - <translation>Datum der letzten Änderung ist falsch</translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="71"/> - <source>Last access date is wrong</source> - <translatorcomment> </translatorcomment> - <translation>Datum des letzten Zugriffs ist falsch</translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="121"/> - <source>Unknown error: %1</source> - <translation>Unbekannter Fehler: %1</translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="187"/> - <source>Unknown error</source> - <translation>Unbekannter Fehler</translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="133"/> - <source>Path conversion error</source> - <translation>Pfad Konvertierungsfehler</translation> - </message> -</context> -<context> - <name>CopyEngine</name> - <message> - <location filename="../../CopyEngine.cpp" line="429"/> - <location filename="../../CopyEngine.cpp" line="451"/> - <source>The engine is forced to move, you can't copy with it</source> - <translation>Verschiebemodus - Sie können nicht kopieren</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="462"/> - <location filename="../../CopyEngine.cpp" line="484"/> - <source>The engine is forced to copy, you can't move with it</source> - <translation>Kopiermodus - Sie können nicht verschieben</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Destination</source> - <translation>Ziel</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Use the actual destination "%1"?</source> - <translation>Aktuelles Ziel: "%1" benutzen?</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="732"/> - <source>The mode has been forced previously. This is an internal error, please report it</source> - <translation>Der Modus wurde vorher erzwungen. Interner Fehler - Bitte bei mir melden! </translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1062"/> - <location filename="../../CopyEngine.cpp" line="1065"/> - <location filename="../../CopyEngine.cpp" line="1070"/> - <location filename="../../CopyEngine.cpp" line="1074"/> - <source>Ask</source> - <translation>Fragen</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1063"/> - <location filename="../../CopyEngine.cpp" line="1067"/> - <location filename="../../CopyEngine.cpp" line="1071"/> - <location filename="../../CopyEngine.cpp" line="1075"/> - <source>Skip</source> - <translation>Überspringen</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1066"/> - <source>Merge</source> - <translation>Fusionieren</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1068"/> - <location filename="../../CopyEngine.cpp" line="1080"/> - <source>Rename</source> - <translation>Umbenennen</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1072"/> - <source>Put at the end</source> - <translation>Ans Ende verschieben</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1076"/> - <source>Overwrite</source> - <translation>Überschreiben</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1077"/> - <source>Overwrite if different</source> - <translation>Überschreiben, falls verschieden</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1078"/> - <source>Overwrite if newer</source> - <translation>Überschreiben, falls neuer</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1079"/> - <source>Overwrite if older</source> - <translation>Überschreiben, falls älter</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1082"/> - <source>Automatic</source> - <translation>Automatisch</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1083"/> - <source>Sequential</source> - <translation>Sequentiell</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1084"/> - <source>Parallel</source> - <translation>Parallel</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options error</source> - <translation>Fehlerhafte Optionen</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation>Optionen nicht geladen - Kein Zugriff auf Filter</translation> - </message> -</context> -<context> - <name>CopyEngineFactory</name> - <message> - <location filename="../../CopyEngineFactory.cpp" line="427"/> - <location filename="../../CopyEngineFactory.cpp" line="430"/> - <location filename="../../CopyEngineFactory.cpp" line="435"/> - <location filename="../../CopyEngineFactory.cpp" line="439"/> - <source>Ask</source> - <translation>Fragen</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="428"/> - <location filename="../../CopyEngineFactory.cpp" line="432"/> - <location filename="../../CopyEngineFactory.cpp" line="436"/> - <location filename="../../CopyEngineFactory.cpp" line="440"/> - <source>Skip</source> - <translation>Überspringen</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="431"/> - <source>Merge</source> - <translation>Fusionieren</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="433"/> - <location filename="../../CopyEngineFactory.cpp" line="445"/> - <source>Rename</source> - <translation>Umbenennen</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="437"/> - <source>Put at the end</source> - <translation>Ans Ende verschieben</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="441"/> - <source>Overwrite</source> - <translation>Überschreiben</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="442"/> - <source>Overwrite if different</source> - <translation>Überschreiben, falls verschieden</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="443"/> - <source>Overwrite if newer</source> - <translation>Überschreiben, falls neuer</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="444"/> - <source>Overwrite if older</source> - <translation>Überschreiben, falls älter</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="447"/> - <source>Automatic</source> - <translation>Automatisch</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="448"/> - <source>Sequential</source> - <translation>Sequentiell</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="449"/> - <source>Parallel</source> - <translation>Parallel</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options error</source> - <translation>Fehlerhafte Optionen</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation>Option nicht geladen - Kein Zugriff auf Filter</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options engine is not loaded, can't access to the filters</source> - <translation>Option nicht geladen - Kann nicht auf Filter zugreifen</translation> - </message> -</context> -<context> - <name>DiskSpace</name> - <message> - <location filename="../../DiskSpace.ui" line="14"/> - <source>Disk space</source> - <translation>Speicherplatz</translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="24"/> - <source>You need more space on this drive to finish this transfer</source> - <translation>Zu wenig Speicherplatz auf diesem Laufwerk</translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="49"/> - <source>Continue</source> - <translation>Fortsetzen</translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="56"/> - <source>Cancel</source> - <translation>Abbrechen</translation> - </message> - <message> - <location filename="../../DiskSpace.cpp" line="23"/> - <source>Drives %1 have %2 available but need %3</source> - <translation>Laufwerk %1: %2 verfügbar %3 benötigt</translation> - </message> -</context> -<context> - <name>FileErrorDialog</name> - <message> - <location filename="../../FileErrorDialog.cpp" line="54"/> - <source>Error on folder</source> - <translation>Ordnerfehler</translation> - </message> - <message> - <location filename="../../FileErrorDialog.cpp" line="57"/> - <source>Folder name</source> - <translation>Ordnername</translation> - </message> -</context> -<context> - <name>FileExistsDialog</name> - <message> - <location filename="../../FileExistsDialog.cpp" line="137"/> - <source>%name% - copy%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="144"/> - <source>%name% - copy (%number%)%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Error</source> - <translation>Fehler</translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation>Versuche Umbenennung mit Sonderzeichen</translation> - </message> -</context> -<context> - <name>FileIsSameDialog</name> - <message> - <location filename="../../FileIsSameDialog.cpp" line="111"/> - <source>%name% - copy</source> - <translation type="unfinished">%name% - Kopie</translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="118"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished">%name% - Kopie (%number%)</translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Error</source> - <translation>Fehler</translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Try rename with using special characters</source> - <translation>Versuche Umbenennung mit Sonderzeichen</translation> - </message> -</context> -<context> - <name>FilterRules</name> - <message> - <location filename="../../FilterRules.ui" line="33"/> - <source>Search:</source> - <translation>Suche:</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="43"/> - <source>Search type:</source> - <translation>Suche (Typ):</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="51"/> - <source>Raw text</source> - <translation>Roh-Text</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="56"/> - <source>Simplified regex</source> - <translation>Vereinfachte RegEx</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="61"/> - <source>Perl's regex</source> - <translation>Perls RegEx</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="69"/> - <source>Apply on:</source> - <translation>Anwenden auf:</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="77"/> - <source>File</source> - <translation>Datei</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="82"/> - <source>Folder</source> - <translation>Ordner</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="87"/> - <source>File and folder</source> - <translation>Datei und Ordner</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="125"/> - <source>The test string matches with the regex</source> - <translation>Die Test-Zeichenfolge stimmt mit RegEx überein</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="102"/> - <source>Checking</source> - <translation>Überprüfen</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="115"/> - <source>Test string:</source> - <translation>Test-Zeichenfolge:</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="17"/> - <source>Filters dialog</source> - <translation>Filter-Dialog</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="95"/> - <source>Whole string must match</source> - <translation>Ganze Zeichenfolge muss übereinstimmen</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="108"/> - <source>The regex is valid</source> - <translation>Die RegEx ist gültig</translation> - </message> -</context> -<context> - <name>Filters</name> - <message> - <location filename="../../Filters.ui" line="14"/> - <source>Filters</source> - <translation>Filter</translation> - </message> - <message> - <location filename="../../Filters.ui" line="30"/> - <source>Exclusion filters</source> - <translation>Ausschließungs-Filter</translation> - </message> - <message> - <location filename="../../Filters.ui" line="93"/> - <source>Inclusion filters</source> - <translation>Einschließungs-Filter</translation> - </message> - <message> - <location filename="../../Filters.ui" line="105"/> - <source>None = Include all</source> - <translation>Keiner = Alle einschließen</translation> - </message> - <message> - <location filename="../../Filters.cpp" line="93"/> - <location filename="../../Filters.cpp" line="131"/> - <source>Raw text</source> - <translation>Roh-Text</translation> - </message> - <message> - <location filename="../../Filters.cpp" line="96"/> - <location filename="../../Filters.cpp" line="134"/> - <source>Simplified regex</source> - <translation>Vereinfachte RegEx</translation> - </message> - <message> - <location filename="../../Filters.cpp" line="99"/> - <location filename="../../Filters.cpp" line="137"/> - <source>Perl's regex</source> - <translation>Perls RegEx</translation> - </message> - <message> - <location filename="../../Filters.cpp" line="107"/> - <location filename="../../Filters.cpp" line="145"/> - <source>Only on file</source> - <translation>Nur auf Datei</translation> - </message> - <message> - <location filename="../../Filters.cpp" line="110"/> - <location filename="../../Filters.cpp" line="148"/> - <source>Only on folder</source> - <translation>Nur auf Ordner</translation> - </message> - <message> - <location filename="../../Filters.cpp" line="116"/> - <location filename="../../Filters.cpp" line="154"/> - <location filename="../../Filters.cpp" line="216"/> - <location filename="../../Filters.cpp" line="255"/> - <source>Full match</source> - <translation>Volle Übereinstimmung</translation> - </message> -</context> -<context> - <name>FolderExistsDialog</name> - <message> - <location filename="../../FolderExistsDialog.cpp" line="57"/> - <source>Folder already exists</source> - <translation>Ordner existiert bereits</translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="122"/> - <source>%name% - copy</source> - <translation type="unfinished">%name% - Kopie</translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="131"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished">%name% - Kopie (%number%)</translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Error</source> - <translation>Fehler</translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Try rename with using special characters</source> - <translation>Versuche Umbenennung mit Sonderzeichen</translation> - </message> -</context> -<context> - <name>ListThread</name> - <message> - <location filename="../../ListThread.cpp" line="1487"/> - <location filename="../../ListThread.cpp" line="2419"/> - <source>Unable do to move or copy item into wrong forced mode: %1</source> - <translation>Falscher Modus: %1 - Kann Element nicht verschieben oder kopieren</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1494"/> - <location filename="../../ListThread.cpp" line="2426"/> - <source>Unable to save the transfer list: %1</source> - <translation>Konnte die Transferliste: %1 nicht speichern</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1510"/> - <source>Problem reading file, or file-size is 0</source> - <translation>Lesefehler, oder Dateigröße=0</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1517"/> - <source>Wrong header: "%1"</source> - <translation>Falscher Header: "%1"</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1526"/> - <source>The transfer list is in mixed mode, but this instance is not in this mode</source> - <translation>Die Transferliste ist im gemischten Modus, aber diese Instanz ist nicht im selben Modus</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1535"/> - <source>The transfer list is in copy mode, but this instance is not in this mode</source> - <translation>Die Transferliste ist im Kopiermodus, aber diese Instanz ist nicht im selben Modus</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1541"/> - <source>The transfer list is in move mode, but this instance is not in this mode</source> - <translation>Die Transferliste ist im Verschiebe-Modus, aber diese Instanz ist nicht im selben Modus</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1604"/> - <source>Some errors have been found during the line parsing</source> - <translation>Bei der Zeilenanalyse sind Fehler aufgetreten</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1612"/> - <source>Unable to open the transfer list: %1</source> - <translation>Transferliste: %1 kann nicht geöffnet werden</translation> - </message> -</context> -<context> - <name>MkPath</name> - <message> - <location filename="../../MkPath.cpp" line="142"/> - <source>Unable to create the folder</source> - <translation>Der Ordner kann nicht erstellt werden</translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="155"/> - <source>The source folder don't exists</source> - <translation>Quell-Ordner existiert nicht</translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="183"/> - <source>Unable to temporary rename the folder</source> - <translation>Kann den Ordner nicht temporär umbenennen</translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="206"/> - <source>Unable to do the final real move the folder</source> - <translation>Kann den Ordner nicht endgültig verschieben</translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="233"/> - <source>Unable to move the folder</source> - <translation>Kann den Ordner nicht verschieben</translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="93"/> - <location filename="../../MkPath.cpp" line="276"/> - <source>Unable to remove</source> - <translation>Kann nicht löschen</translation> - </message> -</context> -<context> - <name>ReadThread</name> - <message> - <location filename="../../ReadThread.cpp" line="59"/> - <source>Internal error, please report it!</source> - <translation>Interner Fehler - Bitte bei mir melden!</translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="188"/> - <source>Internal error reading the source file:block size out of range</source> - <translation>Interner Fehler beim Lesen der Quelldatei: Blockgröße außerhalb des zulässigen Bereichs</translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="196"/> - <location filename="../../ReadThread.cpp" line="420"/> - <source>Unable to read the source file: </source> - <translation>Die Quelldatei kann nicht gelesen werden: </translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="237"/> - <location filename="../../ReadThread.cpp" line="468"/> - <source>File truncated during the read, possible data change</source> - <translation>Datei während des Lesevorgangs abgeschnitten, Daten wurden möglicherweise verändert</translation> - </message> -</context> -<context> - <name>RenamingRules</name> - <message> - <location filename="../../RenamingRules.ui" line="35"/> - <source>First renaming</source> - <translation>Erste Umbenennung</translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="41"/> - <source>%name% - copy%suffix%</source> - <extracomment>%name% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="57"/> - <source>%name% - copy (%number%)%suffix%</source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="67"/> - <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name, <span style=" font-weight:600;">%number%</span> for the extra number, <span style=" font-weight:600;">%suffix%</span> file suffix</p></body></html></source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="51"/> - <source>Second renaming</source> - <translation>Zweite Umbenennung</translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="39"/> - <location filename="../../RenamingRules.cpp" line="62"/> - <source>%1 - copy</source> - <translation>%1 - Kopie</translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="43"/> - <location filename="../../RenamingRules.cpp" line="73"/> - <source>%1 - copy (%2)</source> - <translation>%1 - Kopie (%2)</translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="14"/> - <source>Renaming rules</source> - <translation>Umbennungsregeln</translation> - </message> -</context> -<context> - <name>ScanFileOrFolder</name> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="274"/> - <source>Blacklisted folder</source> - <translation>Ordner der schwarzen Liste</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="338"/> - <source>%1 - copy</source> - <translation>%1 - Kopie</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="345"/> - <source>%1 - copy (%2)</source> - <translation>%1 - Kopie (%2)</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="401"/> - <source>%name% - copy</source> - <translation type="unfinished">%name% - Kopie</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="408"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished">%name% - Kopie (%number%)</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="444"/> - <source>This is not a folder</source> - <translation>Dies ist kein Ordner</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="446"/> - <source>The folder does exists</source> - <translation>Ordner existiert bereits</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="448"/> - <source>The folder is not readable</source> - <translation>Der Ordner kann nicht gelesen werden</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="459"/> - <source>Problem with name encoding</source> - <translation>Problem mit der Namen-Encodierung</translation> - </message> -</context> -<context> - <name>TransferThread</name> - <message> - <location filename="../../TransferThread.cpp" line="244"/> - <location filename="../../TransferThread.cpp" line="673"/> - <location filename="../../TransferThread.cpp" line="745"/> - <location filename="../../TransferThread.cpp" line="1315"/> - <source>File not found</source> - <translation>Datei nicht gefunden</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="346"/> - <location filename="../../TransferThread.cpp" line="363"/> - <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="421"/> - <location filename="../../TransferThread.cpp" line="444"/> - <source>Internal error: Already opening</source> - <translation type="unfinished">Interner Fehler: Bereits geöffnet</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="586"/> - <source>Drive %1</source> - <translation type="unfinished">Laufwerk %1</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="588"/> - <source>Unknown folder</source> - <translation type="unfinished">Unbekannter Ordner</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="592"/> - <source>root</source> - <translation type="unfinished">Stammverzeichnis</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="787"/> - <source>The source doesn't exist</source> - <translation type="unfinished">Quelle existiert nicht</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1315"/> - <location filename="../../TransferThread.cpp" line="1333"/> - <location filename="../../TransferThread.cpp" line="1348"/> - <source>Unable to change the date</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="711"/> - <location filename="../../TransferThread.cpp" line="826"/> - <source>The source file doesn't exist</source> - <translation type="unfinished">Quelldatei existiert nicht</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1134"/> - <source>The checksums do not match</source> - <translation type="unfinished">Prüfsummen sind verschieden</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1239"/> - <source>Internal error: The size transfered doesn't match</source> - <translation type="unfinished">Interner Fehler: Ubertragene Größe ungleich</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="751"/> - <location filename="../../TransferThread.cpp" line="838"/> - <source>Unable to do the folder</source> - <translation type="unfinished">Ordner kann nicht erstellt werden</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation>Versuche Umbenennung mit Sonderzeichen</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="645"/> - <source>%name% - copy</source> - <translation type="unfinished">%name% - Kopie</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="652"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished">%name% - Kopie (%number%)</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="832"/> - <source>Another file exists at same place</source> - <translation type="unfinished">Andere Datei befindet sich am selben Ort</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1224"/> - <source>Internal error: The destination is not closed</source> - <translation type="unfinished">Interner Fehler: Ziel ist nicht geschlossen</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1250"/> - <source>Internal error: The buffer is not empty</source> - <translation type="unfinished">Interner Fehler: Puffer ist nicht leer</translation> - </message> -</context> -<context> - <name>WriteThread</name> - <message> - <location filename="../../WriteThread.cpp" line="83"/> - <source>Path resolution error (Empty path)</source> - <translation>Pfad-Auflösungsfehler (leerer Pfad)</translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="277"/> - <source>Internal error, please report it!</source> - <translation>Interner Fehler - Bitte bei mir melden!</translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="680"/> - <source>Unable to read the source file: </source> - <translation>Quelldatei kann nicht gelesen werden: </translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="705"/> - <source>File truncated during read, possible data change</source> - <translation>Datenabbruch beim Lesen, Daten wurden möglicherweise verändert</translation> - </message> -</context> -<context> - <name>copyEngineOptions</name> - <message> - <location filename="../../copyEngineOptions.ui" line="44"/> - <source>Transfer</source> - <translation>Übertragung</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="53"/> - <source>Move the whole folder</source> - <translation>Verschiebe den ganzen Ordner</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="60"/> - <source>Transfer the file rights</source> - <translation>Übertrage die Dateirechte</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="70"/> - <source>Keep the file date</source> - <translation>Datum der Dateien beibehalten</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="83"/> - <source>Autostart the transfer</source> - <translation>Übertragung automatisch starten</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="90"/> - <location filename="../../copyEngineOptions.ui" line="110"/> - <source>Less performance if checked</source> - <translation>Leistung drosseln</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="113"/> - <source>Follow the strict order</source> - <translation>Genau nach Reihenfolge</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="139"/> - <source>Error and collision</source> - <translation>Fehler und Kollision</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="145"/> - <source>When folder error</source> - <translation>Bei Ordnerfehlern:</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="155"/> - <source>When file error</source> - <translation>Bei Dateifehlern:</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="181"/> - <source>When file collision</source> - <translation>Bei Dateikollisionen:</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="241"/> - <source>When folder collision</source> - <translation>Bei Ordnerkollisionen:</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="272"/> - <source>Check if destination folder exists</source> - <translation>Prüfen ob Zielordner vorhanden ist</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="279"/> - <source>Renaming rules</source> - <translation>Umbennungsregeln</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="299"/> - <source>Delete partially transferred files</source> - <translation>Unvollständig übertragene Dateien löschen</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="312"/> - <source>Rename the original destination</source> - <translation>Original-Ziel umbenennen</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="343"/> - <source>Control</source> - <translation>Überprüfung</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="349"/> - <source>Checksum</source> - <translation>Prüfsumme</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="358"/> - <source>Only after error</source> - <translation>Nur nach einem Fehler</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="365"/> - <source>Ignore if impossible</source> - <translation>Ignorieren falls unmöglich</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="382"/> - <source>Verify checksums</source> - <translation>Prüfsummen vergleichen</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="414"/> - <source>Performance</source> - <translation>Leistung</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="420"/> - <source>Parallel buffer</source> - <translation>Paralleler Puffer</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="427"/> - <location filename="../../copyEngineOptions.ui" line="440"/> - <location filename="../../copyEngineOptions.ui" line="453"/> - <location filename="../../copyEngineOptions.ui" line="490"/> - <location filename="../../copyEngineOptions.ui" line="559"/> - <source>KB</source> - <translation>KB</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="469"/> - <source>Block size</source> - <translation>Blockgröße</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="476"/> - <source>Sequential buffer</source> - <translation>Sequentieller Puffer</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="483"/> - <source>Enable OS buffer</source> - <translation>OS-Puffer aktivieren</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="506"/> - <source>OS buffer only if smaller than</source> - <translation>OS-Puffer nur verwenden, wenn kleiner als</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="513"/> - <source>Transfer algorithm</source> - <translation>Übertragungs-Algorithmus</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="552"/> - <source>Parallelize if smaller than</source> - <translation>Parallelisieren wenn kleiner als</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="582"/> - <source>Inode threads (unsafe > 1)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="589"/> - <location filename="../../copyEngineOptions.ui" line="599"/> - <source>More cpu, but better organisation on the disk</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="602"/> - <source>Order the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="618"/> - <source>Misc</source> - <translation>Verschiedenes</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="624"/> - <source>Check the disk space</source> - <translation>Auf freien Speicherplatz überprüfen</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="634"/> - <source>Use this folder when destination is not set</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="646"/> - <source>Browse</source> - <translation>Wählen</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="668"/> - <source>Filters</source> - <translation>Filter</translation> - </message> -</context> -<context> - <name>fileErrorDialog</name> - <message> - <location filename="../../fileErrorDialog.ui" line="14"/> - <source>Error with file</source> - <translation>Dateifehler</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="20"/> - <source>Error</source> - <translation>Fehler</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="59"/> - <source>Size</source> - <translation>Größe</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="76"/> - <source>Modified</source> - <translation>Geändert</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="93"/> - <source>File name</source> - <translation>Dateiname</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="110"/> - <source>Destination</source> - <translation>Ziel</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="127"/> - <source>Folder</source> - <translation>Ordner</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="173"/> - <source>&Always perform this action</source> - <translation>&Aktion immer ausführen</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="193"/> - <source>Try in with elevated privileges</source> - <translation>Mit erweiterten Rechten versuchen</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="200"/> - <source>Put to bottom</source> - <translation>Ans Ende verschieben</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="207"/> - <source>Retry</source> - <translation>Wiederholen</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="214"/> - <source>&Skip</source> - <translation>Über&springen</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="221"/> - <source>&Cancel</source> - <translation>Abbrechen (&C)</translation> - </message> -</context> -<context> - <name>fileExistsDialog</name> - <message> - <location filename="../../fileExistsDialog.ui" line="14"/> - <source>The file exists</source> - <translation>Die Datei existiert</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="34"/> - <source>Source</source> - <translation>Quelle</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation>Ziel</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="82"/> - <location filename="../../fileExistsDialog.ui" line="170"/> - <source>Size</source> - <translation>Größe</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="99"/> - <location filename="../../fileExistsDialog.ui" line="187"/> - <source>Modified</source> - <translation>Geändert</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="116"/> - <location filename="../../fileExistsDialog.ui" line="204"/> - <source>File name</source> - <translation>Dateiname</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="133"/> - <location filename="../../fileExistsDialog.ui" line="221"/> - <source>Folder</source> - <translation>Ordner</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="277"/> - <source>Suggest new &name</source> - <translation>Neuen &Namen vorschlagen</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="288"/> - <source>&Always perform this action</source> - <translation>&Aktion immer ausführen</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="346"/> - <location filename="../../fileExistsDialog.ui" line="349"/> - <source>Overwrite if modification date differs</source> - <translation>Überschreiben, falls Änderungsdatum verschieden</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="308"/> - <source>&Rename</source> - <translation>Umbenennen (&R)</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="315"/> - <source>&Overwrite</source> - <translation>Überschreiben (&O)</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="325"/> - <source>&Skip</source> - <translation>Über&springen</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="332"/> - <source>&Cancel</source> - <translation>Abbrechen (&C)</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="341"/> - <source>Overwrite if newer</source> - <translation>Überschreiben, falls neuer</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="354"/> - <location filename="../../fileExistsDialog.ui" line="357"/> - <source>Overwrite if older</source> - <translation>Überschreiben, falls älter</translation> - </message> -</context> -<context> - <name>fileIsSameDialog</name> - <message> - <location filename="../../fileIsSameDialog.ui" line="40"/> - <source>Size</source> - <translation>Größe</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="110"/> - <source>Modified</source> - <translation>Geändert</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="70"/> - <source>File name</source> - <translation>Dateiname</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="14"/> - <source>The source and destination are same</source> - <translation>Quelle und Ziel sind gleich</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="90"/> - <source>Folder</source> - <translation>Ordner</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="159"/> - <source>Suggest new &name</source> - <translation>Neuen &Namen vorschlagen</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="170"/> - <source>&Always perform this action</source> - <translation>&Aktion immer ausführen</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="190"/> - <source>&Rename</source> - <translation>Umbenennen (&R)</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="197"/> - <source>&Skip</source> - <translation>Über&springen</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="204"/> - <source>&Cancel</source> - <translation>Abbrechen (&C)</translation> - </message> -</context> -<context> - <name>folderExistsDialog</name> - <message> - <location filename="../../folderExistsDialog.ui" line="34"/> - <source>Source</source> - <translation>Quelle</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation>Ziel</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="14"/> - <source>The source and destination is identical</source> - <translation>Quelle und Ziel sind identisch</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="82"/> - <location filename="../../folderExistsDialog.ui" line="150"/> - <source>Modified</source> - <translation>Geändert</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="99"/> - <location filename="../../folderExistsDialog.ui" line="160"/> - <source>Folder name</source> - <translation>Ordnername</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="116"/> - <location filename="../../folderExistsDialog.ui" line="184"/> - <source>Folder</source> - <translation>Ordner</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="227"/> - <source>Suggest new &name</source> - <translation>Neuen &Namen vorschlagen</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="238"/> - <source>&Always perform this action</source> - <translation>&Aktion immer ausführen</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="245"/> - <source>&Rename</source> - <translation>Umbenennen (&R)</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="252"/> - <source>Merge</source> - <translation>Fusionieren</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="259"/> - <source>Skip</source> - <translation>Überspringen</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="266"/> - <source>&Cancel</source> - <translation>Abbrechen (&C)</translation> - </message> -</context> -</TS> diff --git a/plugins/CopyEngine/Ultracopier/Languages/el/translation.ts b/plugins/CopyEngine/Ultracopier/Languages/el/translation.ts deleted file mode 100644 index e17b3f2..0000000 --- a/plugins/CopyEngine/Ultracopier/Languages/el/translation.ts +++ /dev/null @@ -1,1291 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE TS> -<TS version="2.1"> -<context> - <name>AvancedQFile</name> - <message> - <location filename="../../AvancedQFile.cpp" line="26"/> - <location filename="../../AvancedQFile.cpp" line="57"/> - <location filename="../../AvancedQFile.cpp" line="88"/> - <source>Not supported on this platform</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="40"/> - <source>Last modified date is wrong</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="71"/> - <source>Last access date is wrong</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="121"/> - <source>Unknown error: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="187"/> - <source>Unknown error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="133"/> - <source>Path conversion error</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>CopyEngine</name> - <message> - <location filename="../../CopyEngine.cpp" line="429"/> - <location filename="../../CopyEngine.cpp" line="451"/> - <source>The engine is forced to move, you can't copy with it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="462"/> - <location filename="../../CopyEngine.cpp" line="484"/> - <source>The engine is forced to copy, you can't move with it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Use the actual destination "%1"?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="732"/> - <source>The mode has been forced previously. This is an internal error, please report it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1062"/> - <location filename="../../CopyEngine.cpp" line="1065"/> - <location filename="../../CopyEngine.cpp" line="1070"/> - <location filename="../../CopyEngine.cpp" line="1074"/> - <source>Ask</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1063"/> - <location filename="../../CopyEngine.cpp" line="1067"/> - <location filename="../../CopyEngine.cpp" line="1071"/> - <location filename="../../CopyEngine.cpp" line="1075"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1066"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1068"/> - <location filename="../../CopyEngine.cpp" line="1080"/> - <source>Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1072"/> - <source>Put at the end</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1076"/> - <source>Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1077"/> - <source>Overwrite if different</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1078"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1079"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1082"/> - <source>Automatic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1083"/> - <source>Sequential</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1084"/> - <source>Parallel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>CopyEngineFactory</name> - <message> - <location filename="../../CopyEngineFactory.cpp" line="427"/> - <location filename="../../CopyEngineFactory.cpp" line="430"/> - <location filename="../../CopyEngineFactory.cpp" line="435"/> - <location filename="../../CopyEngineFactory.cpp" line="439"/> - <source>Ask</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="428"/> - <location filename="../../CopyEngineFactory.cpp" line="432"/> - <location filename="../../CopyEngineFactory.cpp" line="436"/> - <location filename="../../CopyEngineFactory.cpp" line="440"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="431"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="433"/> - <location filename="../../CopyEngineFactory.cpp" line="445"/> - <source>Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="437"/> - <source>Put at the end</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="441"/> - <source>Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="442"/> - <source>Overwrite if different</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="443"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="444"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="447"/> - <source>Automatic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="448"/> - <source>Sequential</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="449"/> - <source>Parallel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options engine is not loaded, can't access to the filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>DiskSpace</name> - <message> - <location filename="../../DiskSpace.ui" line="14"/> - <source>Disk space</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="24"/> - <source>You need more space on this drive to finish this transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="49"/> - <source>Continue</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="56"/> - <source>Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.cpp" line="23"/> - <source>Drives %1 have %2 available but need %3</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileErrorDialog</name> - <message> - <location filename="../../FileErrorDialog.cpp" line="54"/> - <source>Error on folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileErrorDialog.cpp" line="57"/> - <source>Folder name</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileExistsDialog</name> - <message> - <location filename="../../FileExistsDialog.cpp" line="137"/> - <source>%name% - copy%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="144"/> - <source>%name% - copy (%number%)%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileIsSameDialog</name> - <message> - <location filename="../../FileIsSameDialog.cpp" line="111"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="118"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FilterRules</name> - <message> - <location filename="../../FilterRules.ui" line="33"/> - <source>Search:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="43"/> - <source>Search type:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="51"/> - <source>Raw text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="56"/> - <source>Simplified regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="61"/> - <source>Perl's regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="69"/> - <source>Apply on:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="77"/> - <source>File</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="82"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="87"/> - <source>File and folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="125"/> - <source>The test string matches with the regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="102"/> - <source>Checking</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="115"/> - <source>Test string:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="17"/> - <source>Filters dialog</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="95"/> - <source>Whole string must match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="108"/> - <source>The regex is valid</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>Filters</name> - <message> - <location filename="../../Filters.ui" line="14"/> - <source>Filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="30"/> - <source>Exclusion filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="93"/> - <source>Inclusion filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="105"/> - <source>None = Include all</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="93"/> - <location filename="../../Filters.cpp" line="131"/> - <source>Raw text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="96"/> - <location filename="../../Filters.cpp" line="134"/> - <source>Simplified regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="99"/> - <location filename="../../Filters.cpp" line="137"/> - <source>Perl's regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="107"/> - <location filename="../../Filters.cpp" line="145"/> - <source>Only on file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="110"/> - <location filename="../../Filters.cpp" line="148"/> - <source>Only on folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="116"/> - <location filename="../../Filters.cpp" line="154"/> - <location filename="../../Filters.cpp" line="216"/> - <location filename="../../Filters.cpp" line="255"/> - <source>Full match</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FolderExistsDialog</name> - <message> - <location filename="../../FolderExistsDialog.cpp" line="57"/> - <source>Folder already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="122"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="131"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ListThread</name> - <message> - <location filename="../../ListThread.cpp" line="1487"/> - <location filename="../../ListThread.cpp" line="2419"/> - <source>Unable do to move or copy item into wrong forced mode: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1494"/> - <location filename="../../ListThread.cpp" line="2426"/> - <source>Unable to save the transfer list: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1510"/> - <source>Problem reading file, or file-size is 0</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1517"/> - <source>Wrong header: "%1"</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1526"/> - <source>The transfer list is in mixed mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1535"/> - <source>The transfer list is in copy mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1541"/> - <source>The transfer list is in move mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1604"/> - <source>Some errors have been found during the line parsing</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1612"/> - <source>Unable to open the transfer list: %1</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>MkPath</name> - <message> - <location filename="../../MkPath.cpp" line="142"/> - <source>Unable to create the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="155"/> - <source>The source folder don't exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="183"/> - <source>Unable to temporary rename the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="206"/> - <source>Unable to do the final real move the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="233"/> - <source>Unable to move the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="93"/> - <location filename="../../MkPath.cpp" line="276"/> - <source>Unable to remove</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ReadThread</name> - <message> - <location filename="../../ReadThread.cpp" line="59"/> - <source>Internal error, please report it!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="188"/> - <source>Internal error reading the source file:block size out of range</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="196"/> - <location filename="../../ReadThread.cpp" line="420"/> - <source>Unable to read the source file: </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="237"/> - <location filename="../../ReadThread.cpp" line="468"/> - <source>File truncated during the read, possible data change</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>RenamingRules</name> - <message> - <location filename="../../RenamingRules.ui" line="35"/> - <source>First renaming</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="41"/> - <source>%name% - copy%suffix%</source> - <extracomment>%name% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="57"/> - <source>%name% - copy (%number%)%suffix%</source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="67"/> - <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name, <span style=" font-weight:600;">%number%</span> for the extra number, <span style=" font-weight:600;">%suffix%</span> file suffix</p></body></html></source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="51"/> - <source>Second renaming</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="39"/> - <location filename="../../RenamingRules.cpp" line="62"/> - <source>%1 - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="43"/> - <location filename="../../RenamingRules.cpp" line="73"/> - <source>%1 - copy (%2)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="14"/> - <source>Renaming rules</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ScanFileOrFolder</name> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="274"/> - <source>Blacklisted folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="338"/> - <source>%1 - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="345"/> - <source>%1 - copy (%2)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="401"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="408"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="444"/> - <source>This is not a folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="446"/> - <source>The folder does exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="448"/> - <source>The folder is not readable</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="459"/> - <source>Problem with name encoding</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>TransferThread</name> - <message> - <location filename="../../TransferThread.cpp" line="244"/> - <location filename="../../TransferThread.cpp" line="673"/> - <location filename="../../TransferThread.cpp" line="745"/> - <location filename="../../TransferThread.cpp" line="1315"/> - <source>File not found</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="346"/> - <location filename="../../TransferThread.cpp" line="363"/> - <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="421"/> - <location filename="../../TransferThread.cpp" line="444"/> - <source>Internal error: Already opening</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="586"/> - <source>Drive %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="588"/> - <source>Unknown folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="592"/> - <source>root</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="645"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="652"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="711"/> - <location filename="../../TransferThread.cpp" line="826"/> - <source>The source file doesn't exist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="751"/> - <location filename="../../TransferThread.cpp" line="838"/> - <source>Unable to do the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="787"/> - <source>The source doesn't exist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="832"/> - <source>Another file exists at same place</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1134"/> - <source>The checksums do not match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1224"/> - <source>Internal error: The destination is not closed</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1239"/> - <source>Internal error: The size transfered doesn't match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1250"/> - <source>Internal error: The buffer is not empty</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1315"/> - <location filename="../../TransferThread.cpp" line="1333"/> - <location filename="../../TransferThread.cpp" line="1348"/> - <source>Unable to change the date</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>WriteThread</name> - <message> - <location filename="../../WriteThread.cpp" line="83"/> - <source>Path resolution error (Empty path)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="277"/> - <source>Internal error, please report it!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="680"/> - <source>Unable to read the source file: </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="705"/> - <source>File truncated during read, possible data change</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>copyEngineOptions</name> - <message> - <location filename="../../copyEngineOptions.ui" line="44"/> - <source>Transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="53"/> - <source>Move the whole folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="60"/> - <source>Transfer the file rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="70"/> - <source>Keep the file date</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="83"/> - <source>Autostart the transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="90"/> - <location filename="../../copyEngineOptions.ui" line="110"/> - <source>Less performance if checked</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="113"/> - <source>Follow the strict order</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="139"/> - <source>Error and collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="145"/> - <source>When folder error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="155"/> - <source>When file error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="181"/> - <source>When file collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="241"/> - <source>When folder collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="272"/> - <source>Check if destination folder exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="279"/> - <source>Renaming rules</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="299"/> - <source>Delete partially transferred files</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="312"/> - <source>Rename the original destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="343"/> - <source>Control</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="349"/> - <source>Checksum</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="358"/> - <source>Only after error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="365"/> - <source>Ignore if impossible</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="382"/> - <source>Verify checksums</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="414"/> - <source>Performance</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="420"/> - <source>Parallel buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="427"/> - <location filename="../../copyEngineOptions.ui" line="440"/> - <location filename="../../copyEngineOptions.ui" line="453"/> - <location filename="../../copyEngineOptions.ui" line="490"/> - <location filename="../../copyEngineOptions.ui" line="559"/> - <source>KB</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="469"/> - <source>Block size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="476"/> - <source>Sequential buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="483"/> - <source>Enable OS buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="506"/> - <source>OS buffer only if smaller than</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="513"/> - <source>Transfer algorithm</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="552"/> - <source>Parallelize if smaller than</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="582"/> - <source>Inode threads (unsafe > 1)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="589"/> - <location filename="../../copyEngineOptions.ui" line="599"/> - <source>More cpu, but better organisation on the disk</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="602"/> - <source>Order the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="618"/> - <source>Misc</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="624"/> - <source>Check the disk space</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="634"/> - <source>Use this folder when destination is not set</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="646"/> - <source>Browse</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="668"/> - <source>Filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileErrorDialog</name> - <message> - <location filename="../../fileErrorDialog.ui" line="14"/> - <source>Error with file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="20"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="59"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="76"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="93"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="110"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="127"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="173"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="193"/> - <source>Try in with elevated privileges</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="200"/> - <source>Put to bottom</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="207"/> - <source>Retry</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="214"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="221"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileExistsDialog</name> - <message> - <location filename="../../fileExistsDialog.ui" line="14"/> - <source>The file exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="34"/> - <source>Source</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="82"/> - <location filename="../../fileExistsDialog.ui" line="170"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="99"/> - <location filename="../../fileExistsDialog.ui" line="187"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="116"/> - <location filename="../../fileExistsDialog.ui" line="204"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="133"/> - <location filename="../../fileExistsDialog.ui" line="221"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="277"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="288"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="346"/> - <location filename="../../fileExistsDialog.ui" line="349"/> - <source>Overwrite if modification date differs</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="308"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="315"/> - <source>&Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="325"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="332"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="341"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="354"/> - <location filename="../../fileExistsDialog.ui" line="357"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileIsSameDialog</name> - <message> - <location filename="../../fileIsSameDialog.ui" line="40"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="110"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="70"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="14"/> - <source>The source and destination are same</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="90"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="159"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="170"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="190"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="197"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="204"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>folderExistsDialog</name> - <message> - <location filename="../../folderExistsDialog.ui" line="34"/> - <source>Source</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="14"/> - <source>The source and destination is identical</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="82"/> - <location filename="../../folderExistsDialog.ui" line="150"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="99"/> - <location filename="../../folderExistsDialog.ui" line="160"/> - <source>Folder name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="116"/> - <location filename="../../folderExistsDialog.ui" line="184"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="227"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="238"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="245"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="252"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="259"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="266"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -</TS> diff --git a/plugins/CopyEngine/Ultracopier/Languages/en/translation.ts b/plugins/CopyEngine/Ultracopier/Languages/en/translation.ts deleted file mode 100644 index 223e40a..0000000 --- a/plugins/CopyEngine/Ultracopier/Languages/en/translation.ts +++ /dev/null @@ -1,1291 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE TS> -<TS version="2.1" language="en"> -<context> - <name>AvancedQFile</name> - <message> - <location filename="../../AvancedQFile.cpp" line="26"/> - <location filename="../../AvancedQFile.cpp" line="57"/> - <location filename="../../AvancedQFile.cpp" line="88"/> - <source>Not supported on this platform</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="40"/> - <source>Last modified date is wrong</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="71"/> - <source>Last access date is wrong</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="121"/> - <source>Unknown error: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="187"/> - <source>Unknown error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="133"/> - <source>Path conversion error</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>CopyEngine</name> - <message> - <location filename="../../CopyEngine.cpp" line="429"/> - <location filename="../../CopyEngine.cpp" line="451"/> - <source>The engine is forced to move, you can't copy with it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="462"/> - <location filename="../../CopyEngine.cpp" line="484"/> - <source>The engine is forced to copy, you can't move with it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Use the actual destination "%1"?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="732"/> - <source>The mode has been forced previously. This is an internal error, please report it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1062"/> - <location filename="../../CopyEngine.cpp" line="1065"/> - <location filename="../../CopyEngine.cpp" line="1070"/> - <location filename="../../CopyEngine.cpp" line="1074"/> - <source>Ask</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1063"/> - <location filename="../../CopyEngine.cpp" line="1067"/> - <location filename="../../CopyEngine.cpp" line="1071"/> - <location filename="../../CopyEngine.cpp" line="1075"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1066"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1068"/> - <location filename="../../CopyEngine.cpp" line="1080"/> - <source>Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1072"/> - <source>Put at the end</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1076"/> - <source>Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1077"/> - <source>Overwrite if different</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1078"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1079"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1082"/> - <source>Automatic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1083"/> - <source>Sequential</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1084"/> - <source>Parallel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>CopyEngineFactory</name> - <message> - <location filename="../../CopyEngineFactory.cpp" line="427"/> - <location filename="../../CopyEngineFactory.cpp" line="430"/> - <location filename="../../CopyEngineFactory.cpp" line="435"/> - <location filename="../../CopyEngineFactory.cpp" line="439"/> - <source>Ask</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="428"/> - <location filename="../../CopyEngineFactory.cpp" line="432"/> - <location filename="../../CopyEngineFactory.cpp" line="436"/> - <location filename="../../CopyEngineFactory.cpp" line="440"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="431"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="433"/> - <location filename="../../CopyEngineFactory.cpp" line="445"/> - <source>Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="437"/> - <source>Put at the end</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="441"/> - <source>Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="442"/> - <source>Overwrite if different</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="443"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="444"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="447"/> - <source>Automatic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="448"/> - <source>Sequential</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="449"/> - <source>Parallel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options engine is not loaded, can't access to the filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>DiskSpace</name> - <message> - <location filename="../../DiskSpace.ui" line="14"/> - <source>Disk space</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="24"/> - <source>You need more space on this drive to finish this transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="49"/> - <source>Continue</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="56"/> - <source>Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.cpp" line="23"/> - <source>Drives %1 have %2 available but need %3</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileErrorDialog</name> - <message> - <location filename="../../FileErrorDialog.cpp" line="54"/> - <source>Error on folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileErrorDialog.cpp" line="57"/> - <source>Folder name</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileExistsDialog</name> - <message> - <location filename="../../FileExistsDialog.cpp" line="137"/> - <source>%name% - copy%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="144"/> - <source>%name% - copy (%number%)%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileIsSameDialog</name> - <message> - <location filename="../../FileIsSameDialog.cpp" line="111"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="118"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FilterRules</name> - <message> - <location filename="../../FilterRules.ui" line="17"/> - <source>Filters dialog</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="33"/> - <source>Search:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="43"/> - <source>Search type:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="51"/> - <source>Raw text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="56"/> - <source>Simplified regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="61"/> - <source>Perl's regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="69"/> - <source>Apply on:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="77"/> - <source>File</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="82"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="87"/> - <source>File and folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="95"/> - <source>Whole string must match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="125"/> - <source>The test string matches with the regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="102"/> - <source>Checking</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="108"/> - <source>The regex is valid</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="115"/> - <source>Test string:</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>Filters</name> - <message> - <location filename="../../Filters.ui" line="14"/> - <source>Filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="30"/> - <source>Exclusion filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="93"/> - <source>Inclusion filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="105"/> - <source>None = Include all</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="93"/> - <location filename="../../Filters.cpp" line="131"/> - <source>Raw text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="96"/> - <location filename="../../Filters.cpp" line="134"/> - <source>Simplified regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="99"/> - <location filename="../../Filters.cpp" line="137"/> - <source>Perl's regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="107"/> - <location filename="../../Filters.cpp" line="145"/> - <source>Only on file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="110"/> - <location filename="../../Filters.cpp" line="148"/> - <source>Only on folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="116"/> - <location filename="../../Filters.cpp" line="154"/> - <location filename="../../Filters.cpp" line="216"/> - <location filename="../../Filters.cpp" line="255"/> - <source>Full match</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FolderExistsDialog</name> - <message> - <location filename="../../FolderExistsDialog.cpp" line="57"/> - <source>Folder already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="122"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="131"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ListThread</name> - <message> - <location filename="../../ListThread.cpp" line="1487"/> - <location filename="../../ListThread.cpp" line="2419"/> - <source>Unable do to move or copy item into wrong forced mode: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1494"/> - <location filename="../../ListThread.cpp" line="2426"/> - <source>Unable to save the transfer list: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1510"/> - <source>Problem reading file, or file-size is 0</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1517"/> - <source>Wrong header: "%1"</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1526"/> - <source>The transfer list is in mixed mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1535"/> - <source>The transfer list is in copy mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1541"/> - <source>The transfer list is in move mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1604"/> - <source>Some errors have been found during the line parsing</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1612"/> - <source>Unable to open the transfer list: %1</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>MkPath</name> - <message> - <location filename="../../MkPath.cpp" line="142"/> - <source>Unable to create the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="155"/> - <source>The source folder don't exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="183"/> - <source>Unable to temporary rename the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="206"/> - <source>Unable to do the final real move the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="233"/> - <source>Unable to move the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="93"/> - <location filename="../../MkPath.cpp" line="276"/> - <source>Unable to remove</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ReadThread</name> - <message> - <location filename="../../ReadThread.cpp" line="59"/> - <source>Internal error, please report it!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="188"/> - <source>Internal error reading the source file:block size out of range</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="196"/> - <location filename="../../ReadThread.cpp" line="420"/> - <source>Unable to read the source file: </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="237"/> - <location filename="../../ReadThread.cpp" line="468"/> - <source>File truncated during the read, possible data change</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>RenamingRules</name> - <message> - <location filename="../../RenamingRules.ui" line="14"/> - <source>Renaming rules</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="35"/> - <source>First renaming</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="41"/> - <source>%name% - copy%suffix%</source> - <extracomment>%name% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="57"/> - <source>%name% - copy (%number%)%suffix%</source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="67"/> - <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name, <span style=" font-weight:600;">%number%</span> for the extra number, <span style=" font-weight:600;">%suffix%</span> file suffix</p></body></html></source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="51"/> - <source>Second renaming</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="39"/> - <location filename="../../RenamingRules.cpp" line="62"/> - <source>%1 - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="43"/> - <location filename="../../RenamingRules.cpp" line="73"/> - <source>%1 - copy (%2)</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ScanFileOrFolder</name> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="274"/> - <source>Blacklisted folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="338"/> - <source>%1 - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="345"/> - <source>%1 - copy (%2)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="401"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="408"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="444"/> - <source>This is not a folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="446"/> - <source>The folder does exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="448"/> - <source>The folder is not readable</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="459"/> - <source>Problem with name encoding</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>TransferThread</name> - <message> - <location filename="../../TransferThread.cpp" line="244"/> - <location filename="../../TransferThread.cpp" line="673"/> - <location filename="../../TransferThread.cpp" line="745"/> - <location filename="../../TransferThread.cpp" line="1315"/> - <source>File not found</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="346"/> - <location filename="../../TransferThread.cpp" line="363"/> - <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="421"/> - <location filename="../../TransferThread.cpp" line="444"/> - <source>Internal error: Already opening</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="586"/> - <source>Drive %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="588"/> - <source>Unknown folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="592"/> - <source>root</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="645"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="652"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="711"/> - <location filename="../../TransferThread.cpp" line="826"/> - <source>The source file doesn't exist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="751"/> - <location filename="../../TransferThread.cpp" line="838"/> - <source>Unable to do the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="787"/> - <source>The source doesn't exist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="832"/> - <source>Another file exists at same place</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1134"/> - <source>The checksums do not match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1224"/> - <source>Internal error: The destination is not closed</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1239"/> - <source>Internal error: The size transfered doesn't match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1250"/> - <source>Internal error: The buffer is not empty</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1315"/> - <location filename="../../TransferThread.cpp" line="1333"/> - <location filename="../../TransferThread.cpp" line="1348"/> - <source>Unable to change the date</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>WriteThread</name> - <message> - <location filename="../../WriteThread.cpp" line="83"/> - <source>Path resolution error (Empty path)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="277"/> - <source>Internal error, please report it!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="680"/> - <source>Unable to read the source file: </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="705"/> - <source>File truncated during read, possible data change</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>copyEngineOptions</name> - <message> - <location filename="../../copyEngineOptions.ui" line="44"/> - <source>Transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="53"/> - <source>Move the whole folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="60"/> - <source>Transfer the file rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="70"/> - <source>Keep the file date</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="83"/> - <source>Autostart the transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="90"/> - <location filename="../../copyEngineOptions.ui" line="110"/> - <source>Less performance if checked</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="113"/> - <source>Follow the strict order</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="139"/> - <source>Error and collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="145"/> - <source>When folder error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="155"/> - <source>When file error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="181"/> - <source>When file collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="241"/> - <source>When folder collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="272"/> - <source>Check if destination folder exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="279"/> - <source>Renaming rules</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="299"/> - <source>Delete partially transferred files</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="312"/> - <source>Rename the original destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="343"/> - <source>Control</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="349"/> - <source>Checksum</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="358"/> - <source>Only after error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="365"/> - <source>Ignore if impossible</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="382"/> - <source>Verify checksums</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="414"/> - <source>Performance</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="420"/> - <source>Parallel buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="427"/> - <location filename="../../copyEngineOptions.ui" line="440"/> - <location filename="../../copyEngineOptions.ui" line="453"/> - <location filename="../../copyEngineOptions.ui" line="490"/> - <location filename="../../copyEngineOptions.ui" line="559"/> - <source>KB</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="469"/> - <source>Block size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="476"/> - <source>Sequential buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="483"/> - <source>Enable OS buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="506"/> - <source>OS buffer only if smaller than</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="513"/> - <source>Transfer algorithm</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="552"/> - <source>Parallelize if smaller than</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="582"/> - <source>Inode threads (unsafe > 1)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="589"/> - <location filename="../../copyEngineOptions.ui" line="599"/> - <source>More cpu, but better organisation on the disk</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="602"/> - <source>Order the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="618"/> - <source>Misc</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="624"/> - <source>Check the disk space</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="634"/> - <source>Use this folder when destination is not set</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="646"/> - <source>Browse</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="668"/> - <source>Filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileErrorDialog</name> - <message> - <location filename="../../fileErrorDialog.ui" line="14"/> - <source>Error with file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="20"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="59"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="76"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="93"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="110"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="127"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="173"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="193"/> - <source>Try in with elevated privileges</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="200"/> - <source>Put to bottom</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="207"/> - <source>Retry</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="214"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="221"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileExistsDialog</name> - <message> - <location filename="../../fileExistsDialog.ui" line="14"/> - <source>The file exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="34"/> - <source>Source</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="82"/> - <location filename="../../fileExistsDialog.ui" line="170"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="99"/> - <location filename="../../fileExistsDialog.ui" line="187"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="116"/> - <location filename="../../fileExistsDialog.ui" line="204"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="133"/> - <location filename="../../fileExistsDialog.ui" line="221"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="277"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="288"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="346"/> - <location filename="../../fileExistsDialog.ui" line="349"/> - <source>Overwrite if modification date differs</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="308"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="315"/> - <source>&Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="325"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="332"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="341"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="354"/> - <location filename="../../fileExistsDialog.ui" line="357"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileIsSameDialog</name> - <message> - <location filename="../../fileIsSameDialog.ui" line="40"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="110"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="70"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="14"/> - <source>The source and destination are same</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="90"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="159"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="170"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="190"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="197"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="204"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>folderExistsDialog</name> - <message> - <location filename="../../folderExistsDialog.ui" line="34"/> - <source>Source</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="14"/> - <source>The source and destination is identical</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="82"/> - <location filename="../../folderExistsDialog.ui" line="150"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="99"/> - <location filename="../../folderExistsDialog.ui" line="160"/> - <source>Folder name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="116"/> - <location filename="../../folderExistsDialog.ui" line="184"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="227"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="238"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="245"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="252"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="259"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="266"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -</TS> diff --git a/plugins/CopyEngine/Ultracopier/Languages/es/translation.ts b/plugins/CopyEngine/Ultracopier/Languages/es/translation.ts deleted file mode 100644 index d69e5eb..0000000 --- a/plugins/CopyEngine/Ultracopier/Languages/es/translation.ts +++ /dev/null @@ -1,1291 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE TS> -<TS version="2.1" language="es" sourcelanguage="en"> -<context> - <name>AvancedQFile</name> - <message> - <location filename="../../AvancedQFile.cpp" line="26"/> - <location filename="../../AvancedQFile.cpp" line="57"/> - <location filename="../../AvancedQFile.cpp" line="88"/> - <source>Not supported on this platform</source> - <translation>No es compatible con esta plataforma</translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="40"/> - <source>Last modified date is wrong</source> - <translation>Fecha de última modificación es incorrecto</translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="71"/> - <source>Last access date is wrong</source> - <translation>Fecha de último acceso es incorrecto</translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="121"/> - <source>Unknown error: %1</source> - <translation>Error desconocido: %1</translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="187"/> - <source>Unknown error</source> - <translation>Error desconocido</translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="133"/> - <source>Path conversion error</source> - <translation>Error de conversión de Sendero</translation> - </message> -</context> -<context> - <name>CopyEngine</name> - <message> - <location filename="../../CopyEngine.cpp" line="429"/> - <location filename="../../CopyEngine.cpp" line="451"/> - <source>The engine is forced to move, you can't copy with it</source> - <translation>El motor se ve obligado a moverse, no se puede copiar con ella</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="462"/> - <location filename="../../CopyEngine.cpp" line="484"/> - <source>The engine is forced to copy, you can't move with it</source> - <translation>El motor se ve obligado a copiar, no te puedes mover con él</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Destination</source> - <translation>Destino</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Use the actual destination "%1"?</source> - <translation>Utilice el destino "%1" actual?</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="732"/> - <source>The mode has been forced previously. This is an internal error, please report it</source> - <translation>El modo se ha visto obligado previamente. Este es un error interno, por favor repórtelo</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1062"/> - <location filename="../../CopyEngine.cpp" line="1065"/> - <location filename="../../CopyEngine.cpp" line="1070"/> - <location filename="../../CopyEngine.cpp" line="1074"/> - <source>Ask</source> - <translation>Pedir</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1063"/> - <location filename="../../CopyEngine.cpp" line="1067"/> - <location filename="../../CopyEngine.cpp" line="1071"/> - <location filename="../../CopyEngine.cpp" line="1075"/> - <source>Skip</source> - <translation>Omitir</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1066"/> - <source>Merge</source> - <translation>Unir</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1068"/> - <location filename="../../CopyEngine.cpp" line="1080"/> - <source>Rename</source> - <translation>Cambiar el nombre</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1072"/> - <source>Put at the end</source> - <translation>Ponga al final</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1076"/> - <source>Overwrite</source> - <translation>Sobrescribir</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1077"/> - <source>Overwrite if different</source> - <translation>Sobrescribir si es diferente</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1078"/> - <source>Overwrite if newer</source> - <translation>Sobrescribir si nuevo</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1079"/> - <source>Overwrite if older</source> - <translation>Sobrescribir si es mayor</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1082"/> - <source>Automatic</source> - <translation>Automático</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1083"/> - <source>Sequential</source> - <translation>Secuencial</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1084"/> - <source>Parallel</source> - <translation>Paralelo</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options error</source> - <translation>error Opciones</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation>Opciones del motor no está cargado. No es posible acceder a los filtros</translation> - </message> -</context> -<context> - <name>CopyEngineFactory</name> - <message> - <location filename="../../CopyEngineFactory.cpp" line="427"/> - <location filename="../../CopyEngineFactory.cpp" line="430"/> - <location filename="../../CopyEngineFactory.cpp" line="435"/> - <location filename="../../CopyEngineFactory.cpp" line="439"/> - <source>Ask</source> - <translation>Pedir</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="428"/> - <location filename="../../CopyEngineFactory.cpp" line="432"/> - <location filename="../../CopyEngineFactory.cpp" line="436"/> - <location filename="../../CopyEngineFactory.cpp" line="440"/> - <source>Skip</source> - <translation>Omitir</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="431"/> - <source>Merge</source> - <translation>Unir</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="433"/> - <location filename="../../CopyEngineFactory.cpp" line="445"/> - <source>Rename</source> - <translation>Cambiar el nombre</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="437"/> - <source>Put at the end</source> - <translation>Ponga al final</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="441"/> - <source>Overwrite</source> - <translation>Sobrescribir</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="442"/> - <source>Overwrite if different</source> - <translation>Sobrescribir si es diferente</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="443"/> - <source>Overwrite if newer</source> - <translation>Sobrescribir si nuevo</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="444"/> - <source>Overwrite if older</source> - <translation>Sobrescribir si es mayor</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="447"/> - <source>Automatic</source> - <translation>Automático</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="448"/> - <source>Sequential</source> - <translation>Secuencial</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="449"/> - <source>Parallel</source> - <translation>Paralelo</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options error</source> - <translation>error Opciones</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation>Opciones del motor no está cargado. No es posible acceder a los filtros</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options engine is not loaded, can't access to the filters</source> - <translation>Opciones del motor no está cargado, no se puede acceder a los filtros</translation> - </message> -</context> -<context> - <name>DiskSpace</name> - <message> - <location filename="../../DiskSpace.ui" line="14"/> - <source>Disk space</source> - <translation>Espacio en disco</translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="24"/> - <source>You need more space on this drive to finish this transfer</source> - <translation>Necesita más espacio en esta unidad para terminar esta transferencia</translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="49"/> - <source>Continue</source> - <translation>Continuar</translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="56"/> - <source>Cancel</source> - <translation>Cancelar</translation> - </message> - <message> - <location filename="../../DiskSpace.cpp" line="23"/> - <source>Drives %1 have %2 available but need %3</source> - <translation>Drives %1 tienen %2 disponible, pero necesitan %3</translation> - </message> -</context> -<context> - <name>FileErrorDialog</name> - <message> - <location filename="../../FileErrorDialog.cpp" line="54"/> - <source>Error on folder</source> - <translation>Error en la carpeta</translation> - </message> - <message> - <location filename="../../FileErrorDialog.cpp" line="57"/> - <source>Folder name</source> - <translation>Nombre de la carpeta</translation> - </message> -</context> -<context> - <name>FileExistsDialog</name> - <message> - <location filename="../../FileExistsDialog.cpp" line="137"/> - <source>%name% - copy%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="144"/> - <source>%name% - copy (%number%)%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Error</source> - <translation>Error</translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation>Trate de cambiar el nombre con el uso de caracteres especiales</translation> - </message> -</context> -<context> - <name>FileIsSameDialog</name> - <message> - <location filename="../../FileIsSameDialog.cpp" line="111"/> - <source>%name% - copy</source> - <translation type="unfinished">%name% - copia</translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="118"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished">%name% - copia (%number%)</translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Error</source> - <translation>Error</translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Try rename with using special characters</source> - <translation>Trate de cambiar el nombre con el uso de caracteres especiales</translation> - </message> -</context> -<context> - <name>FilterRules</name> - <message> - <location filename="../../FilterRules.ui" line="33"/> - <source>Search:</source> - <translation>Buscar:</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="43"/> - <source>Search type:</source> - <translation>Tipo de búsqueda:</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="51"/> - <source>Raw text</source> - <translation>texto Fuente</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="56"/> - <source>Simplified regex</source> - <translation>Regex simplificado</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="61"/> - <source>Perl's regex</source> - <translation>Perl's regex</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="69"/> - <source>Apply on:</source> - <translation>Aplicar sobre:</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="77"/> - <source>File</source> - <translation>Archivos</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="82"/> - <source>Folder</source> - <translation>Carpeta</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="87"/> - <source>File and folder</source> - <translation>Archivos y carpeta</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="125"/> - <source>The test string matches with the regex</source> - <translation>La cadena de prueba coincide con la expresión regular</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="102"/> - <source>Checking</source> - <translation>Verification</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="115"/> - <source>Test string:</source> - <translation>Prueba de la cuerda:</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="17"/> - <source>Filters dialog</source> - <translation>Filtros de diálogo</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="95"/> - <source>Whole string must match</source> - <translation>Todo cadena debe coincidir</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="108"/> - <source>The regex is valid</source> - <translation>La expresión regular es válido</translation> - </message> -</context> -<context> - <name>Filters</name> - <message> - <location filename="../../Filters.ui" line="14"/> - <source>Filters</source> - <translation>Filtros</translation> - </message> - <message> - <location filename="../../Filters.ui" line="30"/> - <source>Exclusion filters</source> - <translation>Filtros de exclusión</translation> - </message> - <message> - <location filename="../../Filters.ui" line="93"/> - <source>Inclusion filters</source> - <translation>Filtros de inclusión</translation> - </message> - <message> - <location filename="../../Filters.ui" line="105"/> - <source>None = Include all</source> - <translation>Ninguno = Incluya todos los</translation> - </message> - <message> - <location filename="../../Filters.cpp" line="93"/> - <location filename="../../Filters.cpp" line="131"/> - <source>Raw text</source> - <translation>texto Fuente</translation> - </message> - <message> - <location filename="../../Filters.cpp" line="96"/> - <location filename="../../Filters.cpp" line="134"/> - <source>Simplified regex</source> - <translation>Simplificado regex</translation> - </message> - <message> - <location filename="../../Filters.cpp" line="99"/> - <location filename="../../Filters.cpp" line="137"/> - <source>Perl's regex</source> - <translation>Perl's regex</translation> - </message> - <message> - <location filename="../../Filters.cpp" line="107"/> - <location filename="../../Filters.cpp" line="145"/> - <source>Only on file</source> - <translation>Sólo en el archivo</translation> - </message> - <message> - <location filename="../../Filters.cpp" line="110"/> - <location filename="../../Filters.cpp" line="148"/> - <source>Only on folder</source> - <translation>Sólo en la carpeta</translation> - </message> - <message> - <location filename="../../Filters.cpp" line="116"/> - <location filename="../../Filters.cpp" line="154"/> - <location filename="../../Filters.cpp" line="216"/> - <location filename="../../Filters.cpp" line="255"/> - <source>Full match</source> - <translation>Partido completo</translation> - </message> -</context> -<context> - <name>FolderExistsDialog</name> - <message> - <location filename="../../FolderExistsDialog.cpp" line="57"/> - <source>Folder already exists</source> - <translation>Carpeta ya existe</translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="122"/> - <source>%name% - copy</source> - <translation type="unfinished">%name% - copia</translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="131"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished">%name% - copia (%number%)</translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Error</source> - <translation>Error</translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Try rename with using special characters</source> - <translation>Trate de cambiar el nombre con el uso de caracteres especiales</translation> - </message> -</context> -<context> - <name>ListThread</name> - <message> - <location filename="../../ListThread.cpp" line="1487"/> - <location filename="../../ListThread.cpp" line="2419"/> - <source>Unable do to move or copy item into wrong forced mode: %1</source> - <translation>No se puede hacer para mover o copiar elemento en modo incorrecto obligado: %1</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1494"/> - <location filename="../../ListThread.cpp" line="2426"/> - <source>Unable to save the transfer list: %1</source> - <translation>No se puede guardar la lista de transferencias: %1</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1510"/> - <source>Problem reading file, or file-size is 0</source> - <translation>Problema al leer el archivo o archivos de tamaño es 0</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1517"/> - <source>Wrong header: "%1"</source> - <translation>Encabezado incorrecto: "%1"</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1526"/> - <source>The transfer list is in mixed mode, but this instance is not in this mode</source> - <translation>La lista de transferencia está en modo mixto, pero este caso no es de este modo</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1535"/> - <source>The transfer list is in copy mode, but this instance is not in this mode</source> - <translation>La lista de transferencia está en el modo de copia, pero esta instancia no está en este modo</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1541"/> - <source>The transfer list is in move mode, but this instance is not in this mode</source> - <translation>La lista de transferencia es el modo de desplazamiento, pero esta instancia no está en este modo</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1604"/> - <source>Some errors have been found during the line parsing</source> - <translation>Algunos errores han sido encontrados durante el análisis de línea</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1612"/> - <source>Unable to open the transfer list: %1</source> - <translation>No se puede abrir la lista de transferencias: %1</translation> - </message> -</context> -<context> - <name>MkPath</name> - <message> - <location filename="../../MkPath.cpp" line="142"/> - <source>Unable to create the folder</source> - <translation>No se puede crear la carpeta</translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="155"/> - <source>The source folder don't exists</source> - <translation>La carpeta de origen no existe</translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="183"/> - <source>Unable to temporary rename the folder</source> - <translation>No es posible cambiar el nombre de la carpeta temporal</translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="206"/> - <source>Unable to do the final real move the folder</source> - <translation>No se puede hacer el movimiento final real de la carpeta</translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="233"/> - <source>Unable to move the folder</source> - <translation>No se puede mover la carpeta</translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="93"/> - <location filename="../../MkPath.cpp" line="276"/> - <source>Unable to remove</source> - <translation>No se puede eliminar</translation> - </message> -</context> -<context> - <name>ReadThread</name> - <message> - <location filename="../../ReadThread.cpp" line="59"/> - <source>Internal error, please report it!</source> - <translation>Error interno, por favor informe de ello!</translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="188"/> - <source>Internal error reading the source file:block size out of range</source> - <translation>Error interno de leer el archivo de origen: tamaño de bloque fuera de rango</translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="196"/> - <location filename="../../ReadThread.cpp" line="420"/> - <source>Unable to read the source file: </source> - <translation>No se puede leer el archivo de origen: </translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="237"/> - <location filename="../../ReadThread.cpp" line="468"/> - <source>File truncated during the read, possible data change</source> - <translation>Archivo truncada durante el cambio de lectura, los datos posibles</translation> - </message> -</context> -<context> - <name>RenamingRules</name> - <message> - <location filename="../../RenamingRules.ui" line="35"/> - <source>First renaming</source> - <translation>En primer lugar el cambio de nombre</translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="41"/> - <source>%name% - copy%suffix%</source> - <extracomment>%name% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="57"/> - <source>%name% - copy (%number%)%suffix%</source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="67"/> - <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name, <span style=" font-weight:600;">%number%</span> for the extra number, <span style=" font-weight:600;">%suffix%</span> file suffix</p></body></html></source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="51"/> - <source>Second renaming</source> - <translation>En segundo lugar el cambio de nombre</translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="39"/> - <location filename="../../RenamingRules.cpp" line="62"/> - <source>%1 - copy</source> - <translation>%1 - copia</translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="43"/> - <location filename="../../RenamingRules.cpp" line="73"/> - <source>%1 - copy (%2)</source> - <translation>%1 - copia (%2)</translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="14"/> - <source>Renaming rules</source> - <translation>Reglas de Cambio de nombre</translation> - </message> -</context> -<context> - <name>ScanFileOrFolder</name> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="274"/> - <source>Blacklisted folder</source> - <translation>Carpeta de la lista negra</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="338"/> - <source>%1 - copy</source> - <translation>%1 - copia</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="345"/> - <source>%1 - copy (%2)</source> - <translation>%1 - copia (%2)</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="401"/> - <source>%name% - copy</source> - <translation type="unfinished">%name% - copia</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="408"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished">%name% - copia (%number%)</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="444"/> - <source>This is not a folder</source> - <translation>Esto no es una carpeta</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="446"/> - <source>The folder does exists</source> - <translation>La carpeta no existe</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="448"/> - <source>The folder is not readable</source> - <translation>La carpeta no se puede leer</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="459"/> - <source>Problem with name encoding</source> - <translation>Problema con codificación de nombres</translation> - </message> -</context> -<context> - <name>TransferThread</name> - <message> - <location filename="../../TransferThread.cpp" line="244"/> - <location filename="../../TransferThread.cpp" line="673"/> - <location filename="../../TransferThread.cpp" line="745"/> - <location filename="../../TransferThread.cpp" line="1315"/> - <source>File not found</source> - <translation>Archivo no encontrado</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="346"/> - <location filename="../../TransferThread.cpp" line="363"/> - <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="421"/> - <location filename="../../TransferThread.cpp" line="444"/> - <source>Internal error: Already opening</source> - <translation type="unfinished">Error interno: Ya la apertura</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="586"/> - <source>Drive %1</source> - <translation type="unfinished">Drive %1</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="588"/> - <source>Unknown folder</source> - <translation type="unfinished">Desconocido carpeta</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="592"/> - <source>root</source> - <translation type="unfinished">raíz</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="787"/> - <source>The source doesn't exist</source> - <translation type="unfinished">La fuente no existe</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1315"/> - <location filename="../../TransferThread.cpp" line="1333"/> - <location filename="../../TransferThread.cpp" line="1348"/> - <source>Unable to change the date</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="711"/> - <location filename="../../TransferThread.cpp" line="826"/> - <source>The source file doesn't exist</source> - <translation type="unfinished">El archivo de origen no existe</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1134"/> - <source>The checksums do not match</source> - <translation type="unfinished">Las sumas de comprobación no coinciden</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1239"/> - <source>Internal error: The size transfered doesn't match</source> - <translation type="unfinished">Error interno: El tamaño transferido no coincide</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="751"/> - <location filename="../../TransferThread.cpp" line="838"/> - <source>Unable to do the folder</source> - <translation type="unfinished">Incapaz de hacer la carpeta</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation>Trate de cambiar el nombre con el uso de caracteres especiales</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="645"/> - <source>%name% - copy</source> - <translation type="unfinished">%name% - copia</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="652"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished">%name% - copia (%number%)</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="832"/> - <source>Another file exists at same place</source> - <translation type="unfinished">Otro archivo existe en el mismo lugar</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1224"/> - <source>Internal error: The destination is not closed</source> - <translation type="unfinished">Error interno: El destino no está cerrado</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1250"/> - <source>Internal error: The buffer is not empty</source> - <translation type="unfinished">Error interno: El buffer no está vacío</translation> - </message> -</context> -<context> - <name>WriteThread</name> - <message> - <location filename="../../WriteThread.cpp" line="83"/> - <source>Path resolution error (Empty path)</source> - <translation>Error de resolución de ruta (camino vacío)</translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="277"/> - <source>Internal error, please report it!</source> - <translation>Error interno, por favor informe de ello!</translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="680"/> - <source>Unable to read the source file: </source> - <translation>No se puede leer el archivo de origen: </translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="705"/> - <source>File truncated during read, possible data change</source> - <translation>Archivo truncado durante lectura, posible cambio de datos</translation> - </message> -</context> -<context> - <name>copyEngineOptions</name> - <message> - <location filename="../../copyEngineOptions.ui" line="44"/> - <source>Transfer</source> - <translation>Transferencia</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="53"/> - <source>Move the whole folder</source> - <translation>Mueva la carpeta completa</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="60"/> - <source>Transfer the file rights</source> - <translation>Transferencia de los derechos de archivo</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="70"/> - <source>Keep the file date</source> - <translation>Mantener la fecha de archivo</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="83"/> - <source>Autostart the transfer</source> - <translation>Inicio automático de la transferencia</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="90"/> - <location filename="../../copyEngineOptions.ui" line="110"/> - <source>Less performance if checked</source> - <translation>Si comprueba Menos rendimiento</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="113"/> - <source>Follow the strict order</source> - <translation>Siga el orden estricto</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="139"/> - <source>Error and collision</source> - <translation>Error y de la colisión</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="145"/> - <source>When folder error</source> - <translation>Cuando el error carpeta</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="155"/> - <source>When file error</source> - <translation>Cuando archivo error</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="181"/> - <source>When file collision</source> - <translation>Cuando archivo colisión</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="241"/> - <source>When folder collision</source> - <translation>Cuando la colisión carpeta</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="272"/> - <source>Check if destination folder exists</source> - <translation>Compruebe si existe la carpeta de destino</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="279"/> - <source>Renaming rules</source> - <translation>Reglas de Cambio de nombre</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="299"/> - <source>Delete partially transferred files</source> - <translation>Eliminar archivos parcialmente transferidos</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="312"/> - <source>Rename the original destination</source> - <translation>Cambie el nombre del destino original</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="343"/> - <source>Control</source> - <translation>Controlar</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="349"/> - <source>Checksum</source> - <translation>Suma de comprobación</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="358"/> - <source>Only after error</source> - <translation>Sólo después de un error</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="365"/> - <source>Ignore if impossible</source> - <translation>No haga caso si no es posible</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="382"/> - <source>Verify checksums</source> - <translation>Verifique checksums</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="414"/> - <source>Performance</source> - <translation>Rendimiento</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="420"/> - <source>Parallel buffer</source> - <translation>Búfer paralelo</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="427"/> - <location filename="../../copyEngineOptions.ui" line="440"/> - <location filename="../../copyEngineOptions.ui" line="453"/> - <location filename="../../copyEngineOptions.ui" line="490"/> - <location filename="../../copyEngineOptions.ui" line="559"/> - <source>KB</source> - <translation>KB</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="469"/> - <source>Block size</source> - <translation>Tamaño del bloque</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="476"/> - <source>Sequential buffer</source> - <translation>Tampón secuencial</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="483"/> - <source>Enable OS buffer</source> - <translation>Habilitar el OS de amortiguación</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="506"/> - <source>OS buffer only if smaller than</source> - <translation>OS de amortiguación sólo si menor que</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="513"/> - <source>Transfer algorithm</source> - <translation>Algoritmo de transferencia</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="552"/> - <source>Parallelize if smaller than</source> - <translation>Paralelice si más pequeño que</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="582"/> - <source>Inode threads (unsafe > 1)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="589"/> - <location filename="../../copyEngineOptions.ui" line="599"/> - <source>More cpu, but better organisation on the disk</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="602"/> - <source>Order the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="618"/> - <source>Misc</source> - <translation>Misc</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="624"/> - <source>Check the disk space</source> - <translation>Compruebe el espacio en disco</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="634"/> - <source>Use this folder when destination is not set</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="646"/> - <source>Browse</source> - <translation>Busque</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="668"/> - <source>Filters</source> - <translation>Filtros</translation> - </message> -</context> -<context> - <name>fileErrorDialog</name> - <message> - <location filename="../../fileErrorDialog.ui" line="14"/> - <source>Error with file</source> - <translation>Error con el archivo</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="20"/> - <source>Error</source> - <translation>Error</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="59"/> - <source>Size</source> - <translation>Tamaño</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="76"/> - <source>Modified</source> - <translation>Modificado</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="93"/> - <source>File name</source> - <translation>Nombre de archivo</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="110"/> - <source>Destination</source> - <translation>Destino</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="127"/> - <source>Folder</source> - <translation>Carpeta</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="173"/> - <source>&Always perform this action</source> - <translation>&Siempre realice esta acción</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="193"/> - <source>Try in with elevated privileges</source> - <translation>Pruebe con privilegios elevados</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="200"/> - <source>Put to bottom</source> - <translation>Ponga a abajo</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="207"/> - <source>Retry</source> - <translation>Reintentar</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="214"/> - <source>&Skip</source> - <translation>&Omitir</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="221"/> - <source>&Cancel</source> - <translation>Cancelar</translation> - </message> -</context> -<context> - <name>fileExistsDialog</name> - <message> - <location filename="../../fileExistsDialog.ui" line="14"/> - <source>The file exists</source> - <translation>El archivo ya existe</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="34"/> - <source>Source</source> - <translation>Fuente</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation>Destino</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="82"/> - <location filename="../../fileExistsDialog.ui" line="170"/> - <source>Size</source> - <translation>Tamaño</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="99"/> - <location filename="../../fileExistsDialog.ui" line="187"/> - <source>Modified</source> - <translation>Modificado</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="116"/> - <location filename="../../fileExistsDialog.ui" line="204"/> - <source>File name</source> - <translation>Nombre de archivo</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="133"/> - <location filename="../../fileExistsDialog.ui" line="221"/> - <source>Folder</source> - <translation>Carpeta</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="277"/> - <source>Suggest new &name</source> - <translation>Sugerir nuevo &nombre</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="288"/> - <source>&Always perform this action</source> - <translation>&Siempre realice esta acción</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="346"/> - <location filename="../../fileExistsDialog.ui" line="349"/> - <source>Overwrite if modification date differs</source> - <translation>Sobrescribir si la fecha de modificación difiere</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="308"/> - <source>&Rename</source> - <translation>&Cambiar el nombre</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="315"/> - <source>&Overwrite</source> - <translation>&Sobrescribir</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="325"/> - <source>&Skip</source> - <translation>&Omitir</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="332"/> - <source>&Cancel</source> - <translation>Ca&ncelar</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="341"/> - <source>Overwrite if newer</source> - <translation>Sobrescribir si nuevo</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="354"/> - <location filename="../../fileExistsDialog.ui" line="357"/> - <source>Overwrite if older</source> - <translation>Sobrescribir si es mayor</translation> - </message> -</context> -<context> - <name>fileIsSameDialog</name> - <message> - <location filename="../../fileIsSameDialog.ui" line="40"/> - <source>Size</source> - <translation>Tamaño</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="110"/> - <source>Modified</source> - <translation>Modificado</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="70"/> - <source>File name</source> - <translation>Nombre de archivo</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="14"/> - <source>The source and destination are same</source> - <translation>El origen y el destino son los mismos</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="90"/> - <source>Folder</source> - <translation>Carpeta</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="159"/> - <source>Suggest new &name</source> - <translation>Sugerir nuevo nombre</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="170"/> - <source>&Always perform this action</source> - <translation>&Siempre realice esta acción</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="190"/> - <source>&Rename</source> - <translation>Cambiar el nombre</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="197"/> - <source>&Skip</source> - <translation>Omitir</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="204"/> - <source>&Cancel</source> - <translation>Cancelar</translation> - </message> -</context> -<context> - <name>folderExistsDialog</name> - <message> - <location filename="../../folderExistsDialog.ui" line="34"/> - <source>Source</source> - <translation>Fuente</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation>Destino</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="14"/> - <source>The source and destination is identical</source> - <translation>La fuente y el destino es idéntica</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="82"/> - <location filename="../../folderExistsDialog.ui" line="150"/> - <source>Modified</source> - <translation>Modificado</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="99"/> - <location filename="../../folderExistsDialog.ui" line="160"/> - <source>Folder name</source> - <translation>Nombre de la carpeta</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="116"/> - <location filename="../../folderExistsDialog.ui" line="184"/> - <source>Folder</source> - <translation>Carpeta</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="227"/> - <source>Suggest new &name</source> - <translation>Sugerir nuevo nombre</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="238"/> - <source>&Always perform this action</source> - <translation>&Siempre realice esta acción</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="245"/> - <source>&Rename</source> - <translation>Cambiar el nombre</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="252"/> - <source>Merge</source> - <translation>Unir</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="259"/> - <source>Skip</source> - <translation>Omitir</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="266"/> - <source>&Cancel</source> - <translation>Cancelar</translation> - </message> -</context> -</TS> diff --git a/plugins/CopyEngine/Ultracopier/Languages/fr/translation.ts b/plugins/CopyEngine/Ultracopier/Languages/fr/translation.ts deleted file mode 100644 index 1eeef1b..0000000 --- a/plugins/CopyEngine/Ultracopier/Languages/fr/translation.ts +++ /dev/null @@ -1,1292 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE TS> -<TS version="2.1" language="fr" sourcelanguage="en"> -<context> - <name>AvancedQFile</name> - <message> - <location filename="../../AvancedQFile.cpp" line="26"/> - <location filename="../../AvancedQFile.cpp" line="57"/> - <location filename="../../AvancedQFile.cpp" line="88"/> - <source>Not supported on this platform</source> - <translation>Non supporté sur cette plateforme</translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="40"/> - <source>Last modified date is wrong</source> - <translation>Date de dernière modification du fichier incorrecte</translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="71"/> - <source>Last access date is wrong</source> - <translation>Date du dernier accès au fichier incorrecte</translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="121"/> - <source>Unknown error: %1</source> - <translation>Erreur inconnue: %1</translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="187"/> - <source>Unknown error</source> - <translation>Erreur inconnue</translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="133"/> - <source>Path conversion error</source> - <translation>Erreur de conversion de chemain</translation> - </message> -</context> -<context> - <name>CopyEngine</name> - <message> - <location filename="../../CopyEngine.cpp" line="429"/> - <location filename="../../CopyEngine.cpp" line="451"/> - <source>The engine is forced to move, you can't copy with it</source> - <translation>Le moteur est forcé en déplacement, vous ne pouvez pas copier avec</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="462"/> - <location filename="../../CopyEngine.cpp" line="484"/> - <source>The engine is forced to copy, you can't move with it</source> - <translation>Le moteur est forcé en copie, vous ne pouvez pas déplacer avec</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Destination</source> - <translation>Destination</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Use the actual destination "%1"?</source> - <translation>Utiliser la destination actuelle "%1"?</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="732"/> - <source>The mode has been forced previously. This is an internal error, please report it</source> - <translation>Le mode a été forcé. C'est une erreur interne, merci de la repporter</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1062"/> - <location filename="../../CopyEngine.cpp" line="1065"/> - <location filename="../../CopyEngine.cpp" line="1070"/> - <location filename="../../CopyEngine.cpp" line="1074"/> - <source>Ask</source> - <translation>Demander</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1063"/> - <location filename="../../CopyEngine.cpp" line="1067"/> - <location filename="../../CopyEngine.cpp" line="1071"/> - <location filename="../../CopyEngine.cpp" line="1075"/> - <source>Skip</source> - <translation>Passer</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1066"/> - <source>Merge</source> - <translation>Fusionner</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1068"/> - <location filename="../../CopyEngine.cpp" line="1080"/> - <source>Rename</source> - <translation>Renommer</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1072"/> - <source>Put at the end</source> - <translation>Mettre à la fin</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1076"/> - <source>Overwrite</source> - <translation>Écraser</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1077"/> - <source>Overwrite if different</source> - <translation>Écraser si différent</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1078"/> - <source>Overwrite if newer</source> - <translation>Écraser si plus récent</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1079"/> - <source>Overwrite if older</source> - <translation>Écraser si plus vieux</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1082"/> - <source>Automatic</source> - <translation>Automatique</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1083"/> - <source>Sequential</source> - <translation>Séquentiel</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1084"/> - <source>Parallel</source> - <translation>Parallèle</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options error</source> - <translation>Erreur d'options</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation>Le moteur d'options n'est pas chargé. Impossible d'accédé aux filtres</translation> - </message> -</context> -<context> - <name>CopyEngineFactory</name> - <message> - <location filename="../../CopyEngineFactory.cpp" line="427"/> - <location filename="../../CopyEngineFactory.cpp" line="430"/> - <location filename="../../CopyEngineFactory.cpp" line="435"/> - <location filename="../../CopyEngineFactory.cpp" line="439"/> - <source>Ask</source> - <translation>Demander</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="428"/> - <location filename="../../CopyEngineFactory.cpp" line="432"/> - <location filename="../../CopyEngineFactory.cpp" line="436"/> - <location filename="../../CopyEngineFactory.cpp" line="440"/> - <source>Skip</source> - <translation>Passer</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="431"/> - <source>Merge</source> - <translation>Fusionner</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="433"/> - <location filename="../../CopyEngineFactory.cpp" line="445"/> - <source>Rename</source> - <translation>Renommer</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="437"/> - <source>Put at the end</source> - <translation>Mettre à la fin</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="441"/> - <source>Overwrite</source> - <translation>Écraser</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="442"/> - <source>Overwrite if different</source> - <translation>Écraser si différent</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="443"/> - <source>Overwrite if newer</source> - <translation>Écraser si plus récent</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="444"/> - <source>Overwrite if older</source> - <translation>Écraser si plus vieux</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="447"/> - <source>Automatic</source> - <translation>Automatique</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="448"/> - <source>Sequential</source> - <translation>Séquentiel</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="449"/> - <source>Parallel</source> - <translation>Parallèle</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options error</source> - <translation>Erreur d'options</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation>Le moteur d'options n'est pas chargé. Impossible d'accédé aux filtres</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options engine is not loaded, can't access to the filters</source> - <translation>Moteur d'options non chargé, impossible d'accéder aux filtres</translation> - </message> -</context> -<context> - <name>DiskSpace</name> - <message> - <location filename="../../DiskSpace.ui" line="14"/> - <source>Disk space</source> - <translation>Espace disque</translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="24"/> - <source>You need more space on this drive to finish this transfer</source> - <translation>Vous avez besoin de plus d'espace pour finir ce transfert</translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="49"/> - <source>Continue</source> - <translation>Continuer</translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="56"/> - <source>Cancel</source> - <translation>Annuler</translation> - </message> - <message> - <location filename="../../DiskSpace.cpp" line="23"/> - <source>Drives %1 have %2 available but need %3</source> - <translation>Lecteur %1 as %2 disponible mais à besoin de %3</translation> - </message> -</context> -<context> - <name>FileErrorDialog</name> - <message> - <location filename="../../FileErrorDialog.cpp" line="54"/> - <source>Error on folder</source> - <translation>Erreur sur un dossier</translation> - </message> - <message> - <location filename="../../FileErrorDialog.cpp" line="57"/> - <source>Folder name</source> - <translation>Nom de répertoire</translation> - </message> -</context> -<context> - <name>FileExistsDialog</name> - <message> - <location filename="../../FileExistsDialog.cpp" line="137"/> - <source>%name% - copy%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="144"/> - <source>%name% - copy (%number%)%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Error</source> - <translation>Erreur</translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation>Essaie de renommage avec caratéres interdits</translation> - </message> -</context> -<context> - <name>FileIsSameDialog</name> - <message> - <location filename="../../FileIsSameDialog.cpp" line="111"/> - <source>%name% - copy</source> - <translation type="unfinished">%name% - copie</translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="118"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished">%name% - copie (%number%)</translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Error</source> - <translation>Erreur</translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Try rename with using special characters</source> - <translation>Essaie de renommage avec caratéres interdits</translation> - </message> -</context> -<context> - <name>FilterRules</name> - <message> - <location filename="../../FilterRules.ui" line="33"/> - <source>Search:</source> - <translation>Recherche:</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="43"/> - <source>Search type:</source> - <translation>Type de recherche:</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="51"/> - <source>Raw text</source> - <translation>Texte brut</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="56"/> - <source>Simplified regex</source> - <translation>Regex simplifiée</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="61"/> - <source>Perl's regex</source> - <translation>Regex perl</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="69"/> - <source>Apply on:</source> - <translation>Appliquer sur:</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="77"/> - <source>File</source> - <translation>Fichier</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="82"/> - <source>Folder</source> - <translation>Dossier</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="87"/> - <source>File and folder</source> - <translation>Fichier et dossier</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="125"/> - <source>The test string matches with the regex</source> - <translation>La chaine de texte corresponds avec la regex</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="102"/> - <source>Checking</source> - <translation>Vérification</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="115"/> - <source>Test string:</source> - <translation>Chaine de test:</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="17"/> - <source>Filters dialog</source> - <translation>Dialogue des filtres</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="95"/> - <source>Whole string must match</source> - <translation>Toute la chaine doit correspondre</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="108"/> - <source>The regex is valid</source> - <translation>La regex est valid</translation> - </message> -</context> -<context> - <name>Filters</name> - <message> - <location filename="../../Filters.ui" line="14"/> - <source>Filters</source> - <translation>Filtres</translation> - </message> - <message> - <location filename="../../Filters.ui" line="30"/> - <source>Exclusion filters</source> - <translation>Filtres d'exclusion</translation> - </message> - <message> - <location filename="../../Filters.ui" line="93"/> - <source>Inclusion filters</source> - <translation>Filtres d'inclusion</translation> - </message> - <message> - <location filename="../../Filters.ui" line="105"/> - <source>None = Include all</source> - <translation>Aucun = tout inclure</translation> - </message> - <message> - <location filename="../../Filters.cpp" line="93"/> - <location filename="../../Filters.cpp" line="131"/> - <source>Raw text</source> - <translation>Texte brute</translation> - </message> - <message> - <location filename="../../Filters.cpp" line="96"/> - <location filename="../../Filters.cpp" line="134"/> - <source>Simplified regex</source> - <translation>Regex simplifié</translation> - </message> - <message> - <location filename="../../Filters.cpp" line="99"/> - <location filename="../../Filters.cpp" line="137"/> - <source>Perl's regex</source> - <translation>Regex perl</translation> - </message> - <message> - <location filename="../../Filters.cpp" line="107"/> - <location filename="../../Filters.cpp" line="145"/> - <source>Only on file</source> - <translation>Appliquer sur fichier</translation> - </message> - <message> - <location filename="../../Filters.cpp" line="110"/> - <location filename="../../Filters.cpp" line="148"/> - <source>Only on folder</source> - <translation>Appliquer sur dossier</translation> - </message> - <message> - <location filename="../../Filters.cpp" line="116"/> - <location filename="../../Filters.cpp" line="154"/> - <location filename="../../Filters.cpp" line="216"/> - <location filename="../../Filters.cpp" line="255"/> - <source>Full match</source> - <translation>Correspondance totale</translation> - </message> -</context> -<context> - <name>FolderExistsDialog</name> - <message> - <location filename="../../FolderExistsDialog.cpp" line="57"/> - <source>Folder already exists</source> - <translation>Dossier déjà existant</translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="122"/> - <source>%name% - copy</source> - <translation type="unfinished">%name% - copie</translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="131"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished">%name% - copie (%number%)</translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Error</source> - <translation>Erreur</translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Try rename with using special characters</source> - <translation>Essaie de renommage avec caratéres interdits</translation> - </message> -</context> -<context> - <name>ListThread</name> - <message> - <location filename="../../ListThread.cpp" line="1487"/> - <location filename="../../ListThread.cpp" line="2419"/> - <source>Unable do to move or copy item into wrong forced mode: %1</source> - <translation>Impossible de faire un déplacement ou une copie dans le mauvais mode forcé: %1</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1494"/> - <location filename="../../ListThread.cpp" line="2426"/> - <source>Unable to save the transfer list: %1</source> - <translation>Impossible de sauvegarder la liste de transfert: %1</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1510"/> - <source>Problem reading file, or file-size is 0</source> - <translation>Problem durant la lecture, ou taille de fichier est 0</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1517"/> - <source>Wrong header: "%1"</source> - <translation>Mauvais en-tête: "%1"</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1526"/> - <source>The transfer list is in mixed mode, but this instance is not in this mode</source> - <translation>La liste de transfert est en mode mixte, mais l'instance n'est pas dans ce mode</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1535"/> - <source>The transfer list is in copy mode, but this instance is not in this mode</source> - <translation>La liste de transfert est en mode copie, mais l'instance n'est pas dans ce mode</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1541"/> - <source>The transfer list is in move mode, but this instance is not in this mode</source> - <translation>La liste de transfert est en mode déplacement, mais l'instance n'est pas dans ce mode</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1604"/> - <source>Some errors have been found during the line parsing</source> - <translation>Certaine erreur ont été trouvé durant l'analise de la line</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1612"/> - <source>Unable to open the transfer list: %1</source> - <translation>Impossible d'ouvrir la list de transfert: %1</translation> - </message> -</context> -<context> - <name>MkPath</name> - <message> - <location filename="../../MkPath.cpp" line="142"/> - <source>Unable to create the folder</source> - <translation>Impossible de créer le répertoire</translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="155"/> - <source>The source folder don't exists</source> - <translation>Le dossier source n'éxiste pas</translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="183"/> - <source>Unable to temporary rename the folder</source> - <translation>Impossible de renommer le dossier</translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="206"/> - <source>Unable to do the final real move the folder</source> - <translation>Impossible de faire le déplacement final du dossier</translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="233"/> - <source>Unable to move the folder</source> - <translation>Impossible de déplacer le dossier</translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="93"/> - <location filename="../../MkPath.cpp" line="276"/> - <source>Unable to remove</source> - <translation>Impossible de supprimer</translation> - </message> -</context> -<context> - <name>ReadThread</name> - <message> - <location filename="../../ReadThread.cpp" line="59"/> - <source>Internal error, please report it!</source> - <translation>Erreur interne, merci de la reporter!</translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="188"/> - <source>Internal error reading the source file:block size out of range</source> - <translation>Erreur interne lisant le fichier source: taille de block hors de la plage</translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="196"/> - <location filename="../../ReadThread.cpp" line="420"/> - <source>Unable to read the source file: </source> - <translation>Impossible de lire le fichier source: </translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="237"/> - <location filename="../../ReadThread.cpp" line="468"/> - <source>File truncated during the read, possible data change</source> - <translatorcomment>La taille du fichier a diminué durant -> changé le texte original</translatorcomment> - <translation>Fichier a diminué durant la lecture, possible changement de données</translation> - </message> -</context> -<context> - <name>RenamingRules</name> - <message> - <location filename="../../RenamingRules.ui" line="35"/> - <source>First renaming</source> - <translation>Premier renommage</translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="41"/> - <source>%name% - copy%suffix%</source> - <extracomment>%name% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="57"/> - <source>%name% - copy (%number%)%suffix%</source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="67"/> - <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name, <span style=" font-weight:600;">%number%</span> for the extra number, <span style=" font-weight:600;">%suffix%</span> file suffix</p></body></html></source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="51"/> - <source>Second renaming</source> - <translation>Second renommage</translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="39"/> - <location filename="../../RenamingRules.cpp" line="62"/> - <source>%1 - copy</source> - <translation>%1 - copie</translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="43"/> - <location filename="../../RenamingRules.cpp" line="73"/> - <source>%1 - copy (%2)</source> - <translation>%1 - copie (%2)</translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="14"/> - <source>Renaming rules</source> - <translation>Règles de renommage</translation> - </message> -</context> -<context> - <name>ScanFileOrFolder</name> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="274"/> - <source>Blacklisted folder</source> - <translation>Dossier banis</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="338"/> - <source>%1 - copy</source> - <translation>%1 - copie</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="345"/> - <source>%1 - copy (%2)</source> - <translation>%1 - copie (%2)</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="401"/> - <source>%name% - copy</source> - <translation type="unfinished">%name% - copie</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="408"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished">%name% - copie (%number%)</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="444"/> - <source>This is not a folder</source> - <translation>N'est pas un dossier</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="446"/> - <source>The folder does exists</source> - <translation>Le répertoire n'existe pas</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="448"/> - <source>The folder is not readable</source> - <translation>Le répertoire n'est pas lisible</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="459"/> - <source>Problem with name encoding</source> - <translation>Problém d'encodage</translation> - </message> -</context> -<context> - <name>TransferThread</name> - <message> - <location filename="../../TransferThread.cpp" line="244"/> - <location filename="../../TransferThread.cpp" line="673"/> - <location filename="../../TransferThread.cpp" line="745"/> - <location filename="../../TransferThread.cpp" line="1315"/> - <source>File not found</source> - <translation>Fichier non trouvé</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="586"/> - <source>Drive %1</source> - <translation>Lecteur %1</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="588"/> - <source>Unknown folder</source> - <translation>Dossier inconnu</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="592"/> - <source>root</source> - <translation>racine</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="787"/> - <source>The source doesn't exist</source> - <translation>La source n'existe pas</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="711"/> - <location filename="../../TransferThread.cpp" line="826"/> - <source>The source file doesn't exist</source> - <translation>Le fichier source n'existe pas</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1134"/> - <source>The checksums do not match</source> - <translation>Les sommes de controle ne correspondent pas</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1239"/> - <source>Internal error: The size transfered doesn't match</source> - <translation>Erreur interne: La taille transféré ne corresponds pas</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="751"/> - <location filename="../../TransferThread.cpp" line="838"/> - <source>Unable to do the folder</source> - <translation>Impossible de créer le dossier</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation>Essaie de renommage avec caratéres interdits</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="346"/> - <location filename="../../TransferThread.cpp" line="363"/> - <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source> - <translation>Mauvaise date de modification ou impossible de l'avoir, vous pouvez désactiver le transfert de celui-ci</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="421"/> - <location filename="../../TransferThread.cpp" line="444"/> - <source>Internal error: Already opening</source> - <translation>Erreur interne: Déjà ouvert</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="645"/> - <source>%name% - copy</source> - <translation type="unfinished">%name% - copie</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="652"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished">%name% - copie (%number%)</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="832"/> - <source>Another file exists at same place</source> - <translation>Un autre fichier exists à la même place</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1224"/> - <source>Internal error: The destination is not closed</source> - <translation>Erreur interne: La destination n'est pas fermé</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1250"/> - <source>Internal error: The buffer is not empty</source> - <translation>Erreur interne: Le buffer n'est pas vide</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1315"/> - <location filename="../../TransferThread.cpp" line="1333"/> - <location filename="../../TransferThread.cpp" line="1348"/> - <source>Unable to change the date</source> - <translation>Impossible de changer la date</translation> - </message> -</context> -<context> - <name>WriteThread</name> - <message> - <location filename="../../WriteThread.cpp" line="83"/> - <source>Path resolution error (Empty path)</source> - <translation>Erreur de résolution de chemain (chemain vide)</translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="277"/> - <source>Internal error, please report it!</source> - <translation>Erreur interne, merci de la reporter!</translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="680"/> - <source>Unable to read the source file: </source> - <translation>Impossible de lire le fichier source: </translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="705"/> - <source>File truncated during read, possible data change</source> - <translation>Fichier rétréci pendant la lecture, possible changement de données</translation> - </message> -</context> -<context> - <name>copyEngineOptions</name> - <message> - <location filename="../../copyEngineOptions.ui" line="44"/> - <source>Transfer</source> - <translation>Transfert</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="53"/> - <source>Move the whole folder</source> - <translation>Déplacer le dossier complet</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="60"/> - <source>Transfer the file rights</source> - <translation>Transférer les droits des fichiers</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="70"/> - <source>Keep the file date</source> - <translation>Garder la date du fichier</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="83"/> - <source>Autostart the transfer</source> - <translation>Démarrer automatiquement le transfert</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="90"/> - <location filename="../../copyEngineOptions.ui" line="110"/> - <source>Less performance if checked</source> - <translation>Moins de performance si coché</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="113"/> - <source>Follow the strict order</source> - <translation>Suivre l'ordre strict</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="139"/> - <source>Error and collision</source> - <translation>Erreur et collision</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="145"/> - <source>When folder error</source> - <translation>En cas d'erreur de répertoire</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="155"/> - <source>When file error</source> - <translation>En cas d'erreur de fichier</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="181"/> - <source>When file collision</source> - <translation>En cas de collision de fichier</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="241"/> - <source>When folder collision</source> - <translation>Lors d'une collision de dossier</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="272"/> - <source>Check if destination folder exists</source> - <translation>Vérifier si le répertoire de destination existe</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="279"/> - <source>Renaming rules</source> - <translation>Règles de renommage</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="299"/> - <source>Delete partially transferred files</source> - <translation>Supprimer les transferts partiels</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="312"/> - <source>Rename the original destination</source> - <translation>Renommer la destination originale</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="343"/> - <source>Control</source> - <translation>Controle</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="349"/> - <source>Checksum</source> - <translation>Somme de contrôle</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="358"/> - <source>Only after error</source> - <translation>Seulement après erreur</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="365"/> - <source>Ignore if impossible</source> - <translation>Ignorer si impossible</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="382"/> - <source>Verify checksums</source> - <translation>Vérifier les sommes de contrôles</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="414"/> - <source>Performance</source> - <translation>Performance</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="420"/> - <source>Parallel buffer</source> - <translation>Buffer paralléle</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="427"/> - <location filename="../../copyEngineOptions.ui" line="440"/> - <location filename="../../copyEngineOptions.ui" line="453"/> - <location filename="../../copyEngineOptions.ui" line="490"/> - <location filename="../../copyEngineOptions.ui" line="559"/> - <source>KB</source> - <translation>Ko</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="469"/> - <source>Block size</source> - <translation>Taille de bloc</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="476"/> - <source>Sequential buffer</source> - <translation>Buffer séquentiel</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="483"/> - <source>Enable OS buffer</source> - <translation>Activer le tampon de l'OS</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="506"/> - <source>OS buffer only if smaller than</source> - <translation>Tampon de l'OS seulement si plus petit que</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="513"/> - <source>Transfer algorithm</source> - <translation>Algorithme de transfert</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="552"/> - <source>Parallelize if smaller than</source> - <translation>Parallèlise si plus petit que</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="582"/> - <source>Inode threads (unsafe > 1)</source> - <translation>Inode threads (non sécurisé> 1)</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="589"/> - <location filename="../../copyEngineOptions.ui" line="599"/> - <source>More cpu, but better organisation on the disk</source> - <translation>Plus de cpu mais meilleur organisation sur le disque</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="602"/> - <source>Order the list</source> - <translation>Ordonner la liste</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="618"/> - <source>Misc</source> - <translation>Divers</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="624"/> - <source>Check the disk space</source> - <translation>Vérifier l'espace disque</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="634"/> - <source>Use this folder when destination is not set</source> - <translation>Utiliser ce dossier quand la destination n'est pas défini</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="646"/> - <source>Browse</source> - <translation>Parcourir</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="668"/> - <source>Filters</source> - <translation>Filtres</translation> - </message> -</context> -<context> - <name>fileErrorDialog</name> - <message> - <location filename="../../fileErrorDialog.ui" line="14"/> - <source>Error with file</source> - <translation>Erreur avec un fichier</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="20"/> - <source>Error</source> - <translation>Erreur</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="59"/> - <source>Size</source> - <translation>Taille</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="76"/> - <source>Modified</source> - <translation>Modifié</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="93"/> - <source>File name</source> - <translation>Nom de fichier</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="110"/> - <source>Destination</source> - <translation>Destination</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="127"/> - <source>Folder</source> - <translation>Dossier</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="173"/> - <source>&Always perform this action</source> - <translation>&Toujours faire cette action</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="193"/> - <source>Try in with elevated privileges</source> - <translation>Essayer avec des priviléges suppérieurs</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="200"/> - <source>Put to bottom</source> - <translation>Mettre à la fin</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="207"/> - <source>Retry</source> - <translation>Réessayer</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="214"/> - <source>&Skip</source> - <translation>&Passer</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="221"/> - <source>&Cancel</source> - <translation>&Annuler</translation> - </message> -</context> -<context> - <name>fileExistsDialog</name> - <message> - <location filename="../../fileExistsDialog.ui" line="14"/> - <source>The file exists</source> - <translation>Le fichier existe</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="34"/> - <source>Source</source> - <translation>Source</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation>Destination</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="82"/> - <location filename="../../fileExistsDialog.ui" line="170"/> - <source>Size</source> - <translation>Taille</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="99"/> - <location filename="../../fileExistsDialog.ui" line="187"/> - <source>Modified</source> - <translation>Modifié</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="116"/> - <location filename="../../fileExistsDialog.ui" line="204"/> - <source>File name</source> - <translation>Nom de fichier</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="133"/> - <location filename="../../fileExistsDialog.ui" line="221"/> - <source>Folder</source> - <translation>Dossier</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="277"/> - <source>Suggest new &name</source> - <translation>Suggérer un &nouveau nom</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="288"/> - <source>&Always perform this action</source> - <translation>&Toujours faire cette action</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="346"/> - <location filename="../../fileExistsDialog.ui" line="349"/> - <source>Overwrite if modification date differs</source> - <translation>Écraser si les dates différes</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="308"/> - <source>&Rename</source> - <translation>&Renommer</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="315"/> - <source>&Overwrite</source> - <translation>&Écraser</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="325"/> - <source>&Skip</source> - <translation>&Passer</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="332"/> - <source>&Cancel</source> - <translation>&Annuler</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="341"/> - <source>Overwrite if newer</source> - <translation>Écraser si plus récent</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="354"/> - <location filename="../../fileExistsDialog.ui" line="357"/> - <source>Overwrite if older</source> - <translation>Écraser si plus vieux</translation> - </message> -</context> -<context> - <name>fileIsSameDialog</name> - <message> - <location filename="../../fileIsSameDialog.ui" line="40"/> - <source>Size</source> - <translation>Taille</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="110"/> - <source>Modified</source> - <translation>Modifié</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="70"/> - <source>File name</source> - <translation>Nom de fichier</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="14"/> - <source>The source and destination are same</source> - <translation>La source et la destination sont identique</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="90"/> - <source>Folder</source> - <translation>Dossier</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="159"/> - <source>Suggest new &name</source> - <translation>Suggérer un &nouveau nom</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="170"/> - <source>&Always perform this action</source> - <translation>&Toujours faire cette action</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="190"/> - <source>&Rename</source> - <translation>&Renommer</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="197"/> - <source>&Skip</source> - <translation>&Passer</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="204"/> - <source>&Cancel</source> - <translation>&Annuler</translation> - </message> -</context> -<context> - <name>folderExistsDialog</name> - <message> - <location filename="../../folderExistsDialog.ui" line="34"/> - <source>Source</source> - <translation>Source</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation>Destination</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="14"/> - <source>The source and destination is identical</source> - <translation>La source et la destination sont identique</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="82"/> - <location filename="../../folderExistsDialog.ui" line="150"/> - <source>Modified</source> - <translation>Modifié</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="99"/> - <location filename="../../folderExistsDialog.ui" line="160"/> - <source>Folder name</source> - <translation>Nom de répertoire</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="116"/> - <location filename="../../folderExistsDialog.ui" line="184"/> - <source>Folder</source> - <translation>Dossier</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="227"/> - <source>Suggest new &name</source> - <translation>Suggérer un &nouveau nom</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="238"/> - <source>&Always perform this action</source> - <translation>&Toujours faire cette action</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="245"/> - <source>&Rename</source> - <translation>&Renommer</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="252"/> - <source>Merge</source> - <translation>Fusionner</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="259"/> - <source>Skip</source> - <translation>Passer</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="266"/> - <source>&Cancel</source> - <translation>&Annuler</translation> - </message> -</context> -</TS> diff --git a/plugins/CopyEngine/Ultracopier/Languages/hi/translation.ts b/plugins/CopyEngine/Ultracopier/Languages/hi/translation.ts deleted file mode 100644 index e17b3f2..0000000 --- a/plugins/CopyEngine/Ultracopier/Languages/hi/translation.ts +++ /dev/null @@ -1,1291 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE TS> -<TS version="2.1"> -<context> - <name>AvancedQFile</name> - <message> - <location filename="../../AvancedQFile.cpp" line="26"/> - <location filename="../../AvancedQFile.cpp" line="57"/> - <location filename="../../AvancedQFile.cpp" line="88"/> - <source>Not supported on this platform</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="40"/> - <source>Last modified date is wrong</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="71"/> - <source>Last access date is wrong</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="121"/> - <source>Unknown error: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="187"/> - <source>Unknown error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="133"/> - <source>Path conversion error</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>CopyEngine</name> - <message> - <location filename="../../CopyEngine.cpp" line="429"/> - <location filename="../../CopyEngine.cpp" line="451"/> - <source>The engine is forced to move, you can't copy with it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="462"/> - <location filename="../../CopyEngine.cpp" line="484"/> - <source>The engine is forced to copy, you can't move with it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Use the actual destination "%1"?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="732"/> - <source>The mode has been forced previously. This is an internal error, please report it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1062"/> - <location filename="../../CopyEngine.cpp" line="1065"/> - <location filename="../../CopyEngine.cpp" line="1070"/> - <location filename="../../CopyEngine.cpp" line="1074"/> - <source>Ask</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1063"/> - <location filename="../../CopyEngine.cpp" line="1067"/> - <location filename="../../CopyEngine.cpp" line="1071"/> - <location filename="../../CopyEngine.cpp" line="1075"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1066"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1068"/> - <location filename="../../CopyEngine.cpp" line="1080"/> - <source>Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1072"/> - <source>Put at the end</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1076"/> - <source>Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1077"/> - <source>Overwrite if different</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1078"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1079"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1082"/> - <source>Automatic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1083"/> - <source>Sequential</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1084"/> - <source>Parallel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>CopyEngineFactory</name> - <message> - <location filename="../../CopyEngineFactory.cpp" line="427"/> - <location filename="../../CopyEngineFactory.cpp" line="430"/> - <location filename="../../CopyEngineFactory.cpp" line="435"/> - <location filename="../../CopyEngineFactory.cpp" line="439"/> - <source>Ask</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="428"/> - <location filename="../../CopyEngineFactory.cpp" line="432"/> - <location filename="../../CopyEngineFactory.cpp" line="436"/> - <location filename="../../CopyEngineFactory.cpp" line="440"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="431"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="433"/> - <location filename="../../CopyEngineFactory.cpp" line="445"/> - <source>Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="437"/> - <source>Put at the end</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="441"/> - <source>Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="442"/> - <source>Overwrite if different</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="443"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="444"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="447"/> - <source>Automatic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="448"/> - <source>Sequential</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="449"/> - <source>Parallel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options engine is not loaded, can't access to the filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>DiskSpace</name> - <message> - <location filename="../../DiskSpace.ui" line="14"/> - <source>Disk space</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="24"/> - <source>You need more space on this drive to finish this transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="49"/> - <source>Continue</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="56"/> - <source>Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.cpp" line="23"/> - <source>Drives %1 have %2 available but need %3</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileErrorDialog</name> - <message> - <location filename="../../FileErrorDialog.cpp" line="54"/> - <source>Error on folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileErrorDialog.cpp" line="57"/> - <source>Folder name</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileExistsDialog</name> - <message> - <location filename="../../FileExistsDialog.cpp" line="137"/> - <source>%name% - copy%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="144"/> - <source>%name% - copy (%number%)%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileIsSameDialog</name> - <message> - <location filename="../../FileIsSameDialog.cpp" line="111"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="118"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FilterRules</name> - <message> - <location filename="../../FilterRules.ui" line="33"/> - <source>Search:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="43"/> - <source>Search type:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="51"/> - <source>Raw text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="56"/> - <source>Simplified regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="61"/> - <source>Perl's regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="69"/> - <source>Apply on:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="77"/> - <source>File</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="82"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="87"/> - <source>File and folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="125"/> - <source>The test string matches with the regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="102"/> - <source>Checking</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="115"/> - <source>Test string:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="17"/> - <source>Filters dialog</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="95"/> - <source>Whole string must match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="108"/> - <source>The regex is valid</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>Filters</name> - <message> - <location filename="../../Filters.ui" line="14"/> - <source>Filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="30"/> - <source>Exclusion filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="93"/> - <source>Inclusion filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="105"/> - <source>None = Include all</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="93"/> - <location filename="../../Filters.cpp" line="131"/> - <source>Raw text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="96"/> - <location filename="../../Filters.cpp" line="134"/> - <source>Simplified regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="99"/> - <location filename="../../Filters.cpp" line="137"/> - <source>Perl's regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="107"/> - <location filename="../../Filters.cpp" line="145"/> - <source>Only on file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="110"/> - <location filename="../../Filters.cpp" line="148"/> - <source>Only on folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="116"/> - <location filename="../../Filters.cpp" line="154"/> - <location filename="../../Filters.cpp" line="216"/> - <location filename="../../Filters.cpp" line="255"/> - <source>Full match</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FolderExistsDialog</name> - <message> - <location filename="../../FolderExistsDialog.cpp" line="57"/> - <source>Folder already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="122"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="131"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ListThread</name> - <message> - <location filename="../../ListThread.cpp" line="1487"/> - <location filename="../../ListThread.cpp" line="2419"/> - <source>Unable do to move or copy item into wrong forced mode: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1494"/> - <location filename="../../ListThread.cpp" line="2426"/> - <source>Unable to save the transfer list: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1510"/> - <source>Problem reading file, or file-size is 0</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1517"/> - <source>Wrong header: "%1"</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1526"/> - <source>The transfer list is in mixed mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1535"/> - <source>The transfer list is in copy mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1541"/> - <source>The transfer list is in move mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1604"/> - <source>Some errors have been found during the line parsing</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1612"/> - <source>Unable to open the transfer list: %1</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>MkPath</name> - <message> - <location filename="../../MkPath.cpp" line="142"/> - <source>Unable to create the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="155"/> - <source>The source folder don't exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="183"/> - <source>Unable to temporary rename the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="206"/> - <source>Unable to do the final real move the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="233"/> - <source>Unable to move the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="93"/> - <location filename="../../MkPath.cpp" line="276"/> - <source>Unable to remove</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ReadThread</name> - <message> - <location filename="../../ReadThread.cpp" line="59"/> - <source>Internal error, please report it!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="188"/> - <source>Internal error reading the source file:block size out of range</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="196"/> - <location filename="../../ReadThread.cpp" line="420"/> - <source>Unable to read the source file: </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="237"/> - <location filename="../../ReadThread.cpp" line="468"/> - <source>File truncated during the read, possible data change</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>RenamingRules</name> - <message> - <location filename="../../RenamingRules.ui" line="35"/> - <source>First renaming</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="41"/> - <source>%name% - copy%suffix%</source> - <extracomment>%name% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="57"/> - <source>%name% - copy (%number%)%suffix%</source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="67"/> - <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name, <span style=" font-weight:600;">%number%</span> for the extra number, <span style=" font-weight:600;">%suffix%</span> file suffix</p></body></html></source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="51"/> - <source>Second renaming</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="39"/> - <location filename="../../RenamingRules.cpp" line="62"/> - <source>%1 - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="43"/> - <location filename="../../RenamingRules.cpp" line="73"/> - <source>%1 - copy (%2)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="14"/> - <source>Renaming rules</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ScanFileOrFolder</name> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="274"/> - <source>Blacklisted folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="338"/> - <source>%1 - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="345"/> - <source>%1 - copy (%2)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="401"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="408"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="444"/> - <source>This is not a folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="446"/> - <source>The folder does exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="448"/> - <source>The folder is not readable</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="459"/> - <source>Problem with name encoding</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>TransferThread</name> - <message> - <location filename="../../TransferThread.cpp" line="244"/> - <location filename="../../TransferThread.cpp" line="673"/> - <location filename="../../TransferThread.cpp" line="745"/> - <location filename="../../TransferThread.cpp" line="1315"/> - <source>File not found</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="346"/> - <location filename="../../TransferThread.cpp" line="363"/> - <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="421"/> - <location filename="../../TransferThread.cpp" line="444"/> - <source>Internal error: Already opening</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="586"/> - <source>Drive %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="588"/> - <source>Unknown folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="592"/> - <source>root</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="645"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="652"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="711"/> - <location filename="../../TransferThread.cpp" line="826"/> - <source>The source file doesn't exist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="751"/> - <location filename="../../TransferThread.cpp" line="838"/> - <source>Unable to do the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="787"/> - <source>The source doesn't exist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="832"/> - <source>Another file exists at same place</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1134"/> - <source>The checksums do not match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1224"/> - <source>Internal error: The destination is not closed</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1239"/> - <source>Internal error: The size transfered doesn't match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1250"/> - <source>Internal error: The buffer is not empty</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1315"/> - <location filename="../../TransferThread.cpp" line="1333"/> - <location filename="../../TransferThread.cpp" line="1348"/> - <source>Unable to change the date</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>WriteThread</name> - <message> - <location filename="../../WriteThread.cpp" line="83"/> - <source>Path resolution error (Empty path)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="277"/> - <source>Internal error, please report it!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="680"/> - <source>Unable to read the source file: </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="705"/> - <source>File truncated during read, possible data change</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>copyEngineOptions</name> - <message> - <location filename="../../copyEngineOptions.ui" line="44"/> - <source>Transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="53"/> - <source>Move the whole folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="60"/> - <source>Transfer the file rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="70"/> - <source>Keep the file date</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="83"/> - <source>Autostart the transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="90"/> - <location filename="../../copyEngineOptions.ui" line="110"/> - <source>Less performance if checked</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="113"/> - <source>Follow the strict order</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="139"/> - <source>Error and collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="145"/> - <source>When folder error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="155"/> - <source>When file error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="181"/> - <source>When file collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="241"/> - <source>When folder collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="272"/> - <source>Check if destination folder exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="279"/> - <source>Renaming rules</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="299"/> - <source>Delete partially transferred files</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="312"/> - <source>Rename the original destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="343"/> - <source>Control</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="349"/> - <source>Checksum</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="358"/> - <source>Only after error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="365"/> - <source>Ignore if impossible</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="382"/> - <source>Verify checksums</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="414"/> - <source>Performance</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="420"/> - <source>Parallel buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="427"/> - <location filename="../../copyEngineOptions.ui" line="440"/> - <location filename="../../copyEngineOptions.ui" line="453"/> - <location filename="../../copyEngineOptions.ui" line="490"/> - <location filename="../../copyEngineOptions.ui" line="559"/> - <source>KB</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="469"/> - <source>Block size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="476"/> - <source>Sequential buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="483"/> - <source>Enable OS buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="506"/> - <source>OS buffer only if smaller than</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="513"/> - <source>Transfer algorithm</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="552"/> - <source>Parallelize if smaller than</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="582"/> - <source>Inode threads (unsafe > 1)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="589"/> - <location filename="../../copyEngineOptions.ui" line="599"/> - <source>More cpu, but better organisation on the disk</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="602"/> - <source>Order the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="618"/> - <source>Misc</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="624"/> - <source>Check the disk space</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="634"/> - <source>Use this folder when destination is not set</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="646"/> - <source>Browse</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="668"/> - <source>Filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileErrorDialog</name> - <message> - <location filename="../../fileErrorDialog.ui" line="14"/> - <source>Error with file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="20"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="59"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="76"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="93"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="110"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="127"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="173"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="193"/> - <source>Try in with elevated privileges</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="200"/> - <source>Put to bottom</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="207"/> - <source>Retry</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="214"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="221"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileExistsDialog</name> - <message> - <location filename="../../fileExistsDialog.ui" line="14"/> - <source>The file exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="34"/> - <source>Source</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="82"/> - <location filename="../../fileExistsDialog.ui" line="170"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="99"/> - <location filename="../../fileExistsDialog.ui" line="187"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="116"/> - <location filename="../../fileExistsDialog.ui" line="204"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="133"/> - <location filename="../../fileExistsDialog.ui" line="221"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="277"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="288"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="346"/> - <location filename="../../fileExistsDialog.ui" line="349"/> - <source>Overwrite if modification date differs</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="308"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="315"/> - <source>&Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="325"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="332"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="341"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="354"/> - <location filename="../../fileExistsDialog.ui" line="357"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileIsSameDialog</name> - <message> - <location filename="../../fileIsSameDialog.ui" line="40"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="110"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="70"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="14"/> - <source>The source and destination are same</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="90"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="159"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="170"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="190"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="197"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="204"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>folderExistsDialog</name> - <message> - <location filename="../../folderExistsDialog.ui" line="34"/> - <source>Source</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="14"/> - <source>The source and destination is identical</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="82"/> - <location filename="../../folderExistsDialog.ui" line="150"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="99"/> - <location filename="../../folderExistsDialog.ui" line="160"/> - <source>Folder name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="116"/> - <location filename="../../folderExistsDialog.ui" line="184"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="227"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="238"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="245"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="252"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="259"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="266"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -</TS> diff --git a/plugins/CopyEngine/Ultracopier/Languages/hu/translation.ts b/plugins/CopyEngine/Ultracopier/Languages/hu/translation.ts deleted file mode 100644 index ca0151e..0000000 --- a/plugins/CopyEngine/Ultracopier/Languages/hu/translation.ts +++ /dev/null @@ -1,1291 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE TS> -<TS version="2.1" language="hu"> -<context> - <name>AvancedQFile</name> - <message> - <location filename="../../AvancedQFile.cpp" line="26"/> - <location filename="../../AvancedQFile.cpp" line="57"/> - <location filename="../../AvancedQFile.cpp" line="88"/> - <source>Not supported on this platform</source> - <translation>Nem támogatott ezen a platformon</translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="40"/> - <source>Last modified date is wrong</source> - <translation>A módosítás utolsó dátuma hibás</translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="71"/> - <source>Last access date is wrong</source> - <translation>A hozzáférés utolsó dátuma hibása</translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="121"/> - <source>Unknown error: %1</source> - <translation>Ismeretlen hiba: %1</translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="133"/> - <source>Path conversion error</source> - <translation>Útvonal konvertálási hiba</translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="187"/> - <source>Unknown error</source> - <translation>Ismeretlen hiba</translation> - </message> -</context> -<context> - <name>CopyEngine</name> - <message> - <location filename="../../CopyEngine.cpp" line="429"/> - <location filename="../../CopyEngine.cpp" line="451"/> - <source>The engine is forced to move, you can't copy with it</source> - <translation>A motort mozgatásra kényszerítik, nem másolhatsz vele</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="462"/> - <location filename="../../CopyEngine.cpp" line="484"/> - <source>The engine is forced to copy, you can't move with it</source> - <translation>A motort másolásra kényszerítik, nem mozgathatsz vele</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Destination</source> - <translation>Cél</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Use the actual destination "%1"?</source> - <translation>Használja a jelenlegi célt: "%1"?</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="732"/> - <source>The mode has been forced previously. This is an internal error, please report it</source> - <translation>Ezt a módot már korábban kényszerítették. Belső hiba történt, kérlek jelentsd be</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1062"/> - <location filename="../../CopyEngine.cpp" line="1065"/> - <location filename="../../CopyEngine.cpp" line="1070"/> - <location filename="../../CopyEngine.cpp" line="1074"/> - <source>Ask</source> - <translation>Kérdezzen rá</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1063"/> - <location filename="../../CopyEngine.cpp" line="1067"/> - <location filename="../../CopyEngine.cpp" line="1071"/> - <location filename="../../CopyEngine.cpp" line="1075"/> - <source>Skip</source> - <translation>Kihagy</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1066"/> - <source>Merge</source> - <translation>Összeolvaszt</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1068"/> - <location filename="../../CopyEngine.cpp" line="1080"/> - <source>Rename</source> - <translation>Nevezze át</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1072"/> - <source>Put at the end</source> - <translation>Helyezze a végére</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1076"/> - <source>Overwrite</source> - <translation>Felülír</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1077"/> - <source>Overwrite if different</source> - <translation>Felülír, ha különbözik</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1078"/> - <source>Overwrite if newer</source> - <translation>Felülír, ha újabb</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1079"/> - <source>Overwrite if older</source> - <translation>Felülír, ha régebbi</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1082"/> - <source>Automatic</source> - <translation>Automatikus</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1083"/> - <source>Sequential</source> - <translation>Szekvenciális</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1084"/> - <source>Parallel</source> - <translation>Párhuzamos</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options error</source> - <translation>Beállítási hiba</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation>A beállítási motor nincs betöltve. A szűrők elérése nem lehetséges</translation> - </message> -</context> -<context> - <name>CopyEngineFactory</name> - <message> - <location filename="../../CopyEngineFactory.cpp" line="427"/> - <location filename="../../CopyEngineFactory.cpp" line="430"/> - <location filename="../../CopyEngineFactory.cpp" line="435"/> - <location filename="../../CopyEngineFactory.cpp" line="439"/> - <source>Ask</source> - <translation>Kérdezzen rá</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="428"/> - <location filename="../../CopyEngineFactory.cpp" line="432"/> - <location filename="../../CopyEngineFactory.cpp" line="436"/> - <location filename="../../CopyEngineFactory.cpp" line="440"/> - <source>Skip</source> - <translation>Kihagy</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="431"/> - <source>Merge</source> - <translation>Összeolvaszt</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="433"/> - <location filename="../../CopyEngineFactory.cpp" line="445"/> - <source>Rename</source> - <translation>Nevezze át</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="437"/> - <source>Put at the end</source> - <translation>Helyezze a végére</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="441"/> - <source>Overwrite</source> - <translation>Felülír</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="442"/> - <source>Overwrite if different</source> - <translation>Felülír, ha különbözik</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="443"/> - <source>Overwrite if newer</source> - <translation>Felülír, ha újabb</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="444"/> - <source>Overwrite if older</source> - <translation>Felülír, ha régebbi</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="447"/> - <source>Automatic</source> - <translation>Automatikus</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="448"/> - <source>Sequential</source> - <translation>Szekvenciális</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="449"/> - <source>Parallel</source> - <translation>Párhuzamos</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options error</source> - <translation>Beállítási hiba</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation>A beállítási motor nincs betöltve. A szűrők elérése nem lehetséges</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options engine is not loaded, can't access to the filters</source> - <translation>A beállítási motor nincs betöltve, a szűrők elérése nem lehetséges</translation> - </message> -</context> -<context> - <name>DiskSpace</name> - <message> - <location filename="../../DiskSpace.ui" line="14"/> - <source>Disk space</source> - <translation>Lemezterület</translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="24"/> - <source>You need more space on this drive to finish this transfer</source> - <translation>Több szabad helyre van szükséged ezen a lemezen az átvitel befejezéséhez</translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="49"/> - <source>Continue</source> - <translation>Folytatás</translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="56"/> - <source>Cancel</source> - <translation>Mégse</translation> - </message> - <message> - <location filename="../../DiskSpace.cpp" line="23"/> - <source>Drives %1 have %2 available but need %3</source> - <translation>%1 meghajtón %2 hely van, de %3 szükséges</translation> - </message> -</context> -<context> - <name>FileErrorDialog</name> - <message> - <location filename="../../FileErrorDialog.cpp" line="54"/> - <source>Error on folder</source> - <translation>Hiba a mappával</translation> - </message> - <message> - <location filename="../../FileErrorDialog.cpp" line="57"/> - <source>Folder name</source> - <translation>Mappa neve</translation> - </message> -</context> -<context> - <name>FileExistsDialog</name> - <message> - <location filename="../../FileExistsDialog.cpp" line="137"/> - <source>%name% - copy%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="144"/> - <source>%name% - copy (%number%)%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Error</source> - <translation>Hiba</translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation>Átnevezés speciális karakterek használatával</translation> - </message> -</context> -<context> - <name>FileIsSameDialog</name> - <message> - <location filename="../../FileIsSameDialog.cpp" line="111"/> - <source>%name% - copy</source> - <translation type="unfinished">%name% - másolás</translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="118"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished">%name% - másolás (%number%)</translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Error</source> - <translation>Hiba</translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Try rename with using special characters</source> - <translation>Átnevezés speciális karakterek használatával</translation> - </message> -</context> -<context> - <name>FilterRules</name> - <message> - <location filename="../../FilterRules.ui" line="17"/> - <source>Filters dialog</source> - <translation>Szűrők üzenet</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="33"/> - <source>Search:</source> - <translation>Keresés:</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="43"/> - <source>Search type:</source> - <translation>Keresés típusa:</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="51"/> - <source>Raw text</source> - <translation>Nyers szöveg</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="56"/> - <source>Simplified regex</source> - <translation>Egyszerűsített regex</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="61"/> - <source>Perl's regex</source> - <translation>Perl regex</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="69"/> - <source>Apply on:</source> - <translation>Alkalmazás ezen:</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="77"/> - <source>File</source> - <translation>Fájl</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="82"/> - <source>Folder</source> - <translation>Mappa</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="87"/> - <source>File and folder</source> - <translation>Fájl és mappa</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="95"/> - <source>Whole string must match</source> - <translation>A teljes szövegnek egyeznie kell</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="125"/> - <source>The test string matches with the regex</source> - <translation>A tesztszöveg megegyezik a regexszel</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="102"/> - <source>Checking</source> - <translation>Ellenőrzés</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="108"/> - <source>The regex is valid</source> - <translation>A regex érvényes</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="115"/> - <source>Test string:</source> - <translation>Próbaszöveg:</translation> - </message> -</context> -<context> - <name>Filters</name> - <message> - <location filename="../../Filters.ui" line="14"/> - <source>Filters</source> - <translation>Szűrők</translation> - </message> - <message> - <location filename="../../Filters.ui" line="30"/> - <source>Exclusion filters</source> - <translation>Kizáró szűrők</translation> - </message> - <message> - <location filename="../../Filters.ui" line="93"/> - <source>Inclusion filters</source> - <translation>Használt szűrők</translation> - </message> - <message> - <location filename="../../Filters.ui" line="105"/> - <source>None = Include all</source> - <translation>Nincs = Mindet használ</translation> - </message> - <message> - <location filename="../../Filters.cpp" line="93"/> - <location filename="../../Filters.cpp" line="131"/> - <source>Raw text</source> - <translation>Nyers szöveg</translation> - </message> - <message> - <location filename="../../Filters.cpp" line="96"/> - <location filename="../../Filters.cpp" line="134"/> - <source>Simplified regex</source> - <translation>Egyszerűsített regex</translation> - </message> - <message> - <location filename="../../Filters.cpp" line="99"/> - <location filename="../../Filters.cpp" line="137"/> - <source>Perl's regex</source> - <translation>Perl regex</translation> - </message> - <message> - <location filename="../../Filters.cpp" line="107"/> - <location filename="../../Filters.cpp" line="145"/> - <source>Only on file</source> - <translation>Csak fájlon</translation> - </message> - <message> - <location filename="../../Filters.cpp" line="110"/> - <location filename="../../Filters.cpp" line="148"/> - <source>Only on folder</source> - <translation>Csak mappán</translation> - </message> - <message> - <location filename="../../Filters.cpp" line="116"/> - <location filename="../../Filters.cpp" line="154"/> - <location filename="../../Filters.cpp" line="216"/> - <location filename="../../Filters.cpp" line="255"/> - <source>Full match</source> - <translation>Teljes egyezés</translation> - </message> -</context> -<context> - <name>FolderExistsDialog</name> - <message> - <location filename="../../FolderExistsDialog.cpp" line="57"/> - <source>Folder already exists</source> - <translation>Mappa már létezik</translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="122"/> - <source>%name% - copy</source> - <translation type="unfinished">%name% - másolás</translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="131"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished">%name% - másolás (%number%)</translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Error</source> - <translation>Hiba</translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Try rename with using special characters</source> - <translation>Átnevezés speciális karakterek használatával</translation> - </message> -</context> -<context> - <name>ListThread</name> - <message> - <location filename="../../ListThread.cpp" line="1487"/> - <location filename="../../ListThread.cpp" line="2419"/> - <source>Unable do to move or copy item into wrong forced mode: %1</source> - <translation>Elem másolása vagy mozgatás nem lehetséges a hibás kényszerített módban: %1</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1494"/> - <location filename="../../ListThread.cpp" line="2426"/> - <source>Unable to save the transfer list: %1</source> - <translation>Átviteli lista mentése nem lehetséges: %1</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1510"/> - <source>Problem reading file, or file-size is 0</source> - <translation>Hiba a fájl olvasásánál vagy a fálméret 0</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1517"/> - <source>Wrong header: "%1"</source> - <translation>Hibás fejléc: "%1"</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1526"/> - <source>The transfer list is in mixed mode, but this instance is not in this mode</source> - <translation>Az átviteli lista kevert módban van, de ez a példány nincs</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1535"/> - <source>The transfer list is in copy mode, but this instance is not in this mode</source> - <translation>Az átviteli lista másolás módban van, de ez a példány nincs</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1541"/> - <source>The transfer list is in move mode, but this instance is not in this mode</source> - <translation>Az átviteli lista mozgatás módban van, de ez a példány nincs</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1604"/> - <source>Some errors have been found during the line parsing</source> - <translation>Néhány hiba történt a sorelemzés során</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1612"/> - <source>Unable to open the transfer list: %1</source> - <translation>Az átviteli lista megnyitása nem lehetséges: %1</translation> - </message> -</context> -<context> - <name>MkPath</name> - <message> - <location filename="../../MkPath.cpp" line="142"/> - <source>Unable to create the folder</source> - <translation>Mappa létrehozása nem lehetséges</translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="155"/> - <source>The source folder don't exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="183"/> - <source>Unable to temporary rename the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="206"/> - <source>Unable to do the final real move the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="233"/> - <source>Unable to move the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="93"/> - <location filename="../../MkPath.cpp" line="276"/> - <source>Unable to remove</source> - <translation>Eltávolítás nem lehetséges</translation> - </message> -</context> -<context> - <name>ReadThread</name> - <message> - <location filename="../../ReadThread.cpp" line="59"/> - <source>Internal error, please report it!</source> - <translation>Belső hiba, kérlek jelentsd!</translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="188"/> - <source>Internal error reading the source file:block size out of range</source> - <translation>Belső hiba történt a forrásfájl olvasásakor: a blokkméret tartományon kívüli</translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="196"/> - <location filename="../../ReadThread.cpp" line="420"/> - <source>Unable to read the source file: </source> - <translation>A forrásfájl olvasása nem lehetséges:</translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="237"/> - <location filename="../../ReadThread.cpp" line="468"/> - <source>File truncated during the read, possible data change</source> - <translation>A fájl olvasás során megcsonkult, valószínűleg adatváltozás miatt</translation> - </message> -</context> -<context> - <name>RenamingRules</name> - <message> - <location filename="../../RenamingRules.ui" line="14"/> - <source>Renaming rules</source> - <translation>Átnevezési szabályok</translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="35"/> - <source>First renaming</source> - <translation>Első átnevezés</translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="41"/> - <source>%name% - copy%suffix%</source> - <extracomment>%name% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="57"/> - <source>%name% - copy (%number%)%suffix%</source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="67"/> - <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name, <span style=" font-weight:600;">%number%</span> for the extra number, <span style=" font-weight:600;">%suffix%</span> file suffix</p></body></html></source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="51"/> - <source>Second renaming</source> - <translation>Második átnevezés</translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="39"/> - <location filename="../../RenamingRules.cpp" line="62"/> - <source>%1 - copy</source> - <translation>%1 - másolás</translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="43"/> - <location filename="../../RenamingRules.cpp" line="73"/> - <source>%1 - copy (%2)</source> - <translation>%1 - másolás (%2)</translation> - </message> -</context> -<context> - <name>ScanFileOrFolder</name> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="274"/> - <source>Blacklisted folder</source> - <translation>Feketelistás mappa</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="338"/> - <source>%1 - copy</source> - <translation>%1 - másolás</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="345"/> - <source>%1 - copy (%2)</source> - <translation>%1 - másolás (%2)</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="401"/> - <source>%name% - copy</source> - <translation type="unfinished">%name% - másolás</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="408"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished">%name% - másolás (%number%)</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="444"/> - <source>This is not a folder</source> - <translation>Ez nem mappa</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="446"/> - <source>The folder does exists</source> - <translation>A mappa létezik</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="448"/> - <source>The folder is not readable</source> - <translation>A mappa nem olvasható</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="459"/> - <source>Problem with name encoding</source> - <translation>Probléma a névkódolással</translation> - </message> -</context> -<context> - <name>TransferThread</name> - <message> - <location filename="../../TransferThread.cpp" line="244"/> - <location filename="../../TransferThread.cpp" line="673"/> - <location filename="../../TransferThread.cpp" line="745"/> - <location filename="../../TransferThread.cpp" line="1315"/> - <source>File not found</source> - <translation>Fájl nem található</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="586"/> - <source>Drive %1</source> - <translation type="unfinished">%1 meghajtó</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="588"/> - <source>Unknown folder</source> - <translation type="unfinished">Ismeretlen mappa</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="592"/> - <source>root</source> - <translation type="unfinished">gyökér</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="787"/> - <source>The source doesn't exist</source> - <translation type="unfinished">A forrás nem létezik</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="751"/> - <location filename="../../TransferThread.cpp" line="838"/> - <source>Unable to do the folder</source> - <translation type="unfinished">Mappaművelet nem lehetséges</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation>Átnevezés speciális karakterek használatával</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="346"/> - <location filename="../../TransferThread.cpp" line="363"/> - <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="421"/> - <location filename="../../TransferThread.cpp" line="444"/> - <source>Internal error: Already opening</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="645"/> - <source>%name% - copy</source> - <translation type="unfinished">%name% - másolás</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="652"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished">%name% - másolás (%number%)</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="711"/> - <location filename="../../TransferThread.cpp" line="826"/> - <source>The source file doesn't exist</source> - <translation type="unfinished">A forrásfájl nem létezik</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="832"/> - <source>Another file exists at same place</source> - <translation type="unfinished">Egy másik fájl létezik ugyanazon a helyen</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1134"/> - <source>The checksums do not match</source> - <translation type="unfinished">A checksumok nem egyeznek meg</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1224"/> - <source>Internal error: The destination is not closed</source> - <translation type="unfinished">Belső hiba: a cél nincs bezárva</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1239"/> - <source>Internal error: The size transfered doesn't match</source> - <translation type="unfinished">Belső hiba: az átvitt méret nem egyezik meg</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1250"/> - <source>Internal error: The buffer is not empty</source> - <translation type="unfinished">Belső hiba: a puffer nem üres</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1315"/> - <location filename="../../TransferThread.cpp" line="1333"/> - <location filename="../../TransferThread.cpp" line="1348"/> - <source>Unable to change the date</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>WriteThread</name> - <message> - <location filename="../../WriteThread.cpp" line="83"/> - <source>Path resolution error (Empty path)</source> - <translation>Útvonal feloldási hiba (Üres útvonal)</translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="277"/> - <source>Internal error, please report it!</source> - <translation>Belső hiba, kérlek jelentsd!</translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="680"/> - <source>Unable to read the source file: </source> - <translation>A forrásfájl olvasása nem lehetséges:</translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="705"/> - <source>File truncated during read, possible data change</source> - <translation>Fájl megsérült az olvasás közben, valószínűleg adatváltozás</translation> - </message> -</context> -<context> - <name>copyEngineOptions</name> - <message> - <location filename="../../copyEngineOptions.ui" line="44"/> - <source>Transfer</source> - <translation>Átvitel</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="53"/> - <source>Move the whole folder</source> - <translation>Mozgassa át az egész mappát</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="60"/> - <source>Transfer the file rights</source> - <translation>Fájljogok átadása</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="70"/> - <source>Keep the file date</source> - <translation>Fájl dátumának megtartása</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="83"/> - <source>Autostart the transfer</source> - <translation>Átvitel automatikus indítása</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="90"/> - <location filename="../../copyEngineOptions.ui" line="110"/> - <source>Less performance if checked</source> - <translation>Kisebb teljesítmény, ha be van jelölve</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="113"/> - <source>Follow the strict order</source> - <translation>Kövesse a szigorú sorrendet</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="139"/> - <source>Error and collision</source> - <translation>Hiba és ütközés</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="145"/> - <source>When folder error</source> - <translation>Mappa hiba esetén</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="155"/> - <source>When file error</source> - <translation>Fájl hiba esetén</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="181"/> - <source>When file collision</source> - <translation>Fájl ütközés esetén</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="241"/> - <source>When folder collision</source> - <translation>Mappa ütközés esetén</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="272"/> - <source>Check if destination folder exists</source> - <translation>Célmappa létezésének ellenőrzése</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="279"/> - <source>Renaming rules</source> - <translation>Átnevezési szabályok</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="299"/> - <source>Delete partially transferred files</source> - <translation>Részben átvitt fájlok törlése</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="312"/> - <source>Rename the original destination</source> - <translation>Eredeti cél átnevezése</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="343"/> - <source>Control</source> - <translation>Irányítás</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="349"/> - <source>Checksum</source> - <translation>Checksum</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="358"/> - <source>Only after error</source> - <translation>Csak hiba után</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="365"/> - <source>Ignore if impossible</source> - <translation>Hagyja ki, ha nem lehetséges</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="382"/> - <source>Verify checksums</source> - <translation>Checksumok ellenőrzése</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="414"/> - <source>Performance</source> - <translation>Teljesítmény</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="420"/> - <source>Parallel buffer</source> - <translation>Párhuzamos puffer</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="427"/> - <location filename="../../copyEngineOptions.ui" line="440"/> - <location filename="../../copyEngineOptions.ui" line="453"/> - <location filename="../../copyEngineOptions.ui" line="490"/> - <location filename="../../copyEngineOptions.ui" line="559"/> - <source>KB</source> - <translation>KB</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="469"/> - <source>Block size</source> - <translation>Blokkméret</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="476"/> - <source>Sequential buffer</source> - <translation>Szekvenciális puffer</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="483"/> - <source>Enable OS buffer</source> - <translation>OS puffer engedélyezése</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="506"/> - <source>OS buffer only if smaller than</source> - <translation>OS buffer csak akkor, ha kisebb mint</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="513"/> - <source>Transfer algorithm</source> - <translation>Átviteli algoritmus</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="552"/> - <source>Parallelize if smaller than</source> - <translation>Párhuzamosítás, ha kisebb mint</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="582"/> - <source>Inode threads (unsafe > 1)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="589"/> - <location filename="../../copyEngineOptions.ui" line="599"/> - <source>More cpu, but better organisation on the disk</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="602"/> - <source>Order the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="618"/> - <source>Misc</source> - <translation>Egyéb</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="624"/> - <source>Check the disk space</source> - <translation>Lemezterület ellenőrzése</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="634"/> - <source>Use this folder when destination is not set</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="646"/> - <source>Browse</source> - <translation>Tallózás</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="668"/> - <source>Filters</source> - <translation>Szűrők</translation> - </message> -</context> -<context> - <name>fileErrorDialog</name> - <message> - <location filename="../../fileErrorDialog.ui" line="14"/> - <source>Error with file</source> - <translation>Hiba a fájllal</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="20"/> - <source>Error</source> - <translation>Hiba</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="59"/> - <source>Size</source> - <translation>Méret</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="76"/> - <source>Modified</source> - <translation>Módosítva</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="93"/> - <source>File name</source> - <translation>Fájlnév</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="110"/> - <source>Destination</source> - <translation>Cél</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="127"/> - <source>Folder</source> - <translation>Mappa</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="173"/> - <source>&Always perform this action</source> - <translation>&Mindig hajtsa végre ezt a műveletet</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="193"/> - <source>Try in with elevated privileges</source> - <translation>Próbálja meg emelt jogosultsággal</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="200"/> - <source>Put to bottom</source> - <translation>Tegye legalulra</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="207"/> - <source>Retry</source> - <translation>Újra</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="214"/> - <source>&Skip</source> - <translation>&Kihagy</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="221"/> - <source>&Cancel</source> - <translation>M&égse</translation> - </message> -</context> -<context> - <name>fileExistsDialog</name> - <message> - <location filename="../../fileExistsDialog.ui" line="14"/> - <source>The file exists</source> - <translation>A fájl létezik</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="34"/> - <source>Source</source> - <translation>Forrás</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation>Cél</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="82"/> - <location filename="../../fileExistsDialog.ui" line="170"/> - <source>Size</source> - <translation>Méret</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="99"/> - <location filename="../../fileExistsDialog.ui" line="187"/> - <source>Modified</source> - <translation>Módosítva</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="116"/> - <location filename="../../fileExistsDialog.ui" line="204"/> - <source>File name</source> - <translation>Fájlnév</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="133"/> - <location filename="../../fileExistsDialog.ui" line="221"/> - <source>Folder</source> - <translation>Mappa</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="277"/> - <source>Suggest new &name</source> - <translation>Új &név ajánlása</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="288"/> - <source>&Always perform this action</source> - <translation>&Mindig hajtsa végre ezt a műveletet</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="346"/> - <location filename="../../fileExistsDialog.ui" line="349"/> - <source>Overwrite if modification date differs</source> - <translation>Felülír, ha a módosítás dátuma különbözik</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="354"/> - <location filename="../../fileExistsDialog.ui" line="357"/> - <source>Overwrite if older</source> - <translation>Felülír, ha régebbi</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="308"/> - <source>&Rename</source> - <translation>&Átnevez</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="315"/> - <source>&Overwrite</source> - <translation>&Felülír</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="325"/> - <source>&Skip</source> - <translation>&Kihagy</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="332"/> - <source>&Cancel</source> - <translation>&Mégse</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="341"/> - <source>Overwrite if newer</source> - <translation>Felülír, ha újabb</translation> - </message> -</context> -<context> - <name>fileIsSameDialog</name> - <message> - <location filename="../../fileIsSameDialog.ui" line="40"/> - <source>Size</source> - <translation>Méret</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="110"/> - <source>Modified</source> - <translation>Módosítva</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="70"/> - <source>File name</source> - <translation>Fájlnév</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="14"/> - <source>The source and destination are same</source> - <translation>A forrás és a cél megegyezik</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="90"/> - <source>Folder</source> - <translation>Mappa</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="159"/> - <source>Suggest new &name</source> - <translation>Új &név javasolása</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="170"/> - <source>&Always perform this action</source> - <translation>&Mindig hajtsa végre ezt a műveletet</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="190"/> - <source>&Rename</source> - <translation>&Átnevez</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="197"/> - <source>&Skip</source> - <translation>&Kihagy</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="204"/> - <source>&Cancel</source> - <translation>M&égse</translation> - </message> -</context> -<context> - <name>folderExistsDialog</name> - <message> - <location filename="../../folderExistsDialog.ui" line="34"/> - <source>Source</source> - <translation>Forrás</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation>Cél</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="82"/> - <location filename="../../folderExistsDialog.ui" line="150"/> - <source>Modified</source> - <translation>Módosítva</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="99"/> - <location filename="../../folderExistsDialog.ui" line="160"/> - <source>Folder name</source> - <translation>Mappa neve</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="227"/> - <source>Suggest new &name</source> - <translation>Új &név javasolása</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="14"/> - <source>The source and destination is identical</source> - <translation>A forrás és a cél megegyezik</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="116"/> - <location filename="../../folderExistsDialog.ui" line="184"/> - <source>Folder</source> - <translation>Mappa</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="238"/> - <source>&Always perform this action</source> - <translation>&Mindig hajtsa végre ezt a műveletet</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="245"/> - <source>&Rename</source> - <translation>&Átnevez</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="252"/> - <source>Merge</source> - <translation>Összeolvaszt</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="259"/> - <source>Skip</source> - <translation>Kihagy</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="266"/> - <source>&Cancel</source> - <translation>M&égse</translation> - </message> -</context> -</TS> diff --git a/plugins/CopyEngine/Ultracopier/Languages/id/translation.ts b/plugins/CopyEngine/Ultracopier/Languages/id/translation.ts deleted file mode 100644 index e17b3f2..0000000 --- a/plugins/CopyEngine/Ultracopier/Languages/id/translation.ts +++ /dev/null @@ -1,1291 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE TS> -<TS version="2.1"> -<context> - <name>AvancedQFile</name> - <message> - <location filename="../../AvancedQFile.cpp" line="26"/> - <location filename="../../AvancedQFile.cpp" line="57"/> - <location filename="../../AvancedQFile.cpp" line="88"/> - <source>Not supported on this platform</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="40"/> - <source>Last modified date is wrong</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="71"/> - <source>Last access date is wrong</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="121"/> - <source>Unknown error: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="187"/> - <source>Unknown error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="133"/> - <source>Path conversion error</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>CopyEngine</name> - <message> - <location filename="../../CopyEngine.cpp" line="429"/> - <location filename="../../CopyEngine.cpp" line="451"/> - <source>The engine is forced to move, you can't copy with it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="462"/> - <location filename="../../CopyEngine.cpp" line="484"/> - <source>The engine is forced to copy, you can't move with it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Use the actual destination "%1"?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="732"/> - <source>The mode has been forced previously. This is an internal error, please report it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1062"/> - <location filename="../../CopyEngine.cpp" line="1065"/> - <location filename="../../CopyEngine.cpp" line="1070"/> - <location filename="../../CopyEngine.cpp" line="1074"/> - <source>Ask</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1063"/> - <location filename="../../CopyEngine.cpp" line="1067"/> - <location filename="../../CopyEngine.cpp" line="1071"/> - <location filename="../../CopyEngine.cpp" line="1075"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1066"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1068"/> - <location filename="../../CopyEngine.cpp" line="1080"/> - <source>Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1072"/> - <source>Put at the end</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1076"/> - <source>Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1077"/> - <source>Overwrite if different</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1078"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1079"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1082"/> - <source>Automatic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1083"/> - <source>Sequential</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1084"/> - <source>Parallel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>CopyEngineFactory</name> - <message> - <location filename="../../CopyEngineFactory.cpp" line="427"/> - <location filename="../../CopyEngineFactory.cpp" line="430"/> - <location filename="../../CopyEngineFactory.cpp" line="435"/> - <location filename="../../CopyEngineFactory.cpp" line="439"/> - <source>Ask</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="428"/> - <location filename="../../CopyEngineFactory.cpp" line="432"/> - <location filename="../../CopyEngineFactory.cpp" line="436"/> - <location filename="../../CopyEngineFactory.cpp" line="440"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="431"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="433"/> - <location filename="../../CopyEngineFactory.cpp" line="445"/> - <source>Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="437"/> - <source>Put at the end</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="441"/> - <source>Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="442"/> - <source>Overwrite if different</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="443"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="444"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="447"/> - <source>Automatic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="448"/> - <source>Sequential</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="449"/> - <source>Parallel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options engine is not loaded, can't access to the filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>DiskSpace</name> - <message> - <location filename="../../DiskSpace.ui" line="14"/> - <source>Disk space</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="24"/> - <source>You need more space on this drive to finish this transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="49"/> - <source>Continue</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="56"/> - <source>Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.cpp" line="23"/> - <source>Drives %1 have %2 available but need %3</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileErrorDialog</name> - <message> - <location filename="../../FileErrorDialog.cpp" line="54"/> - <source>Error on folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileErrorDialog.cpp" line="57"/> - <source>Folder name</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileExistsDialog</name> - <message> - <location filename="../../FileExistsDialog.cpp" line="137"/> - <source>%name% - copy%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="144"/> - <source>%name% - copy (%number%)%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileIsSameDialog</name> - <message> - <location filename="../../FileIsSameDialog.cpp" line="111"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="118"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FilterRules</name> - <message> - <location filename="../../FilterRules.ui" line="33"/> - <source>Search:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="43"/> - <source>Search type:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="51"/> - <source>Raw text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="56"/> - <source>Simplified regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="61"/> - <source>Perl's regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="69"/> - <source>Apply on:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="77"/> - <source>File</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="82"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="87"/> - <source>File and folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="125"/> - <source>The test string matches with the regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="102"/> - <source>Checking</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="115"/> - <source>Test string:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="17"/> - <source>Filters dialog</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="95"/> - <source>Whole string must match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="108"/> - <source>The regex is valid</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>Filters</name> - <message> - <location filename="../../Filters.ui" line="14"/> - <source>Filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="30"/> - <source>Exclusion filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="93"/> - <source>Inclusion filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="105"/> - <source>None = Include all</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="93"/> - <location filename="../../Filters.cpp" line="131"/> - <source>Raw text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="96"/> - <location filename="../../Filters.cpp" line="134"/> - <source>Simplified regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="99"/> - <location filename="../../Filters.cpp" line="137"/> - <source>Perl's regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="107"/> - <location filename="../../Filters.cpp" line="145"/> - <source>Only on file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="110"/> - <location filename="../../Filters.cpp" line="148"/> - <source>Only on folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="116"/> - <location filename="../../Filters.cpp" line="154"/> - <location filename="../../Filters.cpp" line="216"/> - <location filename="../../Filters.cpp" line="255"/> - <source>Full match</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FolderExistsDialog</name> - <message> - <location filename="../../FolderExistsDialog.cpp" line="57"/> - <source>Folder already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="122"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="131"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ListThread</name> - <message> - <location filename="../../ListThread.cpp" line="1487"/> - <location filename="../../ListThread.cpp" line="2419"/> - <source>Unable do to move or copy item into wrong forced mode: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1494"/> - <location filename="../../ListThread.cpp" line="2426"/> - <source>Unable to save the transfer list: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1510"/> - <source>Problem reading file, or file-size is 0</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1517"/> - <source>Wrong header: "%1"</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1526"/> - <source>The transfer list is in mixed mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1535"/> - <source>The transfer list is in copy mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1541"/> - <source>The transfer list is in move mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1604"/> - <source>Some errors have been found during the line parsing</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1612"/> - <source>Unable to open the transfer list: %1</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>MkPath</name> - <message> - <location filename="../../MkPath.cpp" line="142"/> - <source>Unable to create the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="155"/> - <source>The source folder don't exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="183"/> - <source>Unable to temporary rename the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="206"/> - <source>Unable to do the final real move the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="233"/> - <source>Unable to move the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="93"/> - <location filename="../../MkPath.cpp" line="276"/> - <source>Unable to remove</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ReadThread</name> - <message> - <location filename="../../ReadThread.cpp" line="59"/> - <source>Internal error, please report it!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="188"/> - <source>Internal error reading the source file:block size out of range</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="196"/> - <location filename="../../ReadThread.cpp" line="420"/> - <source>Unable to read the source file: </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="237"/> - <location filename="../../ReadThread.cpp" line="468"/> - <source>File truncated during the read, possible data change</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>RenamingRules</name> - <message> - <location filename="../../RenamingRules.ui" line="35"/> - <source>First renaming</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="41"/> - <source>%name% - copy%suffix%</source> - <extracomment>%name% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="57"/> - <source>%name% - copy (%number%)%suffix%</source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="67"/> - <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name, <span style=" font-weight:600;">%number%</span> for the extra number, <span style=" font-weight:600;">%suffix%</span> file suffix</p></body></html></source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="51"/> - <source>Second renaming</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="39"/> - <location filename="../../RenamingRules.cpp" line="62"/> - <source>%1 - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="43"/> - <location filename="../../RenamingRules.cpp" line="73"/> - <source>%1 - copy (%2)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="14"/> - <source>Renaming rules</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ScanFileOrFolder</name> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="274"/> - <source>Blacklisted folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="338"/> - <source>%1 - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="345"/> - <source>%1 - copy (%2)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="401"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="408"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="444"/> - <source>This is not a folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="446"/> - <source>The folder does exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="448"/> - <source>The folder is not readable</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="459"/> - <source>Problem with name encoding</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>TransferThread</name> - <message> - <location filename="../../TransferThread.cpp" line="244"/> - <location filename="../../TransferThread.cpp" line="673"/> - <location filename="../../TransferThread.cpp" line="745"/> - <location filename="../../TransferThread.cpp" line="1315"/> - <source>File not found</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="346"/> - <location filename="../../TransferThread.cpp" line="363"/> - <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="421"/> - <location filename="../../TransferThread.cpp" line="444"/> - <source>Internal error: Already opening</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="586"/> - <source>Drive %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="588"/> - <source>Unknown folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="592"/> - <source>root</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="645"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="652"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="711"/> - <location filename="../../TransferThread.cpp" line="826"/> - <source>The source file doesn't exist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="751"/> - <location filename="../../TransferThread.cpp" line="838"/> - <source>Unable to do the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="787"/> - <source>The source doesn't exist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="832"/> - <source>Another file exists at same place</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1134"/> - <source>The checksums do not match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1224"/> - <source>Internal error: The destination is not closed</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1239"/> - <source>Internal error: The size transfered doesn't match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1250"/> - <source>Internal error: The buffer is not empty</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1315"/> - <location filename="../../TransferThread.cpp" line="1333"/> - <location filename="../../TransferThread.cpp" line="1348"/> - <source>Unable to change the date</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>WriteThread</name> - <message> - <location filename="../../WriteThread.cpp" line="83"/> - <source>Path resolution error (Empty path)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="277"/> - <source>Internal error, please report it!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="680"/> - <source>Unable to read the source file: </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="705"/> - <source>File truncated during read, possible data change</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>copyEngineOptions</name> - <message> - <location filename="../../copyEngineOptions.ui" line="44"/> - <source>Transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="53"/> - <source>Move the whole folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="60"/> - <source>Transfer the file rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="70"/> - <source>Keep the file date</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="83"/> - <source>Autostart the transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="90"/> - <location filename="../../copyEngineOptions.ui" line="110"/> - <source>Less performance if checked</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="113"/> - <source>Follow the strict order</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="139"/> - <source>Error and collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="145"/> - <source>When folder error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="155"/> - <source>When file error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="181"/> - <source>When file collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="241"/> - <source>When folder collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="272"/> - <source>Check if destination folder exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="279"/> - <source>Renaming rules</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="299"/> - <source>Delete partially transferred files</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="312"/> - <source>Rename the original destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="343"/> - <source>Control</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="349"/> - <source>Checksum</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="358"/> - <source>Only after error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="365"/> - <source>Ignore if impossible</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="382"/> - <source>Verify checksums</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="414"/> - <source>Performance</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="420"/> - <source>Parallel buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="427"/> - <location filename="../../copyEngineOptions.ui" line="440"/> - <location filename="../../copyEngineOptions.ui" line="453"/> - <location filename="../../copyEngineOptions.ui" line="490"/> - <location filename="../../copyEngineOptions.ui" line="559"/> - <source>KB</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="469"/> - <source>Block size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="476"/> - <source>Sequential buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="483"/> - <source>Enable OS buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="506"/> - <source>OS buffer only if smaller than</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="513"/> - <source>Transfer algorithm</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="552"/> - <source>Parallelize if smaller than</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="582"/> - <source>Inode threads (unsafe > 1)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="589"/> - <location filename="../../copyEngineOptions.ui" line="599"/> - <source>More cpu, but better organisation on the disk</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="602"/> - <source>Order the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="618"/> - <source>Misc</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="624"/> - <source>Check the disk space</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="634"/> - <source>Use this folder when destination is not set</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="646"/> - <source>Browse</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="668"/> - <source>Filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileErrorDialog</name> - <message> - <location filename="../../fileErrorDialog.ui" line="14"/> - <source>Error with file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="20"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="59"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="76"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="93"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="110"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="127"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="173"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="193"/> - <source>Try in with elevated privileges</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="200"/> - <source>Put to bottom</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="207"/> - <source>Retry</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="214"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="221"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileExistsDialog</name> - <message> - <location filename="../../fileExistsDialog.ui" line="14"/> - <source>The file exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="34"/> - <source>Source</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="82"/> - <location filename="../../fileExistsDialog.ui" line="170"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="99"/> - <location filename="../../fileExistsDialog.ui" line="187"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="116"/> - <location filename="../../fileExistsDialog.ui" line="204"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="133"/> - <location filename="../../fileExistsDialog.ui" line="221"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="277"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="288"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="346"/> - <location filename="../../fileExistsDialog.ui" line="349"/> - <source>Overwrite if modification date differs</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="308"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="315"/> - <source>&Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="325"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="332"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="341"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="354"/> - <location filename="../../fileExistsDialog.ui" line="357"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileIsSameDialog</name> - <message> - <location filename="../../fileIsSameDialog.ui" line="40"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="110"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="70"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="14"/> - <source>The source and destination are same</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="90"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="159"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="170"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="190"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="197"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="204"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>folderExistsDialog</name> - <message> - <location filename="../../folderExistsDialog.ui" line="34"/> - <source>Source</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="14"/> - <source>The source and destination is identical</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="82"/> - <location filename="../../folderExistsDialog.ui" line="150"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="99"/> - <location filename="../../folderExistsDialog.ui" line="160"/> - <source>Folder name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="116"/> - <location filename="../../folderExistsDialog.ui" line="184"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="227"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="238"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="245"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="252"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="259"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="266"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -</TS> diff --git a/plugins/CopyEngine/Ultracopier/Languages/it/translation.ts b/plugins/CopyEngine/Ultracopier/Languages/it/translation.ts deleted file mode 100644 index cba024c..0000000 --- a/plugins/CopyEngine/Ultracopier/Languages/it/translation.ts +++ /dev/null @@ -1,1297 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE TS> -<TS version="2.1" language="it" sourcelanguage="en"> -<context> - <name>AvancedQFile</name> - <message> - <location filename="../../AvancedQFile.cpp" line="26"/> - <location filename="../../AvancedQFile.cpp" line="57"/> - <location filename="../../AvancedQFile.cpp" line="88"/> - <source>Not supported on this platform</source> - <translation>Non supportato su questa piattaforma</translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="40"/> - <source>Last modified date is wrong</source> - <translation>La data dell'ultima modifica è errata</translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="71"/> - <source>Last access date is wrong</source> - <translation>La data dell'ultimo accesso è errata</translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="121"/> - <source>Unknown error: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="187"/> - <source>Unknown error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="133"/> - <source>Path conversion error</source> - <translation>Percorso dell'errore di conversione</translation> - </message> -</context> -<context> - <name>CopyEngine</name> - <message> - <location filename="../../CopyEngine.cpp" line="429"/> - <location filename="../../CopyEngine.cpp" line="451"/> - <source>The engine is forced to move, you can't copy with it</source> - <translation>Impossibile copiare, il motore per la copia forzerà lo spostamento</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="462"/> - <location filename="../../CopyEngine.cpp" line="484"/> - <source>The engine is forced to copy, you can't move with it</source> - <translation>Impossibile effettuare lo spostamento, il motore per la copia forzerà la copia</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Destination</source> - <translation type="unfinished">Cartella di destinazione</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Use the actual destination "%1"?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="732"/> - <source>The mode has been forced previously. This is an internal error, please report it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1062"/> - <location filename="../../CopyEngine.cpp" line="1065"/> - <location filename="../../CopyEngine.cpp" line="1070"/> - <location filename="../../CopyEngine.cpp" line="1074"/> - <source>Ask</source> - <translation>Chiedi</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1063"/> - <location filename="../../CopyEngine.cpp" line="1067"/> - <location filename="../../CopyEngine.cpp" line="1071"/> - <location filename="../../CopyEngine.cpp" line="1075"/> - <source>Skip</source> - <translation>Salta</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1066"/> - <source>Merge</source> - <translation>Unisci</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1068"/> - <location filename="../../CopyEngine.cpp" line="1080"/> - <source>Rename</source> - <translation>Rinomina</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1072"/> - <source>Put at the end</source> - <translation>Metti in coda</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1076"/> - <source>Overwrite</source> - <translation>Sovrascrivi</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1077"/> - <source>Overwrite if different</source> - <translation>Sovrascrivi se differente</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1078"/> - <source>Overwrite if newer</source> - <translation>Sovrascrivi se più recente</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1079"/> - <source>Overwrite if older</source> - <translation>Sovrascrivi se meno recente</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1082"/> - <source>Automatic</source> - <translation>Automatico</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1083"/> - <source>Sequential</source> - <translation>Sequenziale</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1084"/> - <source>Parallel</source> - <translation>Parallelo</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options error</source> - <translation>Opzioni di errore</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>CopyEngineFactory</name> - <message> - <location filename="../../CopyEngineFactory.cpp" line="427"/> - <location filename="../../CopyEngineFactory.cpp" line="430"/> - <location filename="../../CopyEngineFactory.cpp" line="435"/> - <location filename="../../CopyEngineFactory.cpp" line="439"/> - <source>Ask</source> - <translation>Chiedi</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="428"/> - <location filename="../../CopyEngineFactory.cpp" line="432"/> - <location filename="../../CopyEngineFactory.cpp" line="436"/> - <location filename="../../CopyEngineFactory.cpp" line="440"/> - <source>Skip</source> - <translation>Salta</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="431"/> - <source>Merge</source> - <translation>Unisci</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="433"/> - <location filename="../../CopyEngineFactory.cpp" line="445"/> - <source>Rename</source> - <translation>Rinomina</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="437"/> - <source>Put at the end</source> - <translation>Metti in coda</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="441"/> - <source>Overwrite</source> - <translation>Sovrascrivi</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="442"/> - <source>Overwrite if different</source> - <translation>Sovrascrivi se differente</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="443"/> - <source>Overwrite if newer</source> - <translation>Sovrascrivi se più recente</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="444"/> - <source>Overwrite if older</source> - <translation>Sovrascrivi se meno recente</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="447"/> - <source>Automatic</source> - <translation>Automatico</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="448"/> - <source>Sequential</source> - <translation>Sequenziale</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="449"/> - <source>Parallel</source> - <translation>Parallelo</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options error</source> - <translation>Opzioni di errore</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options engine is not loaded, can't access to the filters</source> - <translation>Le opzioni del motore per la copia non vengono caricate, impossibile accedere ai filtri</translation> - </message> -</context> -<context> - <name>DiskSpace</name> - <message> - <location filename="../../DiskSpace.ui" line="14"/> - <source>Disk space</source> - <translation>Spazio su disco</translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="24"/> - <source>You need more space on this drive to finish this transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="49"/> - <source>Continue</source> - <translation>Continua</translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="56"/> - <source>Cancel</source> - <translation>Annulla</translation> - </message> - <message> - <location filename="../../DiskSpace.cpp" line="23"/> - <source>Drives %1 have %2 available but need %3</source> - <translation>L'unità %1 ha %2 disponibili, ma necessita di %3</translation> - </message> -</context> -<context> - <name>FileErrorDialog</name> - <message> - <location filename="../../FileErrorDialog.cpp" line="54"/> - <source>Error on folder</source> - <translation>Errore nella cartella</translation> - </message> - <message> - <location filename="../../FileErrorDialog.cpp" line="57"/> - <source>Folder name</source> - <translation>Nome della cartella</translation> - </message> -</context> -<context> - <name>FileExistsDialog</name> - <message> - <location filename="../../FileExistsDialog.cpp" line="137"/> - <source>%name% - copy%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="144"/> - <source>%name% - copy (%number%)%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Error</source> - <translation>Errore</translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileIsSameDialog</name> - <message> - <location filename="../../FileIsSameDialog.cpp" line="111"/> - <source>%name% - copy</source> - <translation type="unfinished">Copia di %name%</translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="118"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished">Copia di %name% (%number%)</translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Error</source> - <translation>Errore</translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FilterRules</name> - <message> - <location filename="../../FilterRules.ui" line="33"/> - <source>Search:</source> - <translation>Cerca:</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="43"/> - <source>Search type:</source> - <translation>Tipo di ricerca:</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="51"/> - <source>Raw text</source> - <translation>Testo raw</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="56"/> - <source>Simplified regex</source> - <translation>Regex semplificato</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="61"/> - <source>Perl's regex</source> - <translation>Regex in Perl</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="69"/> - <source>Apply on:</source> - <translation>Applicare su:</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="77"/> - <source>File</source> - <translation>File</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="82"/> - <source>Folder</source> - <translation>Cartelle</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="87"/> - <source>File and folder</source> - <translation>File e cartelle</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="125"/> - <source>The test string matches with the regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="102"/> - <source>Checking</source> - <translation>Verifica</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="115"/> - <source>Test string:</source> - <translation>Stringa di verifica:</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="17"/> - <source>Filters dialog</source> - <translation>Finestra dei filtri</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="95"/> - <source>Whole string must match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="108"/> - <source>The regex is valid</source> - <translation>La regex è valida</translation> - </message> -</context> -<context> - <name>Filters</name> - <message> - <location filename="../../Filters.ui" line="14"/> - <source>Filters</source> - <translation>Filtri</translation> - </message> - <message> - <location filename="../../Filters.ui" line="30"/> - <source>Exclusion filters</source> - <translation>Filtri di esclusione</translation> - </message> - <message> - <location filename="../../Filters.ui" line="93"/> - <source>Inclusion filters</source> - <translatorcomment>o filtri per l'inserimento?</translatorcomment> - <translation>Filtri di inclusione</translation> - </message> - <message> - <location filename="../../Filters.ui" line="105"/> - <source>None = Include all</source> - <translatorcomment>o Nessuno = Includi tutti oppure Nessuno = Inserisci tutti oppure bisogna lasiare none?</translatorcomment> - <translation>Nessuno = Tutti inclusi</translation> - </message> - <message> - <location filename="../../Filters.cpp" line="93"/> - <location filename="../../Filters.cpp" line="131"/> - <source>Raw text</source> - <translation>Testo raw</translation> - </message> - <message> - <location filename="../../Filters.cpp" line="96"/> - <location filename="../../Filters.cpp" line="134"/> - <source>Simplified regex</source> - <translation>Regex semplificato</translation> - </message> - <message> - <location filename="../../Filters.cpp" line="99"/> - <location filename="../../Filters.cpp" line="137"/> - <source>Perl's regex</source> - <translation>Regex in Perl</translation> - </message> - <message> - <location filename="../../Filters.cpp" line="107"/> - <location filename="../../Filters.cpp" line="145"/> - <source>Only on file</source> - <translation>Solo su file</translation> - </message> - <message> - <location filename="../../Filters.cpp" line="110"/> - <location filename="../../Filters.cpp" line="148"/> - <source>Only on folder</source> - <translatorcomment>o cartella al singolare?</translatorcomment> - <translation>Solo su cartelle</translation> - </message> - <message> - <location filename="../../Filters.cpp" line="116"/> - <location filename="../../Filters.cpp" line="154"/> - <location filename="../../Filters.cpp" line="216"/> - <location filename="../../Filters.cpp" line="255"/> - <source>Full match</source> - <translation>Corrispondenza completa</translation> - </message> -</context> -<context> - <name>FolderExistsDialog</name> - <message> - <location filename="../../FolderExistsDialog.cpp" line="57"/> - <source>Folder already exists</source> - <translation>Cartella già presente</translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="122"/> - <source>%name% - copy</source> - <translation type="unfinished">Copia di %name%</translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="131"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished">Copia di %name% (%number%)</translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Error</source> - <translation>Errore</translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ListThread</name> - <message> - <location filename="../../ListThread.cpp" line="1487"/> - <location filename="../../ListThread.cpp" line="2419"/> - <source>Unable do to move or copy item into wrong forced mode: %1</source> - <translation>Impossibile spostare o copiare elementi in modalità forzata anomala: %1</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1494"/> - <location filename="../../ListThread.cpp" line="2426"/> - <source>Unable to save the transfer list: %1</source> - <translation>Impossibile salvare la lista dei trasferimenti: %1</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1510"/> - <source>Problem reading file, or file-size is 0</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1517"/> - <source>Wrong header: "%1"</source> - <translatorcomment>Header si riferisce all'intestazione?</translatorcomment> - <translation>Intestazione sbagliata: "%1"</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1526"/> - <source>The transfer list is in mixed mode, but this instance is not in this mode</source> - <translation>La lista dei trasferimenti è in modalità mista, ma questa istanza non è in questa modalità</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1535"/> - <source>The transfer list is in copy mode, but this instance is not in this mode</source> - <translation>La lista dei trasferimenti è in modalità di copia, ma questa istanza non è in questa modalità</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1541"/> - <source>The transfer list is in move mode, but this instance is not in this mode</source> - <translation>La lista dei trasferimenti è in modalità di spostamento, ma questa istanza non è in questa modalità</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1604"/> - <source>Some errors have been found during the line parsing</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1612"/> - <source>Unable to open the transfer list: %1</source> - <translation>Impossibile aprire la lista dei trasferimenti: %1</translation> - </message> -</context> -<context> - <name>MkPath</name> - <message> - <location filename="../../MkPath.cpp" line="142"/> - <source>Unable to create the folder</source> - <translation>Impossibile creare la cartella</translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="155"/> - <source>The source folder don't exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="183"/> - <source>Unable to temporary rename the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="206"/> - <source>Unable to do the final real move the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="233"/> - <source>Unable to move the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="93"/> - <location filename="../../MkPath.cpp" line="276"/> - <source>Unable to remove</source> - <translation>Impossibile eliminare</translation> - </message> -</context> -<context> - <name>ReadThread</name> - <message> - <location filename="../../ReadThread.cpp" line="59"/> - <source>Internal error, please report it!</source> - <translation>Errore interno, pregasi di segnalarlo!</translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="188"/> - <source>Internal error reading the source file:block size out of range</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="196"/> - <location filename="../../ReadThread.cpp" line="420"/> - <source>Unable to read the source file: </source> - <translation>Impossibile leggere il file di origine: </translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="237"/> - <location filename="../../ReadThread.cpp" line="468"/> - <source>File truncated during the read, possible data change</source> - <translation>File troncato durante la lettura, possibili variazioni di dati</translation> - </message> -</context> -<context> - <name>RenamingRules</name> - <message> - <location filename="../../RenamingRules.ui" line="35"/> - <source>First renaming</source> - <translatorcomment>o Prima ridenominazione?</translatorcomment> - <translation>Prima rinomina</translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="41"/> - <source>%name% - copy%suffix%</source> - <extracomment>%name% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="57"/> - <source>%name% - copy (%number%)%suffix%</source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="67"/> - <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name, <span style=" font-weight:600;">%number%</span> for the extra number, <span style=" font-weight:600;">%suffix%</span> file suffix</p></body></html></source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="51"/> - <source>Second renaming</source> - <translatorcomment>o Seconda ridenominazione?</translatorcomment> - <translation>Seconda rinomina</translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="39"/> - <location filename="../../RenamingRules.cpp" line="62"/> - <source>%1 - copy</source> - <translation>%1 - copia</translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="43"/> - <location filename="../../RenamingRules.cpp" line="73"/> - <source>%1 - copy (%2)</source> - <translation>%1 - copia (%2)</translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="14"/> - <source>Renaming rules</source> - <translation>Regole di rinomina</translation> - </message> -</context> -<context> - <name>ScanFileOrFolder</name> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="274"/> - <source>Blacklisted folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="338"/> - <source>%1 - copy</source> - <translation>%1 - copia</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="345"/> - <source>%1 - copy (%2)</source> - <translation>%1 - copia (%2)</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="401"/> - <source>%name% - copy</source> - <translation type="unfinished">Copia di %name%</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="408"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished">Copia di %name% (%number%)</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="444"/> - <source>This is not a folder</source> - <translation>Questa non è una cartella</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="446"/> - <source>The folder does exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="448"/> - <source>The folder is not readable</source> - <translation>La cartella non è leggibile</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="459"/> - <source>Problem with name encoding</source> - <translation>Problema con la codifica del nome</translation> - </message> -</context> -<context> - <name>TransferThread</name> - <message> - <location filename="../../TransferThread.cpp" line="244"/> - <location filename="../../TransferThread.cpp" line="673"/> - <location filename="../../TransferThread.cpp" line="745"/> - <location filename="../../TransferThread.cpp" line="1315"/> - <source>File not found</source> - <translation>File non trovato</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="346"/> - <location filename="../../TransferThread.cpp" line="363"/> - <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="421"/> - <location filename="../../TransferThread.cpp" line="444"/> - <source>Internal error: Already opening</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="586"/> - <source>Drive %1</source> - <translation type="unfinished">Unità %1</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="588"/> - <source>Unknown folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="592"/> - <source>root</source> - <translation type="unfinished">root</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="711"/> - <location filename="../../TransferThread.cpp" line="826"/> - <source>The source file doesn't exist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="751"/> - <location filename="../../TransferThread.cpp" line="838"/> - <source>Unable to do the folder</source> - <translation type="unfinished">Impossibile creare la cartella</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="645"/> - <source>%name% - copy</source> - <translation type="unfinished">Copia di %name%</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="652"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished">Copia di %name% (%number%)</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="787"/> - <source>The source doesn't exist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="832"/> - <source>Another file exists at same place</source> - <translation type="unfinished">Nello stesso percorso è presente un altro file</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1134"/> - <source>The checksums do not match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1224"/> - <source>Internal error: The destination is not closed</source> - <translation type="unfinished">Errore interno: la cartella di destinazione non è chiusa</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1239"/> - <source>Internal error: The size transfered doesn't match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1250"/> - <source>Internal error: The buffer is not empty</source> - <translation type="unfinished">Errore interno: il buffer non è vuoto</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1315"/> - <location filename="../../TransferThread.cpp" line="1333"/> - <location filename="../../TransferThread.cpp" line="1348"/> - <source>Unable to change the date</source> - <translation type="unfinished">Impossibile cambiare la data</translation> - </message> -</context> -<context> - <name>WriteThread</name> - <message> - <location filename="../../WriteThread.cpp" line="83"/> - <source>Path resolution error (Empty path)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="277"/> - <source>Internal error, please report it!</source> - <translation>Errore interno, pregasi di segnalarlo!</translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="680"/> - <source>Unable to read the source file: </source> - <translation>Impossibile leggere il file di origine: </translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="705"/> - <source>File truncated during read, possible data change</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>copyEngineOptions</name> - <message> - <location filename="../../copyEngineOptions.ui" line="44"/> - <source>Transfer</source> - <translation>Trasferisci</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="53"/> - <source>Move the whole folder</source> - <translation>Spostare l'intera cartella</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="60"/> - <source>Transfer the file rights</source> - <translation>Trasferire le autorizzazioni dei file</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="70"/> - <source>Keep the file date</source> - <translation>Mantenere la data del file</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="83"/> - <source>Autostart the transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="90"/> - <location filename="../../copyEngineOptions.ui" line="110"/> - <source>Less performance if checked</source> - <translation>Se selezionato si avranno prestazioni ridotte</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="113"/> - <source>Follow the strict order</source> - <translation>Seguire rigorosamente l'ordine</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="139"/> - <source>Error and collision</source> - <translation>Errori di coincidenze</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="145"/> - <source>When folder error</source> - <translation>Quando si verifica un errore nelle cartelle</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="155"/> - <source>When file error</source> - <translation>Quando si verifica un errore nei file</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="181"/> - <source>When file collision</source> - <translation>Quando i file coincidono</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="241"/> - <source>When folder collision</source> - <translation>Quando le cartelle coincidono</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="272"/> - <source>Check if destination folder exists</source> - <translation>Controllare se la cartella di destinazione esiste</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="279"/> - <source>Renaming rules</source> - <translation>Regole di rinomina</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="299"/> - <source>Delete partially transferred files</source> - <translation>Eliminare i file parzialmente trasferiti</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="312"/> - <source>Rename the original destination</source> - <translation>Rinominare la destinazione all'origine</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="343"/> - <source>Control</source> - <translation>Controllare</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="349"/> - <source>Checksum</source> - <translation>Codice di controllo (Checksum)</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="358"/> - <source>Only after error</source> - <translation>Solo dopo l'errore</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="365"/> - <source>Ignore if impossible</source> - <translation>Ignora se non corrisponde</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="382"/> - <source>Verify checksums</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="414"/> - <source>Performance</source> - <translation>Prestazioni</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="420"/> - <source>Parallel buffer</source> - <translation>Buffer parallelo</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="427"/> - <location filename="../../copyEngineOptions.ui" line="440"/> - <location filename="../../copyEngineOptions.ui" line="453"/> - <location filename="../../copyEngineOptions.ui" line="490"/> - <location filename="../../copyEngineOptions.ui" line="559"/> - <source>KB</source> - <translation>KB</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="469"/> - <source>Block size</source> - <translation>Dimensione del blocco</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="476"/> - <source>Sequential buffer</source> - <translation>Buffer sequenziale</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="483"/> - <source>Enable OS buffer</source> - <translation>Attivare il buffer del sistema operativo</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="506"/> - <source>OS buffer only if smaller than</source> - <translation>Buffer del sistema operativo solo se inferiore a</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="513"/> - <source>Transfer algorithm</source> - <translation>Algoritmo di trasferimento </translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="552"/> - <source>Parallelize if smaller than</source> - <translation>Affiancare se inferiore a</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="582"/> - <source>Inode threads (unsafe > 1)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="589"/> - <location filename="../../copyEngineOptions.ui" line="599"/> - <source>More cpu, but better organisation on the disk</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="602"/> - <source>Order the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="618"/> - <source>Misc</source> - <translation>Varie</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="624"/> - <source>Check the disk space</source> - <translation>Controllare lo spazio su disco</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="634"/> - <source>Use this folder when destination is not set</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="646"/> - <source>Browse</source> - <translation>Sfoglia</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="668"/> - <source>Filters</source> - <translation>Filtri</translation> - </message> -</context> -<context> - <name>fileErrorDialog</name> - <message> - <location filename="../../fileErrorDialog.ui" line="14"/> - <source>Error with file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="20"/> - <source>Error</source> - <translation>Errore</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="59"/> - <source>Size</source> - <translation>Dimensione</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="76"/> - <source>Modified</source> - <translation>Modificato</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="93"/> - <source>File name</source> - <translation>Nome del file</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="110"/> - <source>Destination</source> - <translation>Cartella di destinazione</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="127"/> - <source>Folder</source> - <translation>Cartelle</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="173"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="193"/> - <source>Try in with elevated privileges</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="200"/> - <source>Put to bottom</source> - <translation>Mettere in coda</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="207"/> - <source>Retry</source> - <translation>Riprova</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="214"/> - <source>&Skip</source> - <translation>&Salta</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="221"/> - <source>&Cancel</source> - <translation>&Annulla</translation> - </message> -</context> -<context> - <name>fileExistsDialog</name> - <message> - <location filename="../../fileExistsDialog.ui" line="14"/> - <source>The file exists</source> - <translation>Il file è già presente</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="34"/> - <source>Source</source> - <translation>Cartella di origine</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation>Cartella di destinazione</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="82"/> - <location filename="../../fileExistsDialog.ui" line="170"/> - <source>Size</source> - <translation>Dimensione</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="99"/> - <location filename="../../fileExistsDialog.ui" line="187"/> - <source>Modified</source> - <translation>Modificato</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="116"/> - <location filename="../../fileExistsDialog.ui" line="204"/> - <source>File name</source> - <translation>Nome del file</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="133"/> - <location filename="../../fileExistsDialog.ui" line="221"/> - <source>Folder</source> - <translation>Cartelle</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="277"/> - <source>Suggest new &name</source> - <translation>Suggerisci un nuovo &nome</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="288"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="346"/> - <location filename="../../fileExistsDialog.ui" line="349"/> - <source>Overwrite if modification date differs</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="308"/> - <source>&Rename</source> - <translation>&Rinomina</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="315"/> - <source>&Overwrite</source> - <translation>&Sovrascrivi</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="325"/> - <source>&Skip</source> - <translation>&Salta</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="332"/> - <source>&Cancel</source> - <translation>&Annulla</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="341"/> - <source>Overwrite if newer</source> - <translation>Sovrascrivi se più recente</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="354"/> - <location filename="../../fileExistsDialog.ui" line="357"/> - <source>Overwrite if older</source> - <translation>Sovrascrivi se meno recente</translation> - </message> -</context> -<context> - <name>fileIsSameDialog</name> - <message> - <location filename="../../fileIsSameDialog.ui" line="40"/> - <source>Size</source> - <translation>Dimensione</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="110"/> - <source>Modified</source> - <translation>Modificato</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="70"/> - <source>File name</source> - <translation>Nome del file</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="14"/> - <source>The source and destination are same</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="90"/> - <source>Folder</source> - <translation>Cartelle</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="159"/> - <source>Suggest new &name</source> - <translation>Suggerisci nuovo &nome</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="170"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="190"/> - <source>&Rename</source> - <translation>&Rinomina</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="197"/> - <source>&Skip</source> - <translation>&Salta</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="204"/> - <source>&Cancel</source> - <translation>&Annulla</translation> - </message> -</context> -<context> - <name>folderExistsDialog</name> - <message> - <location filename="../../folderExistsDialog.ui" line="34"/> - <source>Source</source> - <translation>Cartella di origine</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation>Cartella di destinazione</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="14"/> - <source>The source and destination is identical</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="82"/> - <location filename="../../folderExistsDialog.ui" line="150"/> - <source>Modified</source> - <translation>Modificato</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="99"/> - <location filename="../../folderExistsDialog.ui" line="160"/> - <source>Folder name</source> - <translation>Nome della cartella</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="116"/> - <location filename="../../folderExistsDialog.ui" line="184"/> - <source>Folder</source> - <translation>Cartelle</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="227"/> - <source>Suggest new &name</source> - <translation>Suggerisci nuovo &nome</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="238"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="245"/> - <source>&Rename</source> - <translation>&Rinomina</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="252"/> - <source>Merge</source> - <translation>Unisci</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="259"/> - <source>Skip</source> - <translation>Salta</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="266"/> - <source>&Cancel</source> - <translation>&Annulla</translation> - </message> -</context> -</TS> diff --git a/plugins/CopyEngine/Ultracopier/Languages/ja/translation.ts b/plugins/CopyEngine/Ultracopier/Languages/ja/translation.ts deleted file mode 100644 index 19bfabd..0000000 --- a/plugins/CopyEngine/Ultracopier/Languages/ja/translation.ts +++ /dev/null @@ -1,1291 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE TS> -<TS version="2.1"> -<context> - <name>AvancedQFile</name> - <message> - <location filename="../../AvancedQFile.cpp" line="26"/> - <location filename="../../AvancedQFile.cpp" line="57"/> - <location filename="../../AvancedQFile.cpp" line="88"/> - <source>Not supported on this platform</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="40"/> - <source>Last modified date is wrong</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="71"/> - <source>Last access date is wrong</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="121"/> - <source>Unknown error: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="187"/> - <source>Unknown error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="133"/> - <source>Path conversion error</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>CopyEngine</name> - <message> - <location filename="../../CopyEngine.cpp" line="429"/> - <location filename="../../CopyEngine.cpp" line="451"/> - <source>The engine is forced to move, you can't copy with it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="462"/> - <location filename="../../CopyEngine.cpp" line="484"/> - <source>The engine is forced to copy, you can't move with it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Use the actual destination "%1"?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="732"/> - <source>The mode has been forced previously. This is an internal error, please report it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1062"/> - <location filename="../../CopyEngine.cpp" line="1065"/> - <location filename="../../CopyEngine.cpp" line="1070"/> - <location filename="../../CopyEngine.cpp" line="1074"/> - <source>Ask</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1063"/> - <location filename="../../CopyEngine.cpp" line="1067"/> - <location filename="../../CopyEngine.cpp" line="1071"/> - <location filename="../../CopyEngine.cpp" line="1075"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1066"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1068"/> - <location filename="../../CopyEngine.cpp" line="1080"/> - <source>Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1072"/> - <source>Put at the end</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1076"/> - <source>Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1077"/> - <source>Overwrite if different</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1078"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1079"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1082"/> - <source>Automatic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1083"/> - <source>Sequential</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1084"/> - <source>Parallel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>CopyEngineFactory</name> - <message> - <location filename="../../CopyEngineFactory.cpp" line="427"/> - <location filename="../../CopyEngineFactory.cpp" line="430"/> - <location filename="../../CopyEngineFactory.cpp" line="435"/> - <location filename="../../CopyEngineFactory.cpp" line="439"/> - <source>Ask</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="428"/> - <location filename="../../CopyEngineFactory.cpp" line="432"/> - <location filename="../../CopyEngineFactory.cpp" line="436"/> - <location filename="../../CopyEngineFactory.cpp" line="440"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="431"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="433"/> - <location filename="../../CopyEngineFactory.cpp" line="445"/> - <source>Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="437"/> - <source>Put at the end</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="441"/> - <source>Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="442"/> - <source>Overwrite if different</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="443"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="444"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="447"/> - <source>Automatic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="448"/> - <source>Sequential</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="449"/> - <source>Parallel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options engine is not loaded, can't access to the filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>DiskSpace</name> - <message> - <location filename="../../DiskSpace.ui" line="14"/> - <source>Disk space</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="24"/> - <source>You need more space on this drive to finish this transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="49"/> - <source>Continue</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="56"/> - <source>Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.cpp" line="23"/> - <source>Drives %1 have %2 available but need %3</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileErrorDialog</name> - <message> - <location filename="../../FileErrorDialog.cpp" line="54"/> - <source>Error on folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileErrorDialog.cpp" line="57"/> - <source>Folder name</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileExistsDialog</name> - <message> - <location filename="../../FileExistsDialog.cpp" line="137"/> - <source>%name% - copy%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="144"/> - <source>%name% - copy (%number%)%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileIsSameDialog</name> - <message> - <location filename="../../FileIsSameDialog.cpp" line="111"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="118"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FilterRules</name> - <message> - <location filename="../../FilterRules.ui" line="17"/> - <source>Filters dialog</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="33"/> - <source>Search:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="43"/> - <source>Search type:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="51"/> - <source>Raw text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="56"/> - <source>Simplified regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="61"/> - <source>Perl's regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="69"/> - <source>Apply on:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="77"/> - <source>File</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="82"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="87"/> - <source>File and folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="95"/> - <source>Whole string must match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="125"/> - <source>The test string matches with the regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="102"/> - <source>Checking</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="108"/> - <source>The regex is valid</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="115"/> - <source>Test string:</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>Filters</name> - <message> - <location filename="../../Filters.ui" line="14"/> - <source>Filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="30"/> - <source>Exclusion filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="93"/> - <source>Inclusion filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="105"/> - <source>None = Include all</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="93"/> - <location filename="../../Filters.cpp" line="131"/> - <source>Raw text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="96"/> - <location filename="../../Filters.cpp" line="134"/> - <source>Simplified regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="99"/> - <location filename="../../Filters.cpp" line="137"/> - <source>Perl's regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="107"/> - <location filename="../../Filters.cpp" line="145"/> - <source>Only on file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="110"/> - <location filename="../../Filters.cpp" line="148"/> - <source>Only on folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="116"/> - <location filename="../../Filters.cpp" line="154"/> - <location filename="../../Filters.cpp" line="216"/> - <location filename="../../Filters.cpp" line="255"/> - <source>Full match</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FolderExistsDialog</name> - <message> - <location filename="../../FolderExistsDialog.cpp" line="57"/> - <source>Folder already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="122"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="131"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ListThread</name> - <message> - <location filename="../../ListThread.cpp" line="1487"/> - <location filename="../../ListThread.cpp" line="2419"/> - <source>Unable do to move or copy item into wrong forced mode: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1494"/> - <location filename="../../ListThread.cpp" line="2426"/> - <source>Unable to save the transfer list: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1510"/> - <source>Problem reading file, or file-size is 0</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1517"/> - <source>Wrong header: "%1"</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1526"/> - <source>The transfer list is in mixed mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1535"/> - <source>The transfer list is in copy mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1541"/> - <source>The transfer list is in move mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1604"/> - <source>Some errors have been found during the line parsing</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1612"/> - <source>Unable to open the transfer list: %1</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>MkPath</name> - <message> - <location filename="../../MkPath.cpp" line="142"/> - <source>Unable to create the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="155"/> - <source>The source folder don't exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="183"/> - <source>Unable to temporary rename the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="206"/> - <source>Unable to do the final real move the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="233"/> - <source>Unable to move the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="93"/> - <location filename="../../MkPath.cpp" line="276"/> - <source>Unable to remove</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ReadThread</name> - <message> - <location filename="../../ReadThread.cpp" line="59"/> - <source>Internal error, please report it!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="188"/> - <source>Internal error reading the source file:block size out of range</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="196"/> - <location filename="../../ReadThread.cpp" line="420"/> - <source>Unable to read the source file: </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="237"/> - <location filename="../../ReadThread.cpp" line="468"/> - <source>File truncated during the read, possible data change</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>RenamingRules</name> - <message> - <location filename="../../RenamingRules.ui" line="14"/> - <source>Renaming rules</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="35"/> - <source>First renaming</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="41"/> - <source>%name% - copy%suffix%</source> - <extracomment>%name% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="57"/> - <source>%name% - copy (%number%)%suffix%</source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="67"/> - <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name, <span style=" font-weight:600;">%number%</span> for the extra number, <span style=" font-weight:600;">%suffix%</span> file suffix</p></body></html></source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="51"/> - <source>Second renaming</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="39"/> - <location filename="../../RenamingRules.cpp" line="62"/> - <source>%1 - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="43"/> - <location filename="../../RenamingRules.cpp" line="73"/> - <source>%1 - copy (%2)</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ScanFileOrFolder</name> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="274"/> - <source>Blacklisted folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="338"/> - <source>%1 - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="345"/> - <source>%1 - copy (%2)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="401"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="408"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="444"/> - <source>This is not a folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="446"/> - <source>The folder does exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="448"/> - <source>The folder is not readable</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="459"/> - <source>Problem with name encoding</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>TransferThread</name> - <message> - <location filename="../../TransferThread.cpp" line="244"/> - <location filename="../../TransferThread.cpp" line="673"/> - <location filename="../../TransferThread.cpp" line="745"/> - <location filename="../../TransferThread.cpp" line="1315"/> - <source>File not found</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="346"/> - <location filename="../../TransferThread.cpp" line="363"/> - <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="421"/> - <location filename="../../TransferThread.cpp" line="444"/> - <source>Internal error: Already opening</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="586"/> - <source>Drive %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="588"/> - <source>Unknown folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="592"/> - <source>root</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="645"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="652"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="711"/> - <location filename="../../TransferThread.cpp" line="826"/> - <source>The source file doesn't exist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="751"/> - <location filename="../../TransferThread.cpp" line="838"/> - <source>Unable to do the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="787"/> - <source>The source doesn't exist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="832"/> - <source>Another file exists at same place</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1134"/> - <source>The checksums do not match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1224"/> - <source>Internal error: The destination is not closed</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1239"/> - <source>Internal error: The size transfered doesn't match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1250"/> - <source>Internal error: The buffer is not empty</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1315"/> - <location filename="../../TransferThread.cpp" line="1333"/> - <location filename="../../TransferThread.cpp" line="1348"/> - <source>Unable to change the date</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>WriteThread</name> - <message> - <location filename="../../WriteThread.cpp" line="83"/> - <source>Path resolution error (Empty path)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="277"/> - <source>Internal error, please report it!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="680"/> - <source>Unable to read the source file: </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="705"/> - <source>File truncated during read, possible data change</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>copyEngineOptions</name> - <message> - <location filename="../../copyEngineOptions.ui" line="44"/> - <source>Transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="53"/> - <source>Move the whole folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="60"/> - <source>Transfer the file rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="70"/> - <source>Keep the file date</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="83"/> - <source>Autostart the transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="90"/> - <location filename="../../copyEngineOptions.ui" line="110"/> - <source>Less performance if checked</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="113"/> - <source>Follow the strict order</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="139"/> - <source>Error and collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="145"/> - <source>When folder error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="155"/> - <source>When file error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="181"/> - <source>When file collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="241"/> - <source>When folder collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="272"/> - <source>Check if destination folder exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="279"/> - <source>Renaming rules</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="299"/> - <source>Delete partially transferred files</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="312"/> - <source>Rename the original destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="343"/> - <source>Control</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="349"/> - <source>Checksum</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="358"/> - <source>Only after error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="365"/> - <source>Ignore if impossible</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="382"/> - <source>Verify checksums</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="414"/> - <source>Performance</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="420"/> - <source>Parallel buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="427"/> - <location filename="../../copyEngineOptions.ui" line="440"/> - <location filename="../../copyEngineOptions.ui" line="453"/> - <location filename="../../copyEngineOptions.ui" line="490"/> - <location filename="../../copyEngineOptions.ui" line="559"/> - <source>KB</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="469"/> - <source>Block size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="476"/> - <source>Sequential buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="483"/> - <source>Enable OS buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="506"/> - <source>OS buffer only if smaller than</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="513"/> - <source>Transfer algorithm</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="552"/> - <source>Parallelize if smaller than</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="582"/> - <source>Inode threads (unsafe > 1)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="589"/> - <location filename="../../copyEngineOptions.ui" line="599"/> - <source>More cpu, but better organisation on the disk</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="602"/> - <source>Order the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="618"/> - <source>Misc</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="624"/> - <source>Check the disk space</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="634"/> - <source>Use this folder when destination is not set</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="646"/> - <source>Browse</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="668"/> - <source>Filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileErrorDialog</name> - <message> - <location filename="../../fileErrorDialog.ui" line="14"/> - <source>Error with file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="20"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="59"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="76"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="93"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="110"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="127"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="173"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="193"/> - <source>Try in with elevated privileges</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="200"/> - <source>Put to bottom</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="207"/> - <source>Retry</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="214"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="221"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileExistsDialog</name> - <message> - <location filename="../../fileExistsDialog.ui" line="14"/> - <source>The file exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="34"/> - <source>Source</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="82"/> - <location filename="../../fileExistsDialog.ui" line="170"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="99"/> - <location filename="../../fileExistsDialog.ui" line="187"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="116"/> - <location filename="../../fileExistsDialog.ui" line="204"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="133"/> - <location filename="../../fileExistsDialog.ui" line="221"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="277"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="288"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="346"/> - <location filename="../../fileExistsDialog.ui" line="349"/> - <source>Overwrite if modification date differs</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="308"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="315"/> - <source>&Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="325"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="332"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="341"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="354"/> - <location filename="../../fileExistsDialog.ui" line="357"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileIsSameDialog</name> - <message> - <location filename="../../fileIsSameDialog.ui" line="40"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="110"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="70"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="14"/> - <source>The source and destination are same</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="90"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="159"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="170"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="190"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="197"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="204"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>folderExistsDialog</name> - <message> - <location filename="../../folderExistsDialog.ui" line="34"/> - <source>Source</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="14"/> - <source>The source and destination is identical</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="82"/> - <location filename="../../folderExistsDialog.ui" line="150"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="99"/> - <location filename="../../folderExistsDialog.ui" line="160"/> - <source>Folder name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="116"/> - <location filename="../../folderExistsDialog.ui" line="184"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="227"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="238"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="245"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="252"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="259"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="266"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -</TS> diff --git a/plugins/CopyEngine/Ultracopier/Languages/ko/translation.ts b/plugins/CopyEngine/Ultracopier/Languages/ko/translation.ts deleted file mode 100644 index 7698857..0000000 --- a/plugins/CopyEngine/Ultracopier/Languages/ko/translation.ts +++ /dev/null @@ -1,1291 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE TS> -<TS version="2.1" language="ko_KR"> -<context> - <name>AvancedQFile</name> - <message> - <location filename="../../AvancedQFile.cpp" line="26"/> - <location filename="../../AvancedQFile.cpp" line="57"/> - <location filename="../../AvancedQFile.cpp" line="88"/> - <source>Not supported on this platform</source> - <translation>이 플랫폼에서 지원되지 않습니다</translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="40"/> - <source>Last modified date is wrong</source> - <translation>마지막 수정 날짜가 잘못되었습니다</translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="71"/> - <source>Last access date is wrong</source> - <translation>마지막 엑세스 날짜가 잘못되었습니다</translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="121"/> - <source>Unknown error: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="187"/> - <source>Unknown error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="133"/> - <source>Path conversion error</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>CopyEngine</name> - <message> - <location filename="../../CopyEngine.cpp" line="429"/> - <location filename="../../CopyEngine.cpp" line="451"/> - <source>The engine is forced to move, you can't copy with it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="462"/> - <location filename="../../CopyEngine.cpp" line="484"/> - <source>The engine is forced to copy, you can't move with it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Destination</source> - <translation type="unfinished">대상</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Use the actual destination "%1"?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="732"/> - <source>The mode has been forced previously. This is an internal error, please report it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1062"/> - <location filename="../../CopyEngine.cpp" line="1065"/> - <location filename="../../CopyEngine.cpp" line="1070"/> - <location filename="../../CopyEngine.cpp" line="1074"/> - <source>Ask</source> - <translation type="unfinished">확인</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1063"/> - <location filename="../../CopyEngine.cpp" line="1067"/> - <location filename="../../CopyEngine.cpp" line="1071"/> - <location filename="../../CopyEngine.cpp" line="1075"/> - <source>Skip</source> - <translation type="unfinished">건너뛰기</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1066"/> - <source>Merge</source> - <translation type="unfinished">합치기</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1068"/> - <location filename="../../CopyEngine.cpp" line="1080"/> - <source>Rename</source> - <translation type="unfinished">이름 바꾸기</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1072"/> - <source>Put at the end</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1076"/> - <source>Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1077"/> - <source>Overwrite if different</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1078"/> - <source>Overwrite if newer</source> - <translation type="unfinished">더 최신이면 덮어씌우기</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1079"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1082"/> - <source>Automatic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1083"/> - <source>Sequential</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1084"/> - <source>Parallel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>CopyEngineFactory</name> - <message> - <location filename="../../CopyEngineFactory.cpp" line="427"/> - <location filename="../../CopyEngineFactory.cpp" line="430"/> - <location filename="../../CopyEngineFactory.cpp" line="435"/> - <location filename="../../CopyEngineFactory.cpp" line="439"/> - <source>Ask</source> - <translation type="unfinished">확인</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="428"/> - <location filename="../../CopyEngineFactory.cpp" line="432"/> - <location filename="../../CopyEngineFactory.cpp" line="436"/> - <location filename="../../CopyEngineFactory.cpp" line="440"/> - <source>Skip</source> - <translation type="unfinished">건너뛰기</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="431"/> - <source>Merge</source> - <translation type="unfinished">합치기</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="433"/> - <location filename="../../CopyEngineFactory.cpp" line="445"/> - <source>Rename</source> - <translation type="unfinished">이름 바꾸기</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="437"/> - <source>Put at the end</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="441"/> - <source>Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="442"/> - <source>Overwrite if different</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="443"/> - <source>Overwrite if newer</source> - <translation type="unfinished">더 최신이면 덮어씌우기</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="444"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="447"/> - <source>Automatic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="448"/> - <source>Sequential</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="449"/> - <source>Parallel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options engine is not loaded, can't access to the filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>DiskSpace</name> - <message> - <location filename="../../DiskSpace.ui" line="14"/> - <source>Disk space</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="24"/> - <source>You need more space on this drive to finish this transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="49"/> - <source>Continue</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="56"/> - <source>Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.cpp" line="23"/> - <source>Drives %1 have %2 available but need %3</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileErrorDialog</name> - <message> - <location filename="../../FileErrorDialog.cpp" line="54"/> - <source>Error on folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileErrorDialog.cpp" line="57"/> - <source>Folder name</source> - <translation type="unfinished">폴더 이름</translation> - </message> -</context> -<context> - <name>FileExistsDialog</name> - <message> - <location filename="../../FileExistsDialog.cpp" line="137"/> - <source>%name% - copy%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="144"/> - <source>%name% - copy (%number%)%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Error</source> - <translation type="unfinished">오류</translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileIsSameDialog</name> - <message> - <location filename="../../FileIsSameDialog.cpp" line="111"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="118"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Error</source> - <translation type="unfinished">오류</translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FilterRules</name> - <message> - <location filename="../../FilterRules.ui" line="17"/> - <source>Filters dialog</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="33"/> - <source>Search:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="43"/> - <source>Search type:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="51"/> - <source>Raw text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="56"/> - <source>Simplified regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="61"/> - <source>Perl's regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="69"/> - <source>Apply on:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="77"/> - <source>File</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="82"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="87"/> - <source>File and folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="95"/> - <source>Whole string must match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="125"/> - <source>The test string matches with the regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="102"/> - <source>Checking</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="108"/> - <source>The regex is valid</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="115"/> - <source>Test string:</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>Filters</name> - <message> - <location filename="../../Filters.ui" line="14"/> - <source>Filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="30"/> - <source>Exclusion filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="93"/> - <source>Inclusion filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="105"/> - <source>None = Include all</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="93"/> - <location filename="../../Filters.cpp" line="131"/> - <source>Raw text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="96"/> - <location filename="../../Filters.cpp" line="134"/> - <source>Simplified regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="99"/> - <location filename="../../Filters.cpp" line="137"/> - <source>Perl's regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="107"/> - <location filename="../../Filters.cpp" line="145"/> - <source>Only on file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="110"/> - <location filename="../../Filters.cpp" line="148"/> - <source>Only on folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="116"/> - <location filename="../../Filters.cpp" line="154"/> - <location filename="../../Filters.cpp" line="216"/> - <location filename="../../Filters.cpp" line="255"/> - <source>Full match</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FolderExistsDialog</name> - <message> - <location filename="../../FolderExistsDialog.cpp" line="57"/> - <source>Folder already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="122"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="131"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Error</source> - <translation type="unfinished">오류</translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ListThread</name> - <message> - <location filename="../../ListThread.cpp" line="1487"/> - <location filename="../../ListThread.cpp" line="2419"/> - <source>Unable do to move or copy item into wrong forced mode: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1494"/> - <location filename="../../ListThread.cpp" line="2426"/> - <source>Unable to save the transfer list: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1510"/> - <source>Problem reading file, or file-size is 0</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1517"/> - <source>Wrong header: "%1"</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1526"/> - <source>The transfer list is in mixed mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1535"/> - <source>The transfer list is in copy mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1541"/> - <source>The transfer list is in move mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1604"/> - <source>Some errors have been found during the line parsing</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1612"/> - <source>Unable to open the transfer list: %1</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>MkPath</name> - <message> - <location filename="../../MkPath.cpp" line="142"/> - <source>Unable to create the folder</source> - <translation>폴더를 생성할 수 없습니다</translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="155"/> - <source>The source folder don't exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="183"/> - <source>Unable to temporary rename the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="206"/> - <source>Unable to do the final real move the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="233"/> - <source>Unable to move the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="93"/> - <location filename="../../MkPath.cpp" line="276"/> - <source>Unable to remove</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ReadThread</name> - <message> - <location filename="../../ReadThread.cpp" line="59"/> - <source>Internal error, please report it!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="188"/> - <source>Internal error reading the source file:block size out of range</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="196"/> - <location filename="../../ReadThread.cpp" line="420"/> - <source>Unable to read the source file: </source> - <translation>원본 파일 읽기 불가:</translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="237"/> - <location filename="../../ReadThread.cpp" line="468"/> - <source>File truncated during the read, possible data change</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>RenamingRules</name> - <message> - <location filename="../../RenamingRules.ui" line="14"/> - <source>Renaming rules</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="35"/> - <source>First renaming</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="41"/> - <source>%name% - copy%suffix%</source> - <extracomment>%name% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="57"/> - <source>%name% - copy (%number%)%suffix%</source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="67"/> - <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name, <span style=" font-weight:600;">%number%</span> for the extra number, <span style=" font-weight:600;">%suffix%</span> file suffix</p></body></html></source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="51"/> - <source>Second renaming</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="39"/> - <location filename="../../RenamingRules.cpp" line="62"/> - <source>%1 - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="43"/> - <location filename="../../RenamingRules.cpp" line="73"/> - <source>%1 - copy (%2)</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ScanFileOrFolder</name> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="274"/> - <source>Blacklisted folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="338"/> - <source>%1 - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="345"/> - <source>%1 - copy (%2)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="401"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="408"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="444"/> - <source>This is not a folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="446"/> - <source>The folder does exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="448"/> - <source>The folder is not readable</source> - <translation type="unfinished">폴더를 읽을 수 없습니다</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="459"/> - <source>Problem with name encoding</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>TransferThread</name> - <message> - <location filename="../../TransferThread.cpp" line="244"/> - <location filename="../../TransferThread.cpp" line="673"/> - <location filename="../../TransferThread.cpp" line="745"/> - <location filename="../../TransferThread.cpp" line="1315"/> - <source>File not found</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="346"/> - <location filename="../../TransferThread.cpp" line="363"/> - <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="421"/> - <location filename="../../TransferThread.cpp" line="444"/> - <source>Internal error: Already opening</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="586"/> - <source>Drive %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="588"/> - <source>Unknown folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="592"/> - <source>root</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="645"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="652"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="711"/> - <location filename="../../TransferThread.cpp" line="826"/> - <source>The source file doesn't exist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="751"/> - <location filename="../../TransferThread.cpp" line="838"/> - <source>Unable to do the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="787"/> - <source>The source doesn't exist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="832"/> - <source>Another file exists at same place</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1134"/> - <source>The checksums do not match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1224"/> - <source>Internal error: The destination is not closed</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1239"/> - <source>Internal error: The size transfered doesn't match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1250"/> - <source>Internal error: The buffer is not empty</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1315"/> - <location filename="../../TransferThread.cpp" line="1333"/> - <location filename="../../TransferThread.cpp" line="1348"/> - <source>Unable to change the date</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>WriteThread</name> - <message> - <location filename="../../WriteThread.cpp" line="83"/> - <source>Path resolution error (Empty path)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="277"/> - <source>Internal error, please report it!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="680"/> - <source>Unable to read the source file: </source> - <translation type="unfinished">원본 파일 읽기 불가:</translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="705"/> - <source>File truncated during read, possible data change</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>copyEngineOptions</name> - <message> - <location filename="../../copyEngineOptions.ui" line="44"/> - <source>Transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="53"/> - <source>Move the whole folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="60"/> - <source>Transfer the file rights</source> - <translation type="unfinished">파일 권한 전송</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="70"/> - <source>Keep the file date</source> - <translation type="unfinished">파일 날짜 보존</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="83"/> - <source>Autostart the transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="90"/> - <location filename="../../copyEngineOptions.ui" line="110"/> - <source>Less performance if checked</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="113"/> - <source>Follow the strict order</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="139"/> - <source>Error and collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="145"/> - <source>When folder error</source> - <translation type="unfinished">폴더 오류시</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="155"/> - <source>When file error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="181"/> - <source>When file collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="241"/> - <source>When folder collision</source> - <translation type="unfinished">폴더 충돌시</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="272"/> - <source>Check if destination folder exists</source> - <translation type="unfinished">대상 폴드 존재시 확인</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="279"/> - <source>Renaming rules</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="299"/> - <source>Delete partially transferred files</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="312"/> - <source>Rename the original destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="343"/> - <source>Control</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="349"/> - <source>Checksum</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="358"/> - <source>Only after error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="365"/> - <source>Ignore if impossible</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="382"/> - <source>Verify checksums</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="414"/> - <source>Performance</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="420"/> - <source>Parallel buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="427"/> - <location filename="../../copyEngineOptions.ui" line="440"/> - <location filename="../../copyEngineOptions.ui" line="453"/> - <location filename="../../copyEngineOptions.ui" line="490"/> - <location filename="../../copyEngineOptions.ui" line="559"/> - <source>KB</source> - <translation type="unfinished">KB</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="469"/> - <source>Block size</source> - <translation type="unfinished">블럭 크기</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="476"/> - <source>Sequential buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="483"/> - <source>Enable OS buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="506"/> - <source>OS buffer only if smaller than</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="513"/> - <source>Transfer algorithm</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="552"/> - <source>Parallelize if smaller than</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="582"/> - <source>Inode threads (unsafe > 1)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="589"/> - <location filename="../../copyEngineOptions.ui" line="599"/> - <source>More cpu, but better organisation on the disk</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="602"/> - <source>Order the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="618"/> - <source>Misc</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="624"/> - <source>Check the disk space</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="634"/> - <source>Use this folder when destination is not set</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="646"/> - <source>Browse</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="668"/> - <source>Filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileErrorDialog</name> - <message> - <location filename="../../fileErrorDialog.ui" line="14"/> - <source>Error with file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="20"/> - <source>Error</source> - <translation>오류</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="59"/> - <source>Size</source> - <translation>크기</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="76"/> - <source>Modified</source> - <translation>수정 날짜</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="93"/> - <source>File name</source> - <translation>파일 이름</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="110"/> - <source>Destination</source> - <translation type="unfinished">대상</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="127"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="173"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="193"/> - <source>Try in with elevated privileges</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="200"/> - <source>Put to bottom</source> - <translation>아래에 놓기</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="207"/> - <source>Retry</source> - <translation>재시도</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="214"/> - <source>&Skip</source> - <translation>&건너뛰기</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="221"/> - <source>&Cancel</source> - <translation>&취소</translation> - </message> -</context> -<context> - <name>fileExistsDialog</name> - <message> - <location filename="../../fileExistsDialog.ui" line="14"/> - <source>The file exists</source> - <translation>파일이 존재합니다</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="34"/> - <source>Source</source> - <translation>원본</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation>대상</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="82"/> - <location filename="../../fileExistsDialog.ui" line="170"/> - <source>Size</source> - <translation>크기</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="99"/> - <location filename="../../fileExistsDialog.ui" line="187"/> - <source>Modified</source> - <translation>수정 날짜</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="116"/> - <location filename="../../fileExistsDialog.ui" line="204"/> - <source>File name</source> - <translation>파일 이름</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="133"/> - <location filename="../../fileExistsDialog.ui" line="221"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="277"/> - <source>Suggest new &name</source> - <translation>새 &이름 제안</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="288"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="346"/> - <location filename="../../fileExistsDialog.ui" line="349"/> - <source>Overwrite if modification date differs</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="308"/> - <source>&Rename</source> - <translation>&이름 바꾸기</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="315"/> - <source>&Overwrite</source> - <translation>&덮어씌우기</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="325"/> - <source>&Skip</source> - <translation>&건너뛰기</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="332"/> - <source>&Cancel</source> - <translation>&취소</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="341"/> - <source>Overwrite if newer</source> - <translation>더 최신이면 덮어씌우기</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="354"/> - <location filename="../../fileExistsDialog.ui" line="357"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileIsSameDialog</name> - <message> - <location filename="../../fileIsSameDialog.ui" line="40"/> - <source>Size</source> - <translation>크기</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="110"/> - <source>Modified</source> - <translation>수정 날짜</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="70"/> - <source>File name</source> - <translation>파일 이름</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="14"/> - <source>The source and destination are same</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="90"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="159"/> - <source>Suggest new &name</source> - <translation>새 &이름 제안</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="170"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="190"/> - <source>&Rename</source> - <translation>&이름 바꾸기</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="197"/> - <source>&Skip</source> - <translation>&건너뛰기</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="204"/> - <source>&Cancel</source> - <translation>&취소</translation> - </message> -</context> -<context> - <name>folderExistsDialog</name> - <message> - <location filename="../../folderExistsDialog.ui" line="34"/> - <source>Source</source> - <translation>원본</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation>대상</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="14"/> - <source>The source and destination is identical</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="82"/> - <location filename="../../folderExistsDialog.ui" line="150"/> - <source>Modified</source> - <translation>수정 날짜</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="99"/> - <location filename="../../folderExistsDialog.ui" line="160"/> - <source>Folder name</source> - <translation>폴더 이름</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="116"/> - <location filename="../../folderExistsDialog.ui" line="184"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="227"/> - <source>Suggest new &name</source> - <translation>새 &이름 제안</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="238"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="245"/> - <source>&Rename</source> - <translation>&이름 바꾸기</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="252"/> - <source>Merge</source> - <translation>합치기</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="259"/> - <source>Skip</source> - <translation>건너뛰기</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="266"/> - <source>&Cancel</source> - <translation>&취소</translation> - </message> -</context> -</TS> diff --git a/plugins/CopyEngine/Ultracopier/Languages/nl/translation.ts b/plugins/CopyEngine/Ultracopier/Languages/nl/translation.ts deleted file mode 100644 index e17b3f2..0000000 --- a/plugins/CopyEngine/Ultracopier/Languages/nl/translation.ts +++ /dev/null @@ -1,1291 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE TS> -<TS version="2.1"> -<context> - <name>AvancedQFile</name> - <message> - <location filename="../../AvancedQFile.cpp" line="26"/> - <location filename="../../AvancedQFile.cpp" line="57"/> - <location filename="../../AvancedQFile.cpp" line="88"/> - <source>Not supported on this platform</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="40"/> - <source>Last modified date is wrong</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="71"/> - <source>Last access date is wrong</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="121"/> - <source>Unknown error: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="187"/> - <source>Unknown error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="133"/> - <source>Path conversion error</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>CopyEngine</name> - <message> - <location filename="../../CopyEngine.cpp" line="429"/> - <location filename="../../CopyEngine.cpp" line="451"/> - <source>The engine is forced to move, you can't copy with it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="462"/> - <location filename="../../CopyEngine.cpp" line="484"/> - <source>The engine is forced to copy, you can't move with it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Use the actual destination "%1"?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="732"/> - <source>The mode has been forced previously. This is an internal error, please report it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1062"/> - <location filename="../../CopyEngine.cpp" line="1065"/> - <location filename="../../CopyEngine.cpp" line="1070"/> - <location filename="../../CopyEngine.cpp" line="1074"/> - <source>Ask</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1063"/> - <location filename="../../CopyEngine.cpp" line="1067"/> - <location filename="../../CopyEngine.cpp" line="1071"/> - <location filename="../../CopyEngine.cpp" line="1075"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1066"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1068"/> - <location filename="../../CopyEngine.cpp" line="1080"/> - <source>Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1072"/> - <source>Put at the end</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1076"/> - <source>Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1077"/> - <source>Overwrite if different</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1078"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1079"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1082"/> - <source>Automatic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1083"/> - <source>Sequential</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1084"/> - <source>Parallel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>CopyEngineFactory</name> - <message> - <location filename="../../CopyEngineFactory.cpp" line="427"/> - <location filename="../../CopyEngineFactory.cpp" line="430"/> - <location filename="../../CopyEngineFactory.cpp" line="435"/> - <location filename="../../CopyEngineFactory.cpp" line="439"/> - <source>Ask</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="428"/> - <location filename="../../CopyEngineFactory.cpp" line="432"/> - <location filename="../../CopyEngineFactory.cpp" line="436"/> - <location filename="../../CopyEngineFactory.cpp" line="440"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="431"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="433"/> - <location filename="../../CopyEngineFactory.cpp" line="445"/> - <source>Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="437"/> - <source>Put at the end</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="441"/> - <source>Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="442"/> - <source>Overwrite if different</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="443"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="444"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="447"/> - <source>Automatic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="448"/> - <source>Sequential</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="449"/> - <source>Parallel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options engine is not loaded, can't access to the filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>DiskSpace</name> - <message> - <location filename="../../DiskSpace.ui" line="14"/> - <source>Disk space</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="24"/> - <source>You need more space on this drive to finish this transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="49"/> - <source>Continue</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="56"/> - <source>Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.cpp" line="23"/> - <source>Drives %1 have %2 available but need %3</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileErrorDialog</name> - <message> - <location filename="../../FileErrorDialog.cpp" line="54"/> - <source>Error on folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileErrorDialog.cpp" line="57"/> - <source>Folder name</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileExistsDialog</name> - <message> - <location filename="../../FileExistsDialog.cpp" line="137"/> - <source>%name% - copy%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="144"/> - <source>%name% - copy (%number%)%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileIsSameDialog</name> - <message> - <location filename="../../FileIsSameDialog.cpp" line="111"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="118"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FilterRules</name> - <message> - <location filename="../../FilterRules.ui" line="33"/> - <source>Search:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="43"/> - <source>Search type:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="51"/> - <source>Raw text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="56"/> - <source>Simplified regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="61"/> - <source>Perl's regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="69"/> - <source>Apply on:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="77"/> - <source>File</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="82"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="87"/> - <source>File and folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="125"/> - <source>The test string matches with the regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="102"/> - <source>Checking</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="115"/> - <source>Test string:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="17"/> - <source>Filters dialog</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="95"/> - <source>Whole string must match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="108"/> - <source>The regex is valid</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>Filters</name> - <message> - <location filename="../../Filters.ui" line="14"/> - <source>Filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="30"/> - <source>Exclusion filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="93"/> - <source>Inclusion filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="105"/> - <source>None = Include all</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="93"/> - <location filename="../../Filters.cpp" line="131"/> - <source>Raw text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="96"/> - <location filename="../../Filters.cpp" line="134"/> - <source>Simplified regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="99"/> - <location filename="../../Filters.cpp" line="137"/> - <source>Perl's regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="107"/> - <location filename="../../Filters.cpp" line="145"/> - <source>Only on file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="110"/> - <location filename="../../Filters.cpp" line="148"/> - <source>Only on folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="116"/> - <location filename="../../Filters.cpp" line="154"/> - <location filename="../../Filters.cpp" line="216"/> - <location filename="../../Filters.cpp" line="255"/> - <source>Full match</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FolderExistsDialog</name> - <message> - <location filename="../../FolderExistsDialog.cpp" line="57"/> - <source>Folder already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="122"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="131"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ListThread</name> - <message> - <location filename="../../ListThread.cpp" line="1487"/> - <location filename="../../ListThread.cpp" line="2419"/> - <source>Unable do to move or copy item into wrong forced mode: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1494"/> - <location filename="../../ListThread.cpp" line="2426"/> - <source>Unable to save the transfer list: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1510"/> - <source>Problem reading file, or file-size is 0</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1517"/> - <source>Wrong header: "%1"</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1526"/> - <source>The transfer list is in mixed mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1535"/> - <source>The transfer list is in copy mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1541"/> - <source>The transfer list is in move mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1604"/> - <source>Some errors have been found during the line parsing</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1612"/> - <source>Unable to open the transfer list: %1</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>MkPath</name> - <message> - <location filename="../../MkPath.cpp" line="142"/> - <source>Unable to create the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="155"/> - <source>The source folder don't exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="183"/> - <source>Unable to temporary rename the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="206"/> - <source>Unable to do the final real move the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="233"/> - <source>Unable to move the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="93"/> - <location filename="../../MkPath.cpp" line="276"/> - <source>Unable to remove</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ReadThread</name> - <message> - <location filename="../../ReadThread.cpp" line="59"/> - <source>Internal error, please report it!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="188"/> - <source>Internal error reading the source file:block size out of range</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="196"/> - <location filename="../../ReadThread.cpp" line="420"/> - <source>Unable to read the source file: </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="237"/> - <location filename="../../ReadThread.cpp" line="468"/> - <source>File truncated during the read, possible data change</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>RenamingRules</name> - <message> - <location filename="../../RenamingRules.ui" line="35"/> - <source>First renaming</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="41"/> - <source>%name% - copy%suffix%</source> - <extracomment>%name% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="57"/> - <source>%name% - copy (%number%)%suffix%</source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="67"/> - <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name, <span style=" font-weight:600;">%number%</span> for the extra number, <span style=" font-weight:600;">%suffix%</span> file suffix</p></body></html></source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="51"/> - <source>Second renaming</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="39"/> - <location filename="../../RenamingRules.cpp" line="62"/> - <source>%1 - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="43"/> - <location filename="../../RenamingRules.cpp" line="73"/> - <source>%1 - copy (%2)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="14"/> - <source>Renaming rules</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ScanFileOrFolder</name> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="274"/> - <source>Blacklisted folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="338"/> - <source>%1 - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="345"/> - <source>%1 - copy (%2)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="401"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="408"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="444"/> - <source>This is not a folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="446"/> - <source>The folder does exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="448"/> - <source>The folder is not readable</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="459"/> - <source>Problem with name encoding</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>TransferThread</name> - <message> - <location filename="../../TransferThread.cpp" line="244"/> - <location filename="../../TransferThread.cpp" line="673"/> - <location filename="../../TransferThread.cpp" line="745"/> - <location filename="../../TransferThread.cpp" line="1315"/> - <source>File not found</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="346"/> - <location filename="../../TransferThread.cpp" line="363"/> - <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="421"/> - <location filename="../../TransferThread.cpp" line="444"/> - <source>Internal error: Already opening</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="586"/> - <source>Drive %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="588"/> - <source>Unknown folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="592"/> - <source>root</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="645"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="652"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="711"/> - <location filename="../../TransferThread.cpp" line="826"/> - <source>The source file doesn't exist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="751"/> - <location filename="../../TransferThread.cpp" line="838"/> - <source>Unable to do the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="787"/> - <source>The source doesn't exist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="832"/> - <source>Another file exists at same place</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1134"/> - <source>The checksums do not match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1224"/> - <source>Internal error: The destination is not closed</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1239"/> - <source>Internal error: The size transfered doesn't match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1250"/> - <source>Internal error: The buffer is not empty</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1315"/> - <location filename="../../TransferThread.cpp" line="1333"/> - <location filename="../../TransferThread.cpp" line="1348"/> - <source>Unable to change the date</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>WriteThread</name> - <message> - <location filename="../../WriteThread.cpp" line="83"/> - <source>Path resolution error (Empty path)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="277"/> - <source>Internal error, please report it!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="680"/> - <source>Unable to read the source file: </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="705"/> - <source>File truncated during read, possible data change</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>copyEngineOptions</name> - <message> - <location filename="../../copyEngineOptions.ui" line="44"/> - <source>Transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="53"/> - <source>Move the whole folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="60"/> - <source>Transfer the file rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="70"/> - <source>Keep the file date</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="83"/> - <source>Autostart the transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="90"/> - <location filename="../../copyEngineOptions.ui" line="110"/> - <source>Less performance if checked</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="113"/> - <source>Follow the strict order</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="139"/> - <source>Error and collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="145"/> - <source>When folder error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="155"/> - <source>When file error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="181"/> - <source>When file collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="241"/> - <source>When folder collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="272"/> - <source>Check if destination folder exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="279"/> - <source>Renaming rules</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="299"/> - <source>Delete partially transferred files</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="312"/> - <source>Rename the original destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="343"/> - <source>Control</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="349"/> - <source>Checksum</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="358"/> - <source>Only after error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="365"/> - <source>Ignore if impossible</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="382"/> - <source>Verify checksums</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="414"/> - <source>Performance</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="420"/> - <source>Parallel buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="427"/> - <location filename="../../copyEngineOptions.ui" line="440"/> - <location filename="../../copyEngineOptions.ui" line="453"/> - <location filename="../../copyEngineOptions.ui" line="490"/> - <location filename="../../copyEngineOptions.ui" line="559"/> - <source>KB</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="469"/> - <source>Block size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="476"/> - <source>Sequential buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="483"/> - <source>Enable OS buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="506"/> - <source>OS buffer only if smaller than</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="513"/> - <source>Transfer algorithm</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="552"/> - <source>Parallelize if smaller than</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="582"/> - <source>Inode threads (unsafe > 1)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="589"/> - <location filename="../../copyEngineOptions.ui" line="599"/> - <source>More cpu, but better organisation on the disk</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="602"/> - <source>Order the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="618"/> - <source>Misc</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="624"/> - <source>Check the disk space</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="634"/> - <source>Use this folder when destination is not set</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="646"/> - <source>Browse</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="668"/> - <source>Filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileErrorDialog</name> - <message> - <location filename="../../fileErrorDialog.ui" line="14"/> - <source>Error with file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="20"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="59"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="76"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="93"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="110"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="127"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="173"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="193"/> - <source>Try in with elevated privileges</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="200"/> - <source>Put to bottom</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="207"/> - <source>Retry</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="214"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="221"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileExistsDialog</name> - <message> - <location filename="../../fileExistsDialog.ui" line="14"/> - <source>The file exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="34"/> - <source>Source</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="82"/> - <location filename="../../fileExistsDialog.ui" line="170"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="99"/> - <location filename="../../fileExistsDialog.ui" line="187"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="116"/> - <location filename="../../fileExistsDialog.ui" line="204"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="133"/> - <location filename="../../fileExistsDialog.ui" line="221"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="277"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="288"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="346"/> - <location filename="../../fileExistsDialog.ui" line="349"/> - <source>Overwrite if modification date differs</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="308"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="315"/> - <source>&Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="325"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="332"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="341"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="354"/> - <location filename="../../fileExistsDialog.ui" line="357"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileIsSameDialog</name> - <message> - <location filename="../../fileIsSameDialog.ui" line="40"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="110"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="70"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="14"/> - <source>The source and destination are same</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="90"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="159"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="170"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="190"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="197"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="204"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>folderExistsDialog</name> - <message> - <location filename="../../folderExistsDialog.ui" line="34"/> - <source>Source</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="14"/> - <source>The source and destination is identical</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="82"/> - <location filename="../../folderExistsDialog.ui" line="150"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="99"/> - <location filename="../../folderExistsDialog.ui" line="160"/> - <source>Folder name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="116"/> - <location filename="../../folderExistsDialog.ui" line="184"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="227"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="238"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="245"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="252"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="259"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="266"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -</TS> diff --git a/plugins/CopyEngine/Ultracopier/Languages/no/translation.ts b/plugins/CopyEngine/Ultracopier/Languages/no/translation.ts deleted file mode 100644 index e17b3f2..0000000 --- a/plugins/CopyEngine/Ultracopier/Languages/no/translation.ts +++ /dev/null @@ -1,1291 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE TS> -<TS version="2.1"> -<context> - <name>AvancedQFile</name> - <message> - <location filename="../../AvancedQFile.cpp" line="26"/> - <location filename="../../AvancedQFile.cpp" line="57"/> - <location filename="../../AvancedQFile.cpp" line="88"/> - <source>Not supported on this platform</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="40"/> - <source>Last modified date is wrong</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="71"/> - <source>Last access date is wrong</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="121"/> - <source>Unknown error: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="187"/> - <source>Unknown error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="133"/> - <source>Path conversion error</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>CopyEngine</name> - <message> - <location filename="../../CopyEngine.cpp" line="429"/> - <location filename="../../CopyEngine.cpp" line="451"/> - <source>The engine is forced to move, you can't copy with it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="462"/> - <location filename="../../CopyEngine.cpp" line="484"/> - <source>The engine is forced to copy, you can't move with it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Use the actual destination "%1"?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="732"/> - <source>The mode has been forced previously. This is an internal error, please report it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1062"/> - <location filename="../../CopyEngine.cpp" line="1065"/> - <location filename="../../CopyEngine.cpp" line="1070"/> - <location filename="../../CopyEngine.cpp" line="1074"/> - <source>Ask</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1063"/> - <location filename="../../CopyEngine.cpp" line="1067"/> - <location filename="../../CopyEngine.cpp" line="1071"/> - <location filename="../../CopyEngine.cpp" line="1075"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1066"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1068"/> - <location filename="../../CopyEngine.cpp" line="1080"/> - <source>Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1072"/> - <source>Put at the end</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1076"/> - <source>Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1077"/> - <source>Overwrite if different</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1078"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1079"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1082"/> - <source>Automatic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1083"/> - <source>Sequential</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1084"/> - <source>Parallel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>CopyEngineFactory</name> - <message> - <location filename="../../CopyEngineFactory.cpp" line="427"/> - <location filename="../../CopyEngineFactory.cpp" line="430"/> - <location filename="../../CopyEngineFactory.cpp" line="435"/> - <location filename="../../CopyEngineFactory.cpp" line="439"/> - <source>Ask</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="428"/> - <location filename="../../CopyEngineFactory.cpp" line="432"/> - <location filename="../../CopyEngineFactory.cpp" line="436"/> - <location filename="../../CopyEngineFactory.cpp" line="440"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="431"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="433"/> - <location filename="../../CopyEngineFactory.cpp" line="445"/> - <source>Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="437"/> - <source>Put at the end</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="441"/> - <source>Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="442"/> - <source>Overwrite if different</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="443"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="444"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="447"/> - <source>Automatic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="448"/> - <source>Sequential</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="449"/> - <source>Parallel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options engine is not loaded, can't access to the filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>DiskSpace</name> - <message> - <location filename="../../DiskSpace.ui" line="14"/> - <source>Disk space</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="24"/> - <source>You need more space on this drive to finish this transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="49"/> - <source>Continue</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="56"/> - <source>Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.cpp" line="23"/> - <source>Drives %1 have %2 available but need %3</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileErrorDialog</name> - <message> - <location filename="../../FileErrorDialog.cpp" line="54"/> - <source>Error on folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileErrorDialog.cpp" line="57"/> - <source>Folder name</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileExistsDialog</name> - <message> - <location filename="../../FileExistsDialog.cpp" line="137"/> - <source>%name% - copy%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="144"/> - <source>%name% - copy (%number%)%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileIsSameDialog</name> - <message> - <location filename="../../FileIsSameDialog.cpp" line="111"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="118"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FilterRules</name> - <message> - <location filename="../../FilterRules.ui" line="33"/> - <source>Search:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="43"/> - <source>Search type:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="51"/> - <source>Raw text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="56"/> - <source>Simplified regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="61"/> - <source>Perl's regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="69"/> - <source>Apply on:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="77"/> - <source>File</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="82"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="87"/> - <source>File and folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="125"/> - <source>The test string matches with the regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="102"/> - <source>Checking</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="115"/> - <source>Test string:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="17"/> - <source>Filters dialog</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="95"/> - <source>Whole string must match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="108"/> - <source>The regex is valid</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>Filters</name> - <message> - <location filename="../../Filters.ui" line="14"/> - <source>Filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="30"/> - <source>Exclusion filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="93"/> - <source>Inclusion filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="105"/> - <source>None = Include all</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="93"/> - <location filename="../../Filters.cpp" line="131"/> - <source>Raw text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="96"/> - <location filename="../../Filters.cpp" line="134"/> - <source>Simplified regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="99"/> - <location filename="../../Filters.cpp" line="137"/> - <source>Perl's regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="107"/> - <location filename="../../Filters.cpp" line="145"/> - <source>Only on file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="110"/> - <location filename="../../Filters.cpp" line="148"/> - <source>Only on folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="116"/> - <location filename="../../Filters.cpp" line="154"/> - <location filename="../../Filters.cpp" line="216"/> - <location filename="../../Filters.cpp" line="255"/> - <source>Full match</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FolderExistsDialog</name> - <message> - <location filename="../../FolderExistsDialog.cpp" line="57"/> - <source>Folder already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="122"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="131"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ListThread</name> - <message> - <location filename="../../ListThread.cpp" line="1487"/> - <location filename="../../ListThread.cpp" line="2419"/> - <source>Unable do to move or copy item into wrong forced mode: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1494"/> - <location filename="../../ListThread.cpp" line="2426"/> - <source>Unable to save the transfer list: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1510"/> - <source>Problem reading file, or file-size is 0</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1517"/> - <source>Wrong header: "%1"</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1526"/> - <source>The transfer list is in mixed mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1535"/> - <source>The transfer list is in copy mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1541"/> - <source>The transfer list is in move mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1604"/> - <source>Some errors have been found during the line parsing</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1612"/> - <source>Unable to open the transfer list: %1</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>MkPath</name> - <message> - <location filename="../../MkPath.cpp" line="142"/> - <source>Unable to create the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="155"/> - <source>The source folder don't exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="183"/> - <source>Unable to temporary rename the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="206"/> - <source>Unable to do the final real move the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="233"/> - <source>Unable to move the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="93"/> - <location filename="../../MkPath.cpp" line="276"/> - <source>Unable to remove</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ReadThread</name> - <message> - <location filename="../../ReadThread.cpp" line="59"/> - <source>Internal error, please report it!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="188"/> - <source>Internal error reading the source file:block size out of range</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="196"/> - <location filename="../../ReadThread.cpp" line="420"/> - <source>Unable to read the source file: </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="237"/> - <location filename="../../ReadThread.cpp" line="468"/> - <source>File truncated during the read, possible data change</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>RenamingRules</name> - <message> - <location filename="../../RenamingRules.ui" line="35"/> - <source>First renaming</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="41"/> - <source>%name% - copy%suffix%</source> - <extracomment>%name% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="57"/> - <source>%name% - copy (%number%)%suffix%</source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="67"/> - <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name, <span style=" font-weight:600;">%number%</span> for the extra number, <span style=" font-weight:600;">%suffix%</span> file suffix</p></body></html></source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="51"/> - <source>Second renaming</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="39"/> - <location filename="../../RenamingRules.cpp" line="62"/> - <source>%1 - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="43"/> - <location filename="../../RenamingRules.cpp" line="73"/> - <source>%1 - copy (%2)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="14"/> - <source>Renaming rules</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ScanFileOrFolder</name> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="274"/> - <source>Blacklisted folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="338"/> - <source>%1 - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="345"/> - <source>%1 - copy (%2)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="401"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="408"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="444"/> - <source>This is not a folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="446"/> - <source>The folder does exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="448"/> - <source>The folder is not readable</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="459"/> - <source>Problem with name encoding</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>TransferThread</name> - <message> - <location filename="../../TransferThread.cpp" line="244"/> - <location filename="../../TransferThread.cpp" line="673"/> - <location filename="../../TransferThread.cpp" line="745"/> - <location filename="../../TransferThread.cpp" line="1315"/> - <source>File not found</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="346"/> - <location filename="../../TransferThread.cpp" line="363"/> - <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="421"/> - <location filename="../../TransferThread.cpp" line="444"/> - <source>Internal error: Already opening</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="586"/> - <source>Drive %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="588"/> - <source>Unknown folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="592"/> - <source>root</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="645"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="652"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="711"/> - <location filename="../../TransferThread.cpp" line="826"/> - <source>The source file doesn't exist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="751"/> - <location filename="../../TransferThread.cpp" line="838"/> - <source>Unable to do the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="787"/> - <source>The source doesn't exist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="832"/> - <source>Another file exists at same place</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1134"/> - <source>The checksums do not match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1224"/> - <source>Internal error: The destination is not closed</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1239"/> - <source>Internal error: The size transfered doesn't match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1250"/> - <source>Internal error: The buffer is not empty</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1315"/> - <location filename="../../TransferThread.cpp" line="1333"/> - <location filename="../../TransferThread.cpp" line="1348"/> - <source>Unable to change the date</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>WriteThread</name> - <message> - <location filename="../../WriteThread.cpp" line="83"/> - <source>Path resolution error (Empty path)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="277"/> - <source>Internal error, please report it!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="680"/> - <source>Unable to read the source file: </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="705"/> - <source>File truncated during read, possible data change</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>copyEngineOptions</name> - <message> - <location filename="../../copyEngineOptions.ui" line="44"/> - <source>Transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="53"/> - <source>Move the whole folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="60"/> - <source>Transfer the file rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="70"/> - <source>Keep the file date</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="83"/> - <source>Autostart the transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="90"/> - <location filename="../../copyEngineOptions.ui" line="110"/> - <source>Less performance if checked</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="113"/> - <source>Follow the strict order</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="139"/> - <source>Error and collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="145"/> - <source>When folder error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="155"/> - <source>When file error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="181"/> - <source>When file collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="241"/> - <source>When folder collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="272"/> - <source>Check if destination folder exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="279"/> - <source>Renaming rules</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="299"/> - <source>Delete partially transferred files</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="312"/> - <source>Rename the original destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="343"/> - <source>Control</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="349"/> - <source>Checksum</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="358"/> - <source>Only after error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="365"/> - <source>Ignore if impossible</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="382"/> - <source>Verify checksums</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="414"/> - <source>Performance</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="420"/> - <source>Parallel buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="427"/> - <location filename="../../copyEngineOptions.ui" line="440"/> - <location filename="../../copyEngineOptions.ui" line="453"/> - <location filename="../../copyEngineOptions.ui" line="490"/> - <location filename="../../copyEngineOptions.ui" line="559"/> - <source>KB</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="469"/> - <source>Block size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="476"/> - <source>Sequential buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="483"/> - <source>Enable OS buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="506"/> - <source>OS buffer only if smaller than</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="513"/> - <source>Transfer algorithm</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="552"/> - <source>Parallelize if smaller than</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="582"/> - <source>Inode threads (unsafe > 1)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="589"/> - <location filename="../../copyEngineOptions.ui" line="599"/> - <source>More cpu, but better organisation on the disk</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="602"/> - <source>Order the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="618"/> - <source>Misc</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="624"/> - <source>Check the disk space</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="634"/> - <source>Use this folder when destination is not set</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="646"/> - <source>Browse</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="668"/> - <source>Filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileErrorDialog</name> - <message> - <location filename="../../fileErrorDialog.ui" line="14"/> - <source>Error with file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="20"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="59"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="76"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="93"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="110"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="127"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="173"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="193"/> - <source>Try in with elevated privileges</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="200"/> - <source>Put to bottom</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="207"/> - <source>Retry</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="214"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="221"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileExistsDialog</name> - <message> - <location filename="../../fileExistsDialog.ui" line="14"/> - <source>The file exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="34"/> - <source>Source</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="82"/> - <location filename="../../fileExistsDialog.ui" line="170"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="99"/> - <location filename="../../fileExistsDialog.ui" line="187"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="116"/> - <location filename="../../fileExistsDialog.ui" line="204"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="133"/> - <location filename="../../fileExistsDialog.ui" line="221"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="277"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="288"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="346"/> - <location filename="../../fileExistsDialog.ui" line="349"/> - <source>Overwrite if modification date differs</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="308"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="315"/> - <source>&Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="325"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="332"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="341"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="354"/> - <location filename="../../fileExistsDialog.ui" line="357"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileIsSameDialog</name> - <message> - <location filename="../../fileIsSameDialog.ui" line="40"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="110"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="70"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="14"/> - <source>The source and destination are same</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="90"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="159"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="170"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="190"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="197"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="204"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>folderExistsDialog</name> - <message> - <location filename="../../folderExistsDialog.ui" line="34"/> - <source>Source</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="14"/> - <source>The source and destination is identical</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="82"/> - <location filename="../../folderExistsDialog.ui" line="150"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="99"/> - <location filename="../../folderExistsDialog.ui" line="160"/> - <source>Folder name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="116"/> - <location filename="../../folderExistsDialog.ui" line="184"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="227"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="238"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="245"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="252"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="259"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="266"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -</TS> diff --git a/plugins/CopyEngine/Ultracopier/Languages/pl/translation.ts b/plugins/CopyEngine/Ultracopier/Languages/pl/translation.ts deleted file mode 100644 index e17b3f2..0000000 --- a/plugins/CopyEngine/Ultracopier/Languages/pl/translation.ts +++ /dev/null @@ -1,1291 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE TS> -<TS version="2.1"> -<context> - <name>AvancedQFile</name> - <message> - <location filename="../../AvancedQFile.cpp" line="26"/> - <location filename="../../AvancedQFile.cpp" line="57"/> - <location filename="../../AvancedQFile.cpp" line="88"/> - <source>Not supported on this platform</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="40"/> - <source>Last modified date is wrong</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="71"/> - <source>Last access date is wrong</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="121"/> - <source>Unknown error: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="187"/> - <source>Unknown error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="133"/> - <source>Path conversion error</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>CopyEngine</name> - <message> - <location filename="../../CopyEngine.cpp" line="429"/> - <location filename="../../CopyEngine.cpp" line="451"/> - <source>The engine is forced to move, you can't copy with it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="462"/> - <location filename="../../CopyEngine.cpp" line="484"/> - <source>The engine is forced to copy, you can't move with it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Use the actual destination "%1"?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="732"/> - <source>The mode has been forced previously. This is an internal error, please report it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1062"/> - <location filename="../../CopyEngine.cpp" line="1065"/> - <location filename="../../CopyEngine.cpp" line="1070"/> - <location filename="../../CopyEngine.cpp" line="1074"/> - <source>Ask</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1063"/> - <location filename="../../CopyEngine.cpp" line="1067"/> - <location filename="../../CopyEngine.cpp" line="1071"/> - <location filename="../../CopyEngine.cpp" line="1075"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1066"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1068"/> - <location filename="../../CopyEngine.cpp" line="1080"/> - <source>Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1072"/> - <source>Put at the end</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1076"/> - <source>Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1077"/> - <source>Overwrite if different</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1078"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1079"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1082"/> - <source>Automatic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1083"/> - <source>Sequential</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1084"/> - <source>Parallel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>CopyEngineFactory</name> - <message> - <location filename="../../CopyEngineFactory.cpp" line="427"/> - <location filename="../../CopyEngineFactory.cpp" line="430"/> - <location filename="../../CopyEngineFactory.cpp" line="435"/> - <location filename="../../CopyEngineFactory.cpp" line="439"/> - <source>Ask</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="428"/> - <location filename="../../CopyEngineFactory.cpp" line="432"/> - <location filename="../../CopyEngineFactory.cpp" line="436"/> - <location filename="../../CopyEngineFactory.cpp" line="440"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="431"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="433"/> - <location filename="../../CopyEngineFactory.cpp" line="445"/> - <source>Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="437"/> - <source>Put at the end</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="441"/> - <source>Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="442"/> - <source>Overwrite if different</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="443"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="444"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="447"/> - <source>Automatic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="448"/> - <source>Sequential</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="449"/> - <source>Parallel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options engine is not loaded, can't access to the filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>DiskSpace</name> - <message> - <location filename="../../DiskSpace.ui" line="14"/> - <source>Disk space</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="24"/> - <source>You need more space on this drive to finish this transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="49"/> - <source>Continue</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="56"/> - <source>Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.cpp" line="23"/> - <source>Drives %1 have %2 available but need %3</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileErrorDialog</name> - <message> - <location filename="../../FileErrorDialog.cpp" line="54"/> - <source>Error on folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileErrorDialog.cpp" line="57"/> - <source>Folder name</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileExistsDialog</name> - <message> - <location filename="../../FileExistsDialog.cpp" line="137"/> - <source>%name% - copy%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="144"/> - <source>%name% - copy (%number%)%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileIsSameDialog</name> - <message> - <location filename="../../FileIsSameDialog.cpp" line="111"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="118"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FilterRules</name> - <message> - <location filename="../../FilterRules.ui" line="33"/> - <source>Search:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="43"/> - <source>Search type:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="51"/> - <source>Raw text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="56"/> - <source>Simplified regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="61"/> - <source>Perl's regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="69"/> - <source>Apply on:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="77"/> - <source>File</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="82"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="87"/> - <source>File and folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="125"/> - <source>The test string matches with the regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="102"/> - <source>Checking</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="115"/> - <source>Test string:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="17"/> - <source>Filters dialog</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="95"/> - <source>Whole string must match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="108"/> - <source>The regex is valid</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>Filters</name> - <message> - <location filename="../../Filters.ui" line="14"/> - <source>Filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="30"/> - <source>Exclusion filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="93"/> - <source>Inclusion filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="105"/> - <source>None = Include all</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="93"/> - <location filename="../../Filters.cpp" line="131"/> - <source>Raw text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="96"/> - <location filename="../../Filters.cpp" line="134"/> - <source>Simplified regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="99"/> - <location filename="../../Filters.cpp" line="137"/> - <source>Perl's regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="107"/> - <location filename="../../Filters.cpp" line="145"/> - <source>Only on file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="110"/> - <location filename="../../Filters.cpp" line="148"/> - <source>Only on folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="116"/> - <location filename="../../Filters.cpp" line="154"/> - <location filename="../../Filters.cpp" line="216"/> - <location filename="../../Filters.cpp" line="255"/> - <source>Full match</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FolderExistsDialog</name> - <message> - <location filename="../../FolderExistsDialog.cpp" line="57"/> - <source>Folder already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="122"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="131"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ListThread</name> - <message> - <location filename="../../ListThread.cpp" line="1487"/> - <location filename="../../ListThread.cpp" line="2419"/> - <source>Unable do to move or copy item into wrong forced mode: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1494"/> - <location filename="../../ListThread.cpp" line="2426"/> - <source>Unable to save the transfer list: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1510"/> - <source>Problem reading file, or file-size is 0</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1517"/> - <source>Wrong header: "%1"</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1526"/> - <source>The transfer list is in mixed mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1535"/> - <source>The transfer list is in copy mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1541"/> - <source>The transfer list is in move mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1604"/> - <source>Some errors have been found during the line parsing</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1612"/> - <source>Unable to open the transfer list: %1</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>MkPath</name> - <message> - <location filename="../../MkPath.cpp" line="142"/> - <source>Unable to create the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="155"/> - <source>The source folder don't exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="183"/> - <source>Unable to temporary rename the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="206"/> - <source>Unable to do the final real move the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="233"/> - <source>Unable to move the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="93"/> - <location filename="../../MkPath.cpp" line="276"/> - <source>Unable to remove</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ReadThread</name> - <message> - <location filename="../../ReadThread.cpp" line="59"/> - <source>Internal error, please report it!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="188"/> - <source>Internal error reading the source file:block size out of range</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="196"/> - <location filename="../../ReadThread.cpp" line="420"/> - <source>Unable to read the source file: </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="237"/> - <location filename="../../ReadThread.cpp" line="468"/> - <source>File truncated during the read, possible data change</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>RenamingRules</name> - <message> - <location filename="../../RenamingRules.ui" line="35"/> - <source>First renaming</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="41"/> - <source>%name% - copy%suffix%</source> - <extracomment>%name% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="57"/> - <source>%name% - copy (%number%)%suffix%</source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="67"/> - <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name, <span style=" font-weight:600;">%number%</span> for the extra number, <span style=" font-weight:600;">%suffix%</span> file suffix</p></body></html></source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="51"/> - <source>Second renaming</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="39"/> - <location filename="../../RenamingRules.cpp" line="62"/> - <source>%1 - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="43"/> - <location filename="../../RenamingRules.cpp" line="73"/> - <source>%1 - copy (%2)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="14"/> - <source>Renaming rules</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ScanFileOrFolder</name> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="274"/> - <source>Blacklisted folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="338"/> - <source>%1 - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="345"/> - <source>%1 - copy (%2)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="401"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="408"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="444"/> - <source>This is not a folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="446"/> - <source>The folder does exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="448"/> - <source>The folder is not readable</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="459"/> - <source>Problem with name encoding</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>TransferThread</name> - <message> - <location filename="../../TransferThread.cpp" line="244"/> - <location filename="../../TransferThread.cpp" line="673"/> - <location filename="../../TransferThread.cpp" line="745"/> - <location filename="../../TransferThread.cpp" line="1315"/> - <source>File not found</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="346"/> - <location filename="../../TransferThread.cpp" line="363"/> - <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="421"/> - <location filename="../../TransferThread.cpp" line="444"/> - <source>Internal error: Already opening</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="586"/> - <source>Drive %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="588"/> - <source>Unknown folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="592"/> - <source>root</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="645"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="652"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="711"/> - <location filename="../../TransferThread.cpp" line="826"/> - <source>The source file doesn't exist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="751"/> - <location filename="../../TransferThread.cpp" line="838"/> - <source>Unable to do the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="787"/> - <source>The source doesn't exist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="832"/> - <source>Another file exists at same place</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1134"/> - <source>The checksums do not match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1224"/> - <source>Internal error: The destination is not closed</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1239"/> - <source>Internal error: The size transfered doesn't match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1250"/> - <source>Internal error: The buffer is not empty</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1315"/> - <location filename="../../TransferThread.cpp" line="1333"/> - <location filename="../../TransferThread.cpp" line="1348"/> - <source>Unable to change the date</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>WriteThread</name> - <message> - <location filename="../../WriteThread.cpp" line="83"/> - <source>Path resolution error (Empty path)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="277"/> - <source>Internal error, please report it!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="680"/> - <source>Unable to read the source file: </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="705"/> - <source>File truncated during read, possible data change</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>copyEngineOptions</name> - <message> - <location filename="../../copyEngineOptions.ui" line="44"/> - <source>Transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="53"/> - <source>Move the whole folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="60"/> - <source>Transfer the file rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="70"/> - <source>Keep the file date</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="83"/> - <source>Autostart the transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="90"/> - <location filename="../../copyEngineOptions.ui" line="110"/> - <source>Less performance if checked</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="113"/> - <source>Follow the strict order</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="139"/> - <source>Error and collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="145"/> - <source>When folder error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="155"/> - <source>When file error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="181"/> - <source>When file collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="241"/> - <source>When folder collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="272"/> - <source>Check if destination folder exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="279"/> - <source>Renaming rules</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="299"/> - <source>Delete partially transferred files</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="312"/> - <source>Rename the original destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="343"/> - <source>Control</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="349"/> - <source>Checksum</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="358"/> - <source>Only after error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="365"/> - <source>Ignore if impossible</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="382"/> - <source>Verify checksums</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="414"/> - <source>Performance</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="420"/> - <source>Parallel buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="427"/> - <location filename="../../copyEngineOptions.ui" line="440"/> - <location filename="../../copyEngineOptions.ui" line="453"/> - <location filename="../../copyEngineOptions.ui" line="490"/> - <location filename="../../copyEngineOptions.ui" line="559"/> - <source>KB</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="469"/> - <source>Block size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="476"/> - <source>Sequential buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="483"/> - <source>Enable OS buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="506"/> - <source>OS buffer only if smaller than</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="513"/> - <source>Transfer algorithm</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="552"/> - <source>Parallelize if smaller than</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="582"/> - <source>Inode threads (unsafe > 1)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="589"/> - <location filename="../../copyEngineOptions.ui" line="599"/> - <source>More cpu, but better organisation on the disk</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="602"/> - <source>Order the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="618"/> - <source>Misc</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="624"/> - <source>Check the disk space</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="634"/> - <source>Use this folder when destination is not set</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="646"/> - <source>Browse</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="668"/> - <source>Filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileErrorDialog</name> - <message> - <location filename="../../fileErrorDialog.ui" line="14"/> - <source>Error with file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="20"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="59"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="76"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="93"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="110"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="127"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="173"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="193"/> - <source>Try in with elevated privileges</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="200"/> - <source>Put to bottom</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="207"/> - <source>Retry</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="214"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="221"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileExistsDialog</name> - <message> - <location filename="../../fileExistsDialog.ui" line="14"/> - <source>The file exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="34"/> - <source>Source</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="82"/> - <location filename="../../fileExistsDialog.ui" line="170"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="99"/> - <location filename="../../fileExistsDialog.ui" line="187"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="116"/> - <location filename="../../fileExistsDialog.ui" line="204"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="133"/> - <location filename="../../fileExistsDialog.ui" line="221"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="277"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="288"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="346"/> - <location filename="../../fileExistsDialog.ui" line="349"/> - <source>Overwrite if modification date differs</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="308"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="315"/> - <source>&Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="325"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="332"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="341"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="354"/> - <location filename="../../fileExistsDialog.ui" line="357"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileIsSameDialog</name> - <message> - <location filename="../../fileIsSameDialog.ui" line="40"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="110"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="70"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="14"/> - <source>The source and destination are same</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="90"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="159"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="170"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="190"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="197"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="204"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>folderExistsDialog</name> - <message> - <location filename="../../folderExistsDialog.ui" line="34"/> - <source>Source</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="14"/> - <source>The source and destination is identical</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="82"/> - <location filename="../../folderExistsDialog.ui" line="150"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="99"/> - <location filename="../../folderExistsDialog.ui" line="160"/> - <source>Folder name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="116"/> - <location filename="../../folderExistsDialog.ui" line="184"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="227"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="238"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="245"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="252"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="259"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="266"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -</TS> diff --git a/plugins/CopyEngine/Ultracopier/Languages/pt/translation.ts b/plugins/CopyEngine/Ultracopier/Languages/pt/translation.ts deleted file mode 100644 index e17b3f2..0000000 --- a/plugins/CopyEngine/Ultracopier/Languages/pt/translation.ts +++ /dev/null @@ -1,1291 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE TS> -<TS version="2.1"> -<context> - <name>AvancedQFile</name> - <message> - <location filename="../../AvancedQFile.cpp" line="26"/> - <location filename="../../AvancedQFile.cpp" line="57"/> - <location filename="../../AvancedQFile.cpp" line="88"/> - <source>Not supported on this platform</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="40"/> - <source>Last modified date is wrong</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="71"/> - <source>Last access date is wrong</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="121"/> - <source>Unknown error: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="187"/> - <source>Unknown error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="133"/> - <source>Path conversion error</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>CopyEngine</name> - <message> - <location filename="../../CopyEngine.cpp" line="429"/> - <location filename="../../CopyEngine.cpp" line="451"/> - <source>The engine is forced to move, you can't copy with it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="462"/> - <location filename="../../CopyEngine.cpp" line="484"/> - <source>The engine is forced to copy, you can't move with it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Use the actual destination "%1"?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="732"/> - <source>The mode has been forced previously. This is an internal error, please report it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1062"/> - <location filename="../../CopyEngine.cpp" line="1065"/> - <location filename="../../CopyEngine.cpp" line="1070"/> - <location filename="../../CopyEngine.cpp" line="1074"/> - <source>Ask</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1063"/> - <location filename="../../CopyEngine.cpp" line="1067"/> - <location filename="../../CopyEngine.cpp" line="1071"/> - <location filename="../../CopyEngine.cpp" line="1075"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1066"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1068"/> - <location filename="../../CopyEngine.cpp" line="1080"/> - <source>Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1072"/> - <source>Put at the end</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1076"/> - <source>Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1077"/> - <source>Overwrite if different</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1078"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1079"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1082"/> - <source>Automatic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1083"/> - <source>Sequential</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1084"/> - <source>Parallel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>CopyEngineFactory</name> - <message> - <location filename="../../CopyEngineFactory.cpp" line="427"/> - <location filename="../../CopyEngineFactory.cpp" line="430"/> - <location filename="../../CopyEngineFactory.cpp" line="435"/> - <location filename="../../CopyEngineFactory.cpp" line="439"/> - <source>Ask</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="428"/> - <location filename="../../CopyEngineFactory.cpp" line="432"/> - <location filename="../../CopyEngineFactory.cpp" line="436"/> - <location filename="../../CopyEngineFactory.cpp" line="440"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="431"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="433"/> - <location filename="../../CopyEngineFactory.cpp" line="445"/> - <source>Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="437"/> - <source>Put at the end</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="441"/> - <source>Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="442"/> - <source>Overwrite if different</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="443"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="444"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="447"/> - <source>Automatic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="448"/> - <source>Sequential</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="449"/> - <source>Parallel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options engine is not loaded, can't access to the filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>DiskSpace</name> - <message> - <location filename="../../DiskSpace.ui" line="14"/> - <source>Disk space</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="24"/> - <source>You need more space on this drive to finish this transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="49"/> - <source>Continue</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="56"/> - <source>Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.cpp" line="23"/> - <source>Drives %1 have %2 available but need %3</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileErrorDialog</name> - <message> - <location filename="../../FileErrorDialog.cpp" line="54"/> - <source>Error on folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileErrorDialog.cpp" line="57"/> - <source>Folder name</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileExistsDialog</name> - <message> - <location filename="../../FileExistsDialog.cpp" line="137"/> - <source>%name% - copy%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="144"/> - <source>%name% - copy (%number%)%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileIsSameDialog</name> - <message> - <location filename="../../FileIsSameDialog.cpp" line="111"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="118"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FilterRules</name> - <message> - <location filename="../../FilterRules.ui" line="33"/> - <source>Search:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="43"/> - <source>Search type:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="51"/> - <source>Raw text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="56"/> - <source>Simplified regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="61"/> - <source>Perl's regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="69"/> - <source>Apply on:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="77"/> - <source>File</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="82"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="87"/> - <source>File and folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="125"/> - <source>The test string matches with the regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="102"/> - <source>Checking</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="115"/> - <source>Test string:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="17"/> - <source>Filters dialog</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="95"/> - <source>Whole string must match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="108"/> - <source>The regex is valid</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>Filters</name> - <message> - <location filename="../../Filters.ui" line="14"/> - <source>Filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="30"/> - <source>Exclusion filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="93"/> - <source>Inclusion filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="105"/> - <source>None = Include all</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="93"/> - <location filename="../../Filters.cpp" line="131"/> - <source>Raw text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="96"/> - <location filename="../../Filters.cpp" line="134"/> - <source>Simplified regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="99"/> - <location filename="../../Filters.cpp" line="137"/> - <source>Perl's regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="107"/> - <location filename="../../Filters.cpp" line="145"/> - <source>Only on file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="110"/> - <location filename="../../Filters.cpp" line="148"/> - <source>Only on folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="116"/> - <location filename="../../Filters.cpp" line="154"/> - <location filename="../../Filters.cpp" line="216"/> - <location filename="../../Filters.cpp" line="255"/> - <source>Full match</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FolderExistsDialog</name> - <message> - <location filename="../../FolderExistsDialog.cpp" line="57"/> - <source>Folder already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="122"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="131"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ListThread</name> - <message> - <location filename="../../ListThread.cpp" line="1487"/> - <location filename="../../ListThread.cpp" line="2419"/> - <source>Unable do to move or copy item into wrong forced mode: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1494"/> - <location filename="../../ListThread.cpp" line="2426"/> - <source>Unable to save the transfer list: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1510"/> - <source>Problem reading file, or file-size is 0</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1517"/> - <source>Wrong header: "%1"</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1526"/> - <source>The transfer list is in mixed mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1535"/> - <source>The transfer list is in copy mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1541"/> - <source>The transfer list is in move mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1604"/> - <source>Some errors have been found during the line parsing</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1612"/> - <source>Unable to open the transfer list: %1</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>MkPath</name> - <message> - <location filename="../../MkPath.cpp" line="142"/> - <source>Unable to create the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="155"/> - <source>The source folder don't exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="183"/> - <source>Unable to temporary rename the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="206"/> - <source>Unable to do the final real move the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="233"/> - <source>Unable to move the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="93"/> - <location filename="../../MkPath.cpp" line="276"/> - <source>Unable to remove</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ReadThread</name> - <message> - <location filename="../../ReadThread.cpp" line="59"/> - <source>Internal error, please report it!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="188"/> - <source>Internal error reading the source file:block size out of range</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="196"/> - <location filename="../../ReadThread.cpp" line="420"/> - <source>Unable to read the source file: </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="237"/> - <location filename="../../ReadThread.cpp" line="468"/> - <source>File truncated during the read, possible data change</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>RenamingRules</name> - <message> - <location filename="../../RenamingRules.ui" line="35"/> - <source>First renaming</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="41"/> - <source>%name% - copy%suffix%</source> - <extracomment>%name% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="57"/> - <source>%name% - copy (%number%)%suffix%</source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="67"/> - <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name, <span style=" font-weight:600;">%number%</span> for the extra number, <span style=" font-weight:600;">%suffix%</span> file suffix</p></body></html></source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="51"/> - <source>Second renaming</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="39"/> - <location filename="../../RenamingRules.cpp" line="62"/> - <source>%1 - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="43"/> - <location filename="../../RenamingRules.cpp" line="73"/> - <source>%1 - copy (%2)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="14"/> - <source>Renaming rules</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ScanFileOrFolder</name> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="274"/> - <source>Blacklisted folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="338"/> - <source>%1 - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="345"/> - <source>%1 - copy (%2)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="401"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="408"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="444"/> - <source>This is not a folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="446"/> - <source>The folder does exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="448"/> - <source>The folder is not readable</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="459"/> - <source>Problem with name encoding</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>TransferThread</name> - <message> - <location filename="../../TransferThread.cpp" line="244"/> - <location filename="../../TransferThread.cpp" line="673"/> - <location filename="../../TransferThread.cpp" line="745"/> - <location filename="../../TransferThread.cpp" line="1315"/> - <source>File not found</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="346"/> - <location filename="../../TransferThread.cpp" line="363"/> - <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="421"/> - <location filename="../../TransferThread.cpp" line="444"/> - <source>Internal error: Already opening</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="586"/> - <source>Drive %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="588"/> - <source>Unknown folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="592"/> - <source>root</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="645"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="652"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="711"/> - <location filename="../../TransferThread.cpp" line="826"/> - <source>The source file doesn't exist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="751"/> - <location filename="../../TransferThread.cpp" line="838"/> - <source>Unable to do the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="787"/> - <source>The source doesn't exist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="832"/> - <source>Another file exists at same place</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1134"/> - <source>The checksums do not match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1224"/> - <source>Internal error: The destination is not closed</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1239"/> - <source>Internal error: The size transfered doesn't match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1250"/> - <source>Internal error: The buffer is not empty</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1315"/> - <location filename="../../TransferThread.cpp" line="1333"/> - <location filename="../../TransferThread.cpp" line="1348"/> - <source>Unable to change the date</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>WriteThread</name> - <message> - <location filename="../../WriteThread.cpp" line="83"/> - <source>Path resolution error (Empty path)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="277"/> - <source>Internal error, please report it!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="680"/> - <source>Unable to read the source file: </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="705"/> - <source>File truncated during read, possible data change</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>copyEngineOptions</name> - <message> - <location filename="../../copyEngineOptions.ui" line="44"/> - <source>Transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="53"/> - <source>Move the whole folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="60"/> - <source>Transfer the file rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="70"/> - <source>Keep the file date</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="83"/> - <source>Autostart the transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="90"/> - <location filename="../../copyEngineOptions.ui" line="110"/> - <source>Less performance if checked</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="113"/> - <source>Follow the strict order</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="139"/> - <source>Error and collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="145"/> - <source>When folder error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="155"/> - <source>When file error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="181"/> - <source>When file collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="241"/> - <source>When folder collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="272"/> - <source>Check if destination folder exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="279"/> - <source>Renaming rules</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="299"/> - <source>Delete partially transferred files</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="312"/> - <source>Rename the original destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="343"/> - <source>Control</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="349"/> - <source>Checksum</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="358"/> - <source>Only after error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="365"/> - <source>Ignore if impossible</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="382"/> - <source>Verify checksums</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="414"/> - <source>Performance</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="420"/> - <source>Parallel buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="427"/> - <location filename="../../copyEngineOptions.ui" line="440"/> - <location filename="../../copyEngineOptions.ui" line="453"/> - <location filename="../../copyEngineOptions.ui" line="490"/> - <location filename="../../copyEngineOptions.ui" line="559"/> - <source>KB</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="469"/> - <source>Block size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="476"/> - <source>Sequential buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="483"/> - <source>Enable OS buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="506"/> - <source>OS buffer only if smaller than</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="513"/> - <source>Transfer algorithm</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="552"/> - <source>Parallelize if smaller than</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="582"/> - <source>Inode threads (unsafe > 1)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="589"/> - <location filename="../../copyEngineOptions.ui" line="599"/> - <source>More cpu, but better organisation on the disk</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="602"/> - <source>Order the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="618"/> - <source>Misc</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="624"/> - <source>Check the disk space</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="634"/> - <source>Use this folder when destination is not set</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="646"/> - <source>Browse</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="668"/> - <source>Filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileErrorDialog</name> - <message> - <location filename="../../fileErrorDialog.ui" line="14"/> - <source>Error with file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="20"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="59"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="76"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="93"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="110"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="127"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="173"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="193"/> - <source>Try in with elevated privileges</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="200"/> - <source>Put to bottom</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="207"/> - <source>Retry</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="214"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="221"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileExistsDialog</name> - <message> - <location filename="../../fileExistsDialog.ui" line="14"/> - <source>The file exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="34"/> - <source>Source</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="82"/> - <location filename="../../fileExistsDialog.ui" line="170"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="99"/> - <location filename="../../fileExistsDialog.ui" line="187"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="116"/> - <location filename="../../fileExistsDialog.ui" line="204"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="133"/> - <location filename="../../fileExistsDialog.ui" line="221"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="277"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="288"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="346"/> - <location filename="../../fileExistsDialog.ui" line="349"/> - <source>Overwrite if modification date differs</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="308"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="315"/> - <source>&Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="325"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="332"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="341"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="354"/> - <location filename="../../fileExistsDialog.ui" line="357"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileIsSameDialog</name> - <message> - <location filename="../../fileIsSameDialog.ui" line="40"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="110"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="70"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="14"/> - <source>The source and destination are same</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="90"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="159"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="170"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="190"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="197"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="204"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>folderExistsDialog</name> - <message> - <location filename="../../folderExistsDialog.ui" line="34"/> - <source>Source</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="14"/> - <source>The source and destination is identical</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="82"/> - <location filename="../../folderExistsDialog.ui" line="150"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="99"/> - <location filename="../../folderExistsDialog.ui" line="160"/> - <source>Folder name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="116"/> - <location filename="../../folderExistsDialog.ui" line="184"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="227"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="238"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="245"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="252"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="259"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="266"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -</TS> diff --git a/plugins/CopyEngine/Ultracopier/Languages/ru/translation.ts b/plugins/CopyEngine/Ultracopier/Languages/ru/translation.ts deleted file mode 100644 index 3b103c5..0000000 --- a/plugins/CopyEngine/Ultracopier/Languages/ru/translation.ts +++ /dev/null @@ -1,1291 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE TS> -<TS version="2.1" language="ru" sourcelanguage="en"> -<context> - <name>AvancedQFile</name> - <message> - <location filename="../../AvancedQFile.cpp" line="26"/> - <location filename="../../AvancedQFile.cpp" line="57"/> - <location filename="../../AvancedQFile.cpp" line="88"/> - <source>Not supported on this platform</source> - <translation>Не поддерживается на этой платформе</translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="40"/> - <source>Last modified date is wrong</source> - <translation>Дата обновления неправильно</translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="71"/> - <source>Last access date is wrong</source> - <translation>Дата последнего доступа не так</translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="121"/> - <source>Unknown error: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="187"/> - <source>Unknown error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="133"/> - <source>Path conversion error</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>CopyEngine</name> - <message> - <location filename="../../CopyEngine.cpp" line="429"/> - <location filename="../../CopyEngine.cpp" line="451"/> - <source>The engine is forced to move, you can't copy with it</source> - <translation type="unfinished">Двигатель вынуждены покинуть свои дома, вы не можете скопировать с ним</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="462"/> - <location filename="../../CopyEngine.cpp" line="484"/> - <source>The engine is forced to copy, you can't move with it</source> - <translation type="unfinished">Двигатель вынужден копии, вы не можете двигаться вместе с ним</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Destination</source> - <translation type="unfinished">назначение</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Use the actual destination "%1"?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="732"/> - <source>The mode has been forced previously. This is an internal error, please report it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1062"/> - <location filename="../../CopyEngine.cpp" line="1065"/> - <location filename="../../CopyEngine.cpp" line="1070"/> - <location filename="../../CopyEngine.cpp" line="1074"/> - <source>Ask</source> - <translation type="unfinished">просить</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1063"/> - <location filename="../../CopyEngine.cpp" line="1067"/> - <location filename="../../CopyEngine.cpp" line="1071"/> - <location filename="../../CopyEngine.cpp" line="1075"/> - <source>Skip</source> - <translation type="unfinished">пропускать</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1066"/> - <source>Merge</source> - <translation type="unfinished">слияние</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1068"/> - <location filename="../../CopyEngine.cpp" line="1080"/> - <source>Rename</source> - <translation type="unfinished">переименовать</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1072"/> - <source>Put at the end</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1076"/> - <source>Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1077"/> - <source>Overwrite if different</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1078"/> - <source>Overwrite if newer</source> - <translation type="unfinished">Заменить, если новее</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1079"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1082"/> - <source>Automatic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1083"/> - <source>Sequential</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1084"/> - <source>Parallel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options error</source> - <translation type="unfinished">Опции ошибке</translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>CopyEngineFactory</name> - <message> - <location filename="../../CopyEngineFactory.cpp" line="427"/> - <location filename="../../CopyEngineFactory.cpp" line="430"/> - <location filename="../../CopyEngineFactory.cpp" line="435"/> - <location filename="../../CopyEngineFactory.cpp" line="439"/> - <source>Ask</source> - <translation type="unfinished">просить</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="428"/> - <location filename="../../CopyEngineFactory.cpp" line="432"/> - <location filename="../../CopyEngineFactory.cpp" line="436"/> - <location filename="../../CopyEngineFactory.cpp" line="440"/> - <source>Skip</source> - <translation type="unfinished">пропускать</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="431"/> - <source>Merge</source> - <translation type="unfinished">слияние</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="433"/> - <location filename="../../CopyEngineFactory.cpp" line="445"/> - <source>Rename</source> - <translation type="unfinished">переименовать</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="437"/> - <source>Put at the end</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="441"/> - <source>Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="442"/> - <source>Overwrite if different</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="443"/> - <source>Overwrite if newer</source> - <translation type="unfinished">Заменить, если новее</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="444"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="447"/> - <source>Automatic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="448"/> - <source>Sequential</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="449"/> - <source>Parallel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options error</source> - <translation type="unfinished">Опции ошибке</translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options engine is not loaded, can't access to the filters</source> - <translation type="unfinished">Параметры двигателя не загружается, не может получить доступ к фильтрам</translation> - </message> -</context> -<context> - <name>DiskSpace</name> - <message> - <location filename="../../DiskSpace.ui" line="14"/> - <source>Disk space</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="24"/> - <source>You need more space on this drive to finish this transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="49"/> - <source>Continue</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="56"/> - <source>Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.cpp" line="23"/> - <source>Drives %1 have %2 available but need %3</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileErrorDialog</name> - <message> - <location filename="../../FileErrorDialog.cpp" line="54"/> - <source>Error on folder</source> - <translation type="unfinished">Ошибка в папку</translation> - </message> - <message> - <location filename="../../FileErrorDialog.cpp" line="57"/> - <source>Folder name</source> - <translation type="unfinished">имя папки</translation> - </message> -</context> -<context> - <name>FileExistsDialog</name> - <message> - <location filename="../../FileExistsDialog.cpp" line="137"/> - <source>%name% - copy%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="144"/> - <source>%name% - copy (%number%)%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Error</source> - <translation type="unfinished">ошибка</translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileIsSameDialog</name> - <message> - <location filename="../../FileIsSameDialog.cpp" line="111"/> - <source>%name% - copy</source> - <translation type="unfinished">%name% - копия</translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="118"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished">%name% - копия (%number%)</translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Error</source> - <translation type="unfinished">ошибка</translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FilterRules</name> - <message> - <location filename="../../FilterRules.ui" line="33"/> - <source>Search:</source> - <translation>Поиск по сайту:</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="43"/> - <source>Search type:</source> - <translation>Тип поиска:</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="51"/> - <source>Raw text</source> - <translation>Сырой текст</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="56"/> - <source>Simplified regex</source> - <translation>упрощенный regex</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="61"/> - <source>Perl's regex</source> - <translation>Perl's regex</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="69"/> - <source>Apply on:</source> - <translation>Нанесите на:</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="77"/> - <source>File</source> - <translation>файл</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="82"/> - <source>Folder</source> - <translation>папка</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="87"/> - <source>File and folder</source> - <translation>Файлов и папок</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="125"/> - <source>The test string matches with the regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="102"/> - <source>Checking</source> - <translation>контроль</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="115"/> - <source>Test string:</source> - <translation>Испытание строки:</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="17"/> - <source>Filters dialog</source> - <translation>Фильтры диалогового</translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="95"/> - <source>Whole string must match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="108"/> - <source>The regex is valid</source> - <translation>Регулярное действует</translation> - </message> -</context> -<context> - <name>Filters</name> - <message> - <location filename="../../Filters.ui" line="14"/> - <source>Filters</source> - <translation>Фильтры</translation> - </message> - <message> - <location filename="../../Filters.ui" line="30"/> - <source>Exclusion filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="93"/> - <source>Inclusion filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="105"/> - <source>None = Include all</source> - <translation>Ни = Включить все</translation> - </message> - <message> - <location filename="../../Filters.cpp" line="93"/> - <location filename="../../Filters.cpp" line="131"/> - <source>Raw text</source> - <translation>Сырой текст</translation> - </message> - <message> - <location filename="../../Filters.cpp" line="96"/> - <location filename="../../Filters.cpp" line="134"/> - <source>Simplified regex</source> - <translation>Упрощенная регулярных выражений</translation> - </message> - <message> - <location filename="../../Filters.cpp" line="99"/> - <location filename="../../Filters.cpp" line="137"/> - <source>Perl's regex</source> - <translation>Perl's regex</translation> - </message> - <message> - <location filename="../../Filters.cpp" line="107"/> - <location filename="../../Filters.cpp" line="145"/> - <source>Only on file</source> - <translation>Только на файл</translation> - </message> - <message> - <location filename="../../Filters.cpp" line="110"/> - <location filename="../../Filters.cpp" line="148"/> - <source>Only on folder</source> - <translation>Только на папку</translation> - </message> - <message> - <location filename="../../Filters.cpp" line="116"/> - <location filename="../../Filters.cpp" line="154"/> - <location filename="../../Filters.cpp" line="216"/> - <location filename="../../Filters.cpp" line="255"/> - <source>Full match</source> - <translation>Полный матч</translation> - </message> -</context> -<context> - <name>FolderExistsDialog</name> - <message> - <location filename="../../FolderExistsDialog.cpp" line="57"/> - <source>Folder already exists</source> - <translation type="unfinished">Папка уже существует</translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="122"/> - <source>%name% - copy</source> - <translation type="unfinished">%name% - копия</translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="131"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished">%name% - копия (%number%)</translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Error</source> - <translation type="unfinished">ошибка</translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ListThread</name> - <message> - <location filename="../../ListThread.cpp" line="1487"/> - <location filename="../../ListThread.cpp" line="2419"/> - <source>Unable do to move or copy item into wrong forced mode: %1</source> - <translation>Невозможно сделать, чтобы скопировать или переместить элемент в неправильном форсированном режиме: %1</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1494"/> - <location filename="../../ListThread.cpp" line="2426"/> - <source>Unable to save the transfer list: %1</source> - <translation>Невозможно сохранить трансфер: %1</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1510"/> - <source>Problem reading file, or file-size is 0</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1517"/> - <source>Wrong header: "%1"</source> - <translation>Неправильный заголовок: "%1"</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1526"/> - <source>The transfer list is in mixed mode, but this instance is not in this mode</source> - <translation>Трансфер в смешанном режиме, но этот экземпляр не в этом режиме</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1535"/> - <source>The transfer list is in copy mode, but this instance is not in this mode</source> - <translation>Передача списка в режиме копирования, но этот экземпляр не в этом режиме</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1541"/> - <source>The transfer list is in move mode, but this instance is not in this mode</source> - <translation>Трансфер в режим перемещения, но этот экземпляр не в этом режиме</translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1604"/> - <source>Some errors have been found during the line parsing</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1612"/> - <source>Unable to open the transfer list: %1</source> - <translation>Не удается открыть трансфер: %1</translation> - </message> -</context> -<context> - <name>MkPath</name> - <message> - <location filename="../../MkPath.cpp" line="142"/> - <source>Unable to create the folder</source> - <translation>Невозможно создать папку</translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="155"/> - <source>The source folder don't exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="183"/> - <source>Unable to temporary rename the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="206"/> - <source>Unable to do the final real move the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="233"/> - <source>Unable to move the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="93"/> - <location filename="../../MkPath.cpp" line="276"/> - <source>Unable to remove</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ReadThread</name> - <message> - <location filename="../../ReadThread.cpp" line="59"/> - <source>Internal error, please report it!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="188"/> - <source>Internal error reading the source file:block size out of range</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="196"/> - <location filename="../../ReadThread.cpp" line="420"/> - <source>Unable to read the source file: </source> - <translation>Невозможно прочитать исходный файл: </translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="237"/> - <location filename="../../ReadThread.cpp" line="468"/> - <source>File truncated during the read, possible data change</source> - <translation>Файл усечены во время чтения, возможность изменения данных</translation> - </message> -</context> -<context> - <name>RenamingRules</name> - <message> - <location filename="../../RenamingRules.ui" line="35"/> - <source>First renaming</source> - <translation>Первое переименование</translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="41"/> - <source>%name% - copy%suffix%</source> - <extracomment>%name% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="57"/> - <source>%name% - copy (%number%)%suffix%</source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="67"/> - <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name, <span style=" font-weight:600;">%number%</span> for the extra number, <span style=" font-weight:600;">%suffix%</span> file suffix</p></body></html></source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="51"/> - <source>Second renaming</source> - <translation>Второе переименование</translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="39"/> - <location filename="../../RenamingRules.cpp" line="62"/> - <source>%1 - copy</source> - <translation>%1 - копия</translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="43"/> - <location filename="../../RenamingRules.cpp" line="73"/> - <source>%1 - copy (%2)</source> - <translation>%1 - копия (%2)</translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="14"/> - <source>Renaming rules</source> - <translation>Переименование правила</translation> - </message> -</context> -<context> - <name>ScanFileOrFolder</name> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="274"/> - <source>Blacklisted folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="338"/> - <source>%1 - copy</source> - <translation type="unfinished">%1 - копия</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="345"/> - <source>%1 - copy (%2)</source> - <translation type="unfinished">%1 - копия (%2)</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="401"/> - <source>%name% - copy</source> - <translation type="unfinished">%name% - копия</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="408"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished">%name% - копия (%number%)</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="444"/> - <source>This is not a folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="446"/> - <source>The folder does exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="448"/> - <source>The folder is not readable</source> - <translation type="unfinished">Папки не читается</translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="459"/> - <source>Problem with name encoding</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>TransferThread</name> - <message> - <location filename="../../TransferThread.cpp" line="244"/> - <location filename="../../TransferThread.cpp" line="673"/> - <location filename="../../TransferThread.cpp" line="745"/> - <location filename="../../TransferThread.cpp" line="1315"/> - <source>File not found</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="346"/> - <location filename="../../TransferThread.cpp" line="363"/> - <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="421"/> - <location filename="../../TransferThread.cpp" line="444"/> - <source>Internal error: Already opening</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="586"/> - <source>Drive %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="588"/> - <source>Unknown folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="592"/> - <source>root</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="645"/> - <source>%name% - copy</source> - <translation type="unfinished">%name% - копия</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="652"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished">%name% - копия (%number%)</translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="711"/> - <location filename="../../TransferThread.cpp" line="826"/> - <source>The source file doesn't exist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="751"/> - <location filename="../../TransferThread.cpp" line="838"/> - <source>Unable to do the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="787"/> - <source>The source doesn't exist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="832"/> - <source>Another file exists at same place</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1134"/> - <source>The checksums do not match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1224"/> - <source>Internal error: The destination is not closed</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1239"/> - <source>Internal error: The size transfered doesn't match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1250"/> - <source>Internal error: The buffer is not empty</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1315"/> - <location filename="../../TransferThread.cpp" line="1333"/> - <location filename="../../TransferThread.cpp" line="1348"/> - <source>Unable to change the date</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>WriteThread</name> - <message> - <location filename="../../WriteThread.cpp" line="83"/> - <source>Path resolution error (Empty path)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="277"/> - <source>Internal error, please report it!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="680"/> - <source>Unable to read the source file: </source> - <translation>Невозможно прочитать исходный файл: </translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="705"/> - <source>File truncated during read, possible data change</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>copyEngineOptions</name> - <message> - <location filename="../../copyEngineOptions.ui" line="44"/> - <source>Transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="53"/> - <source>Move the whole folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="60"/> - <source>Transfer the file rights</source> - <translation type="unfinished">Передача файлов прав</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="70"/> - <source>Keep the file date</source> - <translation type="unfinished">Держите дату файла</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="83"/> - <source>Autostart the transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="90"/> - <location filename="../../copyEngineOptions.ui" line="110"/> - <source>Less performance if checked</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="113"/> - <source>Follow the strict order</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="139"/> - <source>Error and collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="145"/> - <source>When folder error</source> - <translation type="unfinished">Когда папка ошибка</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="155"/> - <source>When file error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="181"/> - <source>When file collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="241"/> - <source>When folder collision</source> - <translation type="unfinished">Когда папка столкновения</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="272"/> - <source>Check if destination folder exists</source> - <translation type="unfinished">Убедитесь, что папка существует</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="279"/> - <source>Renaming rules</source> - <translation type="unfinished">Переименование правила</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="299"/> - <source>Delete partially transferred files</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="312"/> - <source>Rename the original destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="343"/> - <source>Control</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="349"/> - <source>Checksum</source> - <translation type="unfinished">Контрольная</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="358"/> - <source>Only after error</source> - <translation type="unfinished">Только после того, как ошибка</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="365"/> - <source>Ignore if impossible</source> - <translation type="unfinished">Игнорировать, если невозможно</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="382"/> - <source>Verify checksums</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="414"/> - <source>Performance</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="420"/> - <source>Parallel buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="427"/> - <location filename="../../copyEngineOptions.ui" line="440"/> - <location filename="../../copyEngineOptions.ui" line="453"/> - <location filename="../../copyEngineOptions.ui" line="490"/> - <location filename="../../copyEngineOptions.ui" line="559"/> - <source>KB</source> - <translation type="unfinished">KB</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="469"/> - <source>Block size</source> - <translation type="unfinished">размер блока</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="476"/> - <source>Sequential buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="483"/> - <source>Enable OS buffer</source> - <translation type="unfinished">Включить OS буфер</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="506"/> - <source>OS buffer only if smaller than</source> - <translation type="unfinished">ОС буфер, только если меньше</translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="513"/> - <source>Transfer algorithm</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="552"/> - <source>Parallelize if smaller than</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="582"/> - <source>Inode threads (unsafe > 1)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="589"/> - <location filename="../../copyEngineOptions.ui" line="599"/> - <source>More cpu, but better organisation on the disk</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="602"/> - <source>Order the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="618"/> - <source>Misc</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="624"/> - <source>Check the disk space</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="634"/> - <source>Use this folder when destination is not set</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="646"/> - <source>Browse</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="668"/> - <source>Filters</source> - <translation type="unfinished">Фильтры</translation> - </message> -</context> -<context> - <name>fileErrorDialog</name> - <message> - <location filename="../../fileErrorDialog.ui" line="14"/> - <source>Error with file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="20"/> - <source>Error</source> - <translation>ошибка</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="59"/> - <source>Size</source> - <translation>размер</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="76"/> - <source>Modified</source> - <translation>модифицированный</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="93"/> - <source>File name</source> - <translation>имя файла</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="110"/> - <source>Destination</source> - <translation type="unfinished">назначение</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="127"/> - <source>Folder</source> - <translation type="unfinished">папка</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="173"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="193"/> - <source>Try in with elevated privileges</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="200"/> - <source>Put to bottom</source> - <translation>Положить в нижней</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="207"/> - <source>Retry</source> - <translation>Повторить</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="214"/> - <source>&Skip</source> - <translation>пропускать</translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="221"/> - <source>&Cancel</source> - <translation>отменить</translation> - </message> -</context> -<context> - <name>fileExistsDialog</name> - <message> - <location filename="../../fileExistsDialog.ui" line="14"/> - <source>The file exists</source> - <translation>Файл существует</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="34"/> - <source>Source</source> - <translation>источник</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation>назначение</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="82"/> - <location filename="../../fileExistsDialog.ui" line="170"/> - <source>Size</source> - <translation>размер</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="99"/> - <location filename="../../fileExistsDialog.ui" line="187"/> - <source>Modified</source> - <translation>модифицированный</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="116"/> - <location filename="../../fileExistsDialog.ui" line="204"/> - <source>File name</source> - <translation>имя файла</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="133"/> - <location filename="../../fileExistsDialog.ui" line="221"/> - <source>Folder</source> - <translation type="unfinished">папка</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="277"/> - <source>Suggest new &name</source> - <translation>Предложить новое имя</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="288"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="346"/> - <location filename="../../fileExistsDialog.ui" line="349"/> - <source>Overwrite if modification date differs</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="308"/> - <source>&Rename</source> - <translation>переименовать</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="315"/> - <source>&Overwrite</source> - <translation>переписывать</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="325"/> - <source>&Skip</source> - <translation>пропускать</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="332"/> - <source>&Cancel</source> - <translation>отменить</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="341"/> - <source>Overwrite if newer</source> - <translation>Заменить, если новее</translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="354"/> - <location filename="../../fileExistsDialog.ui" line="357"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileIsSameDialog</name> - <message> - <location filename="../../fileIsSameDialog.ui" line="40"/> - <source>Size</source> - <translation>размер</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="110"/> - <source>Modified</source> - <translation>модифицированный</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="70"/> - <source>File name</source> - <translation>имя файла</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="14"/> - <source>The source and destination are same</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="90"/> - <source>Folder</source> - <translation type="unfinished">папка</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="159"/> - <source>Suggest new &name</source> - <translation>Предложить новое имя</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="170"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="190"/> - <source>&Rename</source> - <translation>переименовать</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="197"/> - <source>&Skip</source> - <translation>пропускать</translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="204"/> - <source>&Cancel</source> - <translation>отменить</translation> - </message> -</context> -<context> - <name>folderExistsDialog</name> - <message> - <location filename="../../folderExistsDialog.ui" line="34"/> - <source>Source</source> - <translation>источник</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation>назначение</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="14"/> - <source>The source and destination is identical</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="82"/> - <location filename="../../folderExistsDialog.ui" line="150"/> - <source>Modified</source> - <translation>модифицированный</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="99"/> - <location filename="../../folderExistsDialog.ui" line="160"/> - <source>Folder name</source> - <translation>имя папки</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="116"/> - <location filename="../../folderExistsDialog.ui" line="184"/> - <source>Folder</source> - <translation type="unfinished">папка</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="227"/> - <source>Suggest new &name</source> - <translation>Предложить новое имя</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="238"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="245"/> - <source>&Rename</source> - <translation>переименовать</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="252"/> - <source>Merge</source> - <translation>слияние</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="259"/> - <source>Skip</source> - <translation>пропускать</translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="266"/> - <source>&Cancel</source> - <translation>отменить</translation> - </message> -</context> -</TS> diff --git a/plugins/CopyEngine/Ultracopier/Languages/th/translation.ts b/plugins/CopyEngine/Ultracopier/Languages/th/translation.ts deleted file mode 100644 index e17b3f2..0000000 --- a/plugins/CopyEngine/Ultracopier/Languages/th/translation.ts +++ /dev/null @@ -1,1291 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE TS> -<TS version="2.1"> -<context> - <name>AvancedQFile</name> - <message> - <location filename="../../AvancedQFile.cpp" line="26"/> - <location filename="../../AvancedQFile.cpp" line="57"/> - <location filename="../../AvancedQFile.cpp" line="88"/> - <source>Not supported on this platform</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="40"/> - <source>Last modified date is wrong</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="71"/> - <source>Last access date is wrong</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="121"/> - <source>Unknown error: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="187"/> - <source>Unknown error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="133"/> - <source>Path conversion error</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>CopyEngine</name> - <message> - <location filename="../../CopyEngine.cpp" line="429"/> - <location filename="../../CopyEngine.cpp" line="451"/> - <source>The engine is forced to move, you can't copy with it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="462"/> - <location filename="../../CopyEngine.cpp" line="484"/> - <source>The engine is forced to copy, you can't move with it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Use the actual destination "%1"?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="732"/> - <source>The mode has been forced previously. This is an internal error, please report it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1062"/> - <location filename="../../CopyEngine.cpp" line="1065"/> - <location filename="../../CopyEngine.cpp" line="1070"/> - <location filename="../../CopyEngine.cpp" line="1074"/> - <source>Ask</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1063"/> - <location filename="../../CopyEngine.cpp" line="1067"/> - <location filename="../../CopyEngine.cpp" line="1071"/> - <location filename="../../CopyEngine.cpp" line="1075"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1066"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1068"/> - <location filename="../../CopyEngine.cpp" line="1080"/> - <source>Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1072"/> - <source>Put at the end</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1076"/> - <source>Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1077"/> - <source>Overwrite if different</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1078"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1079"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1082"/> - <source>Automatic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1083"/> - <source>Sequential</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1084"/> - <source>Parallel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>CopyEngineFactory</name> - <message> - <location filename="../../CopyEngineFactory.cpp" line="427"/> - <location filename="../../CopyEngineFactory.cpp" line="430"/> - <location filename="../../CopyEngineFactory.cpp" line="435"/> - <location filename="../../CopyEngineFactory.cpp" line="439"/> - <source>Ask</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="428"/> - <location filename="../../CopyEngineFactory.cpp" line="432"/> - <location filename="../../CopyEngineFactory.cpp" line="436"/> - <location filename="../../CopyEngineFactory.cpp" line="440"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="431"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="433"/> - <location filename="../../CopyEngineFactory.cpp" line="445"/> - <source>Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="437"/> - <source>Put at the end</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="441"/> - <source>Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="442"/> - <source>Overwrite if different</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="443"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="444"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="447"/> - <source>Automatic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="448"/> - <source>Sequential</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="449"/> - <source>Parallel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options engine is not loaded, can't access to the filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>DiskSpace</name> - <message> - <location filename="../../DiskSpace.ui" line="14"/> - <source>Disk space</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="24"/> - <source>You need more space on this drive to finish this transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="49"/> - <source>Continue</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="56"/> - <source>Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.cpp" line="23"/> - <source>Drives %1 have %2 available but need %3</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileErrorDialog</name> - <message> - <location filename="../../FileErrorDialog.cpp" line="54"/> - <source>Error on folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileErrorDialog.cpp" line="57"/> - <source>Folder name</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileExistsDialog</name> - <message> - <location filename="../../FileExistsDialog.cpp" line="137"/> - <source>%name% - copy%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="144"/> - <source>%name% - copy (%number%)%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileIsSameDialog</name> - <message> - <location filename="../../FileIsSameDialog.cpp" line="111"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="118"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FilterRules</name> - <message> - <location filename="../../FilterRules.ui" line="33"/> - <source>Search:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="43"/> - <source>Search type:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="51"/> - <source>Raw text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="56"/> - <source>Simplified regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="61"/> - <source>Perl's regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="69"/> - <source>Apply on:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="77"/> - <source>File</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="82"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="87"/> - <source>File and folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="125"/> - <source>The test string matches with the regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="102"/> - <source>Checking</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="115"/> - <source>Test string:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="17"/> - <source>Filters dialog</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="95"/> - <source>Whole string must match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="108"/> - <source>The regex is valid</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>Filters</name> - <message> - <location filename="../../Filters.ui" line="14"/> - <source>Filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="30"/> - <source>Exclusion filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="93"/> - <source>Inclusion filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="105"/> - <source>None = Include all</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="93"/> - <location filename="../../Filters.cpp" line="131"/> - <source>Raw text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="96"/> - <location filename="../../Filters.cpp" line="134"/> - <source>Simplified regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="99"/> - <location filename="../../Filters.cpp" line="137"/> - <source>Perl's regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="107"/> - <location filename="../../Filters.cpp" line="145"/> - <source>Only on file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="110"/> - <location filename="../../Filters.cpp" line="148"/> - <source>Only on folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="116"/> - <location filename="../../Filters.cpp" line="154"/> - <location filename="../../Filters.cpp" line="216"/> - <location filename="../../Filters.cpp" line="255"/> - <source>Full match</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FolderExistsDialog</name> - <message> - <location filename="../../FolderExistsDialog.cpp" line="57"/> - <source>Folder already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="122"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="131"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ListThread</name> - <message> - <location filename="../../ListThread.cpp" line="1487"/> - <location filename="../../ListThread.cpp" line="2419"/> - <source>Unable do to move or copy item into wrong forced mode: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1494"/> - <location filename="../../ListThread.cpp" line="2426"/> - <source>Unable to save the transfer list: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1510"/> - <source>Problem reading file, or file-size is 0</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1517"/> - <source>Wrong header: "%1"</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1526"/> - <source>The transfer list is in mixed mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1535"/> - <source>The transfer list is in copy mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1541"/> - <source>The transfer list is in move mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1604"/> - <source>Some errors have been found during the line parsing</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1612"/> - <source>Unable to open the transfer list: %1</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>MkPath</name> - <message> - <location filename="../../MkPath.cpp" line="142"/> - <source>Unable to create the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="155"/> - <source>The source folder don't exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="183"/> - <source>Unable to temporary rename the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="206"/> - <source>Unable to do the final real move the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="233"/> - <source>Unable to move the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="93"/> - <location filename="../../MkPath.cpp" line="276"/> - <source>Unable to remove</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ReadThread</name> - <message> - <location filename="../../ReadThread.cpp" line="59"/> - <source>Internal error, please report it!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="188"/> - <source>Internal error reading the source file:block size out of range</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="196"/> - <location filename="../../ReadThread.cpp" line="420"/> - <source>Unable to read the source file: </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="237"/> - <location filename="../../ReadThread.cpp" line="468"/> - <source>File truncated during the read, possible data change</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>RenamingRules</name> - <message> - <location filename="../../RenamingRules.ui" line="35"/> - <source>First renaming</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="41"/> - <source>%name% - copy%suffix%</source> - <extracomment>%name% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="57"/> - <source>%name% - copy (%number%)%suffix%</source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="67"/> - <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name, <span style=" font-weight:600;">%number%</span> for the extra number, <span style=" font-weight:600;">%suffix%</span> file suffix</p></body></html></source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="51"/> - <source>Second renaming</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="39"/> - <location filename="../../RenamingRules.cpp" line="62"/> - <source>%1 - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="43"/> - <location filename="../../RenamingRules.cpp" line="73"/> - <source>%1 - copy (%2)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="14"/> - <source>Renaming rules</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ScanFileOrFolder</name> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="274"/> - <source>Blacklisted folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="338"/> - <source>%1 - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="345"/> - <source>%1 - copy (%2)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="401"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="408"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="444"/> - <source>This is not a folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="446"/> - <source>The folder does exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="448"/> - <source>The folder is not readable</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="459"/> - <source>Problem with name encoding</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>TransferThread</name> - <message> - <location filename="../../TransferThread.cpp" line="244"/> - <location filename="../../TransferThread.cpp" line="673"/> - <location filename="../../TransferThread.cpp" line="745"/> - <location filename="../../TransferThread.cpp" line="1315"/> - <source>File not found</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="346"/> - <location filename="../../TransferThread.cpp" line="363"/> - <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="421"/> - <location filename="../../TransferThread.cpp" line="444"/> - <source>Internal error: Already opening</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="586"/> - <source>Drive %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="588"/> - <source>Unknown folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="592"/> - <source>root</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="645"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="652"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="711"/> - <location filename="../../TransferThread.cpp" line="826"/> - <source>The source file doesn't exist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="751"/> - <location filename="../../TransferThread.cpp" line="838"/> - <source>Unable to do the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="787"/> - <source>The source doesn't exist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="832"/> - <source>Another file exists at same place</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1134"/> - <source>The checksums do not match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1224"/> - <source>Internal error: The destination is not closed</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1239"/> - <source>Internal error: The size transfered doesn't match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1250"/> - <source>Internal error: The buffer is not empty</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1315"/> - <location filename="../../TransferThread.cpp" line="1333"/> - <location filename="../../TransferThread.cpp" line="1348"/> - <source>Unable to change the date</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>WriteThread</name> - <message> - <location filename="../../WriteThread.cpp" line="83"/> - <source>Path resolution error (Empty path)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="277"/> - <source>Internal error, please report it!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="680"/> - <source>Unable to read the source file: </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="705"/> - <source>File truncated during read, possible data change</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>copyEngineOptions</name> - <message> - <location filename="../../copyEngineOptions.ui" line="44"/> - <source>Transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="53"/> - <source>Move the whole folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="60"/> - <source>Transfer the file rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="70"/> - <source>Keep the file date</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="83"/> - <source>Autostart the transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="90"/> - <location filename="../../copyEngineOptions.ui" line="110"/> - <source>Less performance if checked</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="113"/> - <source>Follow the strict order</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="139"/> - <source>Error and collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="145"/> - <source>When folder error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="155"/> - <source>When file error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="181"/> - <source>When file collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="241"/> - <source>When folder collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="272"/> - <source>Check if destination folder exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="279"/> - <source>Renaming rules</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="299"/> - <source>Delete partially transferred files</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="312"/> - <source>Rename the original destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="343"/> - <source>Control</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="349"/> - <source>Checksum</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="358"/> - <source>Only after error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="365"/> - <source>Ignore if impossible</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="382"/> - <source>Verify checksums</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="414"/> - <source>Performance</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="420"/> - <source>Parallel buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="427"/> - <location filename="../../copyEngineOptions.ui" line="440"/> - <location filename="../../copyEngineOptions.ui" line="453"/> - <location filename="../../copyEngineOptions.ui" line="490"/> - <location filename="../../copyEngineOptions.ui" line="559"/> - <source>KB</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="469"/> - <source>Block size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="476"/> - <source>Sequential buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="483"/> - <source>Enable OS buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="506"/> - <source>OS buffer only if smaller than</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="513"/> - <source>Transfer algorithm</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="552"/> - <source>Parallelize if smaller than</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="582"/> - <source>Inode threads (unsafe > 1)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="589"/> - <location filename="../../copyEngineOptions.ui" line="599"/> - <source>More cpu, but better organisation on the disk</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="602"/> - <source>Order the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="618"/> - <source>Misc</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="624"/> - <source>Check the disk space</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="634"/> - <source>Use this folder when destination is not set</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="646"/> - <source>Browse</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="668"/> - <source>Filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileErrorDialog</name> - <message> - <location filename="../../fileErrorDialog.ui" line="14"/> - <source>Error with file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="20"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="59"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="76"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="93"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="110"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="127"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="173"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="193"/> - <source>Try in with elevated privileges</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="200"/> - <source>Put to bottom</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="207"/> - <source>Retry</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="214"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="221"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileExistsDialog</name> - <message> - <location filename="../../fileExistsDialog.ui" line="14"/> - <source>The file exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="34"/> - <source>Source</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="82"/> - <location filename="../../fileExistsDialog.ui" line="170"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="99"/> - <location filename="../../fileExistsDialog.ui" line="187"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="116"/> - <location filename="../../fileExistsDialog.ui" line="204"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="133"/> - <location filename="../../fileExistsDialog.ui" line="221"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="277"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="288"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="346"/> - <location filename="../../fileExistsDialog.ui" line="349"/> - <source>Overwrite if modification date differs</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="308"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="315"/> - <source>&Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="325"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="332"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="341"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="354"/> - <location filename="../../fileExistsDialog.ui" line="357"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileIsSameDialog</name> - <message> - <location filename="../../fileIsSameDialog.ui" line="40"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="110"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="70"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="14"/> - <source>The source and destination are same</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="90"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="159"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="170"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="190"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="197"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="204"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>folderExistsDialog</name> - <message> - <location filename="../../folderExistsDialog.ui" line="34"/> - <source>Source</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="14"/> - <source>The source and destination is identical</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="82"/> - <location filename="../../folderExistsDialog.ui" line="150"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="99"/> - <location filename="../../folderExistsDialog.ui" line="160"/> - <source>Folder name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="116"/> - <location filename="../../folderExistsDialog.ui" line="184"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="227"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="238"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="245"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="252"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="259"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="266"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -</TS> diff --git a/plugins/CopyEngine/Ultracopier/Languages/tr/translation.ts b/plugins/CopyEngine/Ultracopier/Languages/tr/translation.ts deleted file mode 100644 index e17b3f2..0000000 --- a/plugins/CopyEngine/Ultracopier/Languages/tr/translation.ts +++ /dev/null @@ -1,1291 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE TS> -<TS version="2.1"> -<context> - <name>AvancedQFile</name> - <message> - <location filename="../../AvancedQFile.cpp" line="26"/> - <location filename="../../AvancedQFile.cpp" line="57"/> - <location filename="../../AvancedQFile.cpp" line="88"/> - <source>Not supported on this platform</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="40"/> - <source>Last modified date is wrong</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="71"/> - <source>Last access date is wrong</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="121"/> - <source>Unknown error: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="187"/> - <source>Unknown error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="133"/> - <source>Path conversion error</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>CopyEngine</name> - <message> - <location filename="../../CopyEngine.cpp" line="429"/> - <location filename="../../CopyEngine.cpp" line="451"/> - <source>The engine is forced to move, you can't copy with it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="462"/> - <location filename="../../CopyEngine.cpp" line="484"/> - <source>The engine is forced to copy, you can't move with it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Use the actual destination "%1"?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="732"/> - <source>The mode has been forced previously. This is an internal error, please report it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1062"/> - <location filename="../../CopyEngine.cpp" line="1065"/> - <location filename="../../CopyEngine.cpp" line="1070"/> - <location filename="../../CopyEngine.cpp" line="1074"/> - <source>Ask</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1063"/> - <location filename="../../CopyEngine.cpp" line="1067"/> - <location filename="../../CopyEngine.cpp" line="1071"/> - <location filename="../../CopyEngine.cpp" line="1075"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1066"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1068"/> - <location filename="../../CopyEngine.cpp" line="1080"/> - <source>Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1072"/> - <source>Put at the end</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1076"/> - <source>Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1077"/> - <source>Overwrite if different</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1078"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1079"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1082"/> - <source>Automatic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1083"/> - <source>Sequential</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1084"/> - <source>Parallel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>CopyEngineFactory</name> - <message> - <location filename="../../CopyEngineFactory.cpp" line="427"/> - <location filename="../../CopyEngineFactory.cpp" line="430"/> - <location filename="../../CopyEngineFactory.cpp" line="435"/> - <location filename="../../CopyEngineFactory.cpp" line="439"/> - <source>Ask</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="428"/> - <location filename="../../CopyEngineFactory.cpp" line="432"/> - <location filename="../../CopyEngineFactory.cpp" line="436"/> - <location filename="../../CopyEngineFactory.cpp" line="440"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="431"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="433"/> - <location filename="../../CopyEngineFactory.cpp" line="445"/> - <source>Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="437"/> - <source>Put at the end</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="441"/> - <source>Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="442"/> - <source>Overwrite if different</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="443"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="444"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="447"/> - <source>Automatic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="448"/> - <source>Sequential</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="449"/> - <source>Parallel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options engine is not loaded, can't access to the filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>DiskSpace</name> - <message> - <location filename="../../DiskSpace.ui" line="14"/> - <source>Disk space</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="24"/> - <source>You need more space on this drive to finish this transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="49"/> - <source>Continue</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="56"/> - <source>Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.cpp" line="23"/> - <source>Drives %1 have %2 available but need %3</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileErrorDialog</name> - <message> - <location filename="../../FileErrorDialog.cpp" line="54"/> - <source>Error on folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileErrorDialog.cpp" line="57"/> - <source>Folder name</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileExistsDialog</name> - <message> - <location filename="../../FileExistsDialog.cpp" line="137"/> - <source>%name% - copy%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="144"/> - <source>%name% - copy (%number%)%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileIsSameDialog</name> - <message> - <location filename="../../FileIsSameDialog.cpp" line="111"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="118"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FilterRules</name> - <message> - <location filename="../../FilterRules.ui" line="33"/> - <source>Search:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="43"/> - <source>Search type:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="51"/> - <source>Raw text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="56"/> - <source>Simplified regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="61"/> - <source>Perl's regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="69"/> - <source>Apply on:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="77"/> - <source>File</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="82"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="87"/> - <source>File and folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="125"/> - <source>The test string matches with the regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="102"/> - <source>Checking</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="115"/> - <source>Test string:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="17"/> - <source>Filters dialog</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="95"/> - <source>Whole string must match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="108"/> - <source>The regex is valid</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>Filters</name> - <message> - <location filename="../../Filters.ui" line="14"/> - <source>Filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="30"/> - <source>Exclusion filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="93"/> - <source>Inclusion filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="105"/> - <source>None = Include all</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="93"/> - <location filename="../../Filters.cpp" line="131"/> - <source>Raw text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="96"/> - <location filename="../../Filters.cpp" line="134"/> - <source>Simplified regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="99"/> - <location filename="../../Filters.cpp" line="137"/> - <source>Perl's regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="107"/> - <location filename="../../Filters.cpp" line="145"/> - <source>Only on file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="110"/> - <location filename="../../Filters.cpp" line="148"/> - <source>Only on folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="116"/> - <location filename="../../Filters.cpp" line="154"/> - <location filename="../../Filters.cpp" line="216"/> - <location filename="../../Filters.cpp" line="255"/> - <source>Full match</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FolderExistsDialog</name> - <message> - <location filename="../../FolderExistsDialog.cpp" line="57"/> - <source>Folder already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="122"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="131"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ListThread</name> - <message> - <location filename="../../ListThread.cpp" line="1487"/> - <location filename="../../ListThread.cpp" line="2419"/> - <source>Unable do to move or copy item into wrong forced mode: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1494"/> - <location filename="../../ListThread.cpp" line="2426"/> - <source>Unable to save the transfer list: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1510"/> - <source>Problem reading file, or file-size is 0</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1517"/> - <source>Wrong header: "%1"</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1526"/> - <source>The transfer list is in mixed mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1535"/> - <source>The transfer list is in copy mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1541"/> - <source>The transfer list is in move mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1604"/> - <source>Some errors have been found during the line parsing</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1612"/> - <source>Unable to open the transfer list: %1</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>MkPath</name> - <message> - <location filename="../../MkPath.cpp" line="142"/> - <source>Unable to create the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="155"/> - <source>The source folder don't exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="183"/> - <source>Unable to temporary rename the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="206"/> - <source>Unable to do the final real move the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="233"/> - <source>Unable to move the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="93"/> - <location filename="../../MkPath.cpp" line="276"/> - <source>Unable to remove</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ReadThread</name> - <message> - <location filename="../../ReadThread.cpp" line="59"/> - <source>Internal error, please report it!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="188"/> - <source>Internal error reading the source file:block size out of range</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="196"/> - <location filename="../../ReadThread.cpp" line="420"/> - <source>Unable to read the source file: </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="237"/> - <location filename="../../ReadThread.cpp" line="468"/> - <source>File truncated during the read, possible data change</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>RenamingRules</name> - <message> - <location filename="../../RenamingRules.ui" line="35"/> - <source>First renaming</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="41"/> - <source>%name% - copy%suffix%</source> - <extracomment>%name% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="57"/> - <source>%name% - copy (%number%)%suffix%</source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="67"/> - <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name, <span style=" font-weight:600;">%number%</span> for the extra number, <span style=" font-weight:600;">%suffix%</span> file suffix</p></body></html></source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="51"/> - <source>Second renaming</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="39"/> - <location filename="../../RenamingRules.cpp" line="62"/> - <source>%1 - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="43"/> - <location filename="../../RenamingRules.cpp" line="73"/> - <source>%1 - copy (%2)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="14"/> - <source>Renaming rules</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ScanFileOrFolder</name> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="274"/> - <source>Blacklisted folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="338"/> - <source>%1 - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="345"/> - <source>%1 - copy (%2)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="401"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="408"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="444"/> - <source>This is not a folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="446"/> - <source>The folder does exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="448"/> - <source>The folder is not readable</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="459"/> - <source>Problem with name encoding</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>TransferThread</name> - <message> - <location filename="../../TransferThread.cpp" line="244"/> - <location filename="../../TransferThread.cpp" line="673"/> - <location filename="../../TransferThread.cpp" line="745"/> - <location filename="../../TransferThread.cpp" line="1315"/> - <source>File not found</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="346"/> - <location filename="../../TransferThread.cpp" line="363"/> - <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="421"/> - <location filename="../../TransferThread.cpp" line="444"/> - <source>Internal error: Already opening</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="586"/> - <source>Drive %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="588"/> - <source>Unknown folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="592"/> - <source>root</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="645"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="652"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="711"/> - <location filename="../../TransferThread.cpp" line="826"/> - <source>The source file doesn't exist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="751"/> - <location filename="../../TransferThread.cpp" line="838"/> - <source>Unable to do the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="787"/> - <source>The source doesn't exist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="832"/> - <source>Another file exists at same place</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1134"/> - <source>The checksums do not match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1224"/> - <source>Internal error: The destination is not closed</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1239"/> - <source>Internal error: The size transfered doesn't match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1250"/> - <source>Internal error: The buffer is not empty</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1315"/> - <location filename="../../TransferThread.cpp" line="1333"/> - <location filename="../../TransferThread.cpp" line="1348"/> - <source>Unable to change the date</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>WriteThread</name> - <message> - <location filename="../../WriteThread.cpp" line="83"/> - <source>Path resolution error (Empty path)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="277"/> - <source>Internal error, please report it!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="680"/> - <source>Unable to read the source file: </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="705"/> - <source>File truncated during read, possible data change</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>copyEngineOptions</name> - <message> - <location filename="../../copyEngineOptions.ui" line="44"/> - <source>Transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="53"/> - <source>Move the whole folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="60"/> - <source>Transfer the file rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="70"/> - <source>Keep the file date</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="83"/> - <source>Autostart the transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="90"/> - <location filename="../../copyEngineOptions.ui" line="110"/> - <source>Less performance if checked</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="113"/> - <source>Follow the strict order</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="139"/> - <source>Error and collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="145"/> - <source>When folder error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="155"/> - <source>When file error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="181"/> - <source>When file collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="241"/> - <source>When folder collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="272"/> - <source>Check if destination folder exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="279"/> - <source>Renaming rules</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="299"/> - <source>Delete partially transferred files</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="312"/> - <source>Rename the original destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="343"/> - <source>Control</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="349"/> - <source>Checksum</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="358"/> - <source>Only after error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="365"/> - <source>Ignore if impossible</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="382"/> - <source>Verify checksums</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="414"/> - <source>Performance</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="420"/> - <source>Parallel buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="427"/> - <location filename="../../copyEngineOptions.ui" line="440"/> - <location filename="../../copyEngineOptions.ui" line="453"/> - <location filename="../../copyEngineOptions.ui" line="490"/> - <location filename="../../copyEngineOptions.ui" line="559"/> - <source>KB</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="469"/> - <source>Block size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="476"/> - <source>Sequential buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="483"/> - <source>Enable OS buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="506"/> - <source>OS buffer only if smaller than</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="513"/> - <source>Transfer algorithm</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="552"/> - <source>Parallelize if smaller than</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="582"/> - <source>Inode threads (unsafe > 1)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="589"/> - <location filename="../../copyEngineOptions.ui" line="599"/> - <source>More cpu, but better organisation on the disk</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="602"/> - <source>Order the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="618"/> - <source>Misc</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="624"/> - <source>Check the disk space</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="634"/> - <source>Use this folder when destination is not set</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="646"/> - <source>Browse</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="668"/> - <source>Filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileErrorDialog</name> - <message> - <location filename="../../fileErrorDialog.ui" line="14"/> - <source>Error with file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="20"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="59"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="76"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="93"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="110"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="127"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="173"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="193"/> - <source>Try in with elevated privileges</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="200"/> - <source>Put to bottom</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="207"/> - <source>Retry</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="214"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="221"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileExistsDialog</name> - <message> - <location filename="../../fileExistsDialog.ui" line="14"/> - <source>The file exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="34"/> - <source>Source</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="82"/> - <location filename="../../fileExistsDialog.ui" line="170"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="99"/> - <location filename="../../fileExistsDialog.ui" line="187"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="116"/> - <location filename="../../fileExistsDialog.ui" line="204"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="133"/> - <location filename="../../fileExistsDialog.ui" line="221"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="277"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="288"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="346"/> - <location filename="../../fileExistsDialog.ui" line="349"/> - <source>Overwrite if modification date differs</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="308"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="315"/> - <source>&Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="325"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="332"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="341"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="354"/> - <location filename="../../fileExistsDialog.ui" line="357"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileIsSameDialog</name> - <message> - <location filename="../../fileIsSameDialog.ui" line="40"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="110"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="70"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="14"/> - <source>The source and destination are same</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="90"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="159"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="170"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="190"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="197"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="204"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>folderExistsDialog</name> - <message> - <location filename="../../folderExistsDialog.ui" line="34"/> - <source>Source</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="14"/> - <source>The source and destination is identical</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="82"/> - <location filename="../../folderExistsDialog.ui" line="150"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="99"/> - <location filename="../../folderExistsDialog.ui" line="160"/> - <source>Folder name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="116"/> - <location filename="../../folderExistsDialog.ui" line="184"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="227"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="238"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="245"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="252"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="259"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="266"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -</TS> diff --git a/plugins/CopyEngine/Ultracopier/Languages/zh/translation.ts b/plugins/CopyEngine/Ultracopier/Languages/zh/translation.ts deleted file mode 100644 index 19bfabd..0000000 --- a/plugins/CopyEngine/Ultracopier/Languages/zh/translation.ts +++ /dev/null @@ -1,1291 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE TS> -<TS version="2.1"> -<context> - <name>AvancedQFile</name> - <message> - <location filename="../../AvancedQFile.cpp" line="26"/> - <location filename="../../AvancedQFile.cpp" line="57"/> - <location filename="../../AvancedQFile.cpp" line="88"/> - <source>Not supported on this platform</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="40"/> - <source>Last modified date is wrong</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="71"/> - <source>Last access date is wrong</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="121"/> - <source>Unknown error: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="187"/> - <source>Unknown error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../AvancedQFile.cpp" line="133"/> - <source>Path conversion error</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>CopyEngine</name> - <message> - <location filename="../../CopyEngine.cpp" line="429"/> - <location filename="../../CopyEngine.cpp" line="451"/> - <source>The engine is forced to move, you can't copy with it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="462"/> - <location filename="../../CopyEngine.cpp" line="484"/> - <source>The engine is forced to copy, you can't move with it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="508"/> - <source>Use the actual destination "%1"?</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="732"/> - <source>The mode has been forced previously. This is an internal error, please report it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1062"/> - <location filename="../../CopyEngine.cpp" line="1065"/> - <location filename="../../CopyEngine.cpp" line="1070"/> - <location filename="../../CopyEngine.cpp" line="1074"/> - <source>Ask</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1063"/> - <location filename="../../CopyEngine.cpp" line="1067"/> - <location filename="../../CopyEngine.cpp" line="1071"/> - <location filename="../../CopyEngine.cpp" line="1075"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1066"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1068"/> - <location filename="../../CopyEngine.cpp" line="1080"/> - <source>Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1072"/> - <source>Put at the end</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1076"/> - <source>Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1077"/> - <source>Overwrite if different</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1078"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1079"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1082"/> - <source>Automatic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1083"/> - <source>Sequential</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1084"/> - <source>Parallel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngine.cpp" line="1185"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>CopyEngineFactory</name> - <message> - <location filename="../../CopyEngineFactory.cpp" line="427"/> - <location filename="../../CopyEngineFactory.cpp" line="430"/> - <location filename="../../CopyEngineFactory.cpp" line="435"/> - <location filename="../../CopyEngineFactory.cpp" line="439"/> - <source>Ask</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="428"/> - <location filename="../../CopyEngineFactory.cpp" line="432"/> - <location filename="../../CopyEngineFactory.cpp" line="436"/> - <location filename="../../CopyEngineFactory.cpp" line="440"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="431"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="433"/> - <location filename="../../CopyEngineFactory.cpp" line="445"/> - <source>Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="437"/> - <source>Put at the end</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="441"/> - <source>Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="442"/> - <source>Overwrite if different</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="443"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="444"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="447"/> - <source>Automatic</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="448"/> - <source>Sequential</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="449"/> - <source>Parallel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="500"/> - <source>Options engine is not loaded. Unable to access the filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../CopyEngineFactory.cpp" line="539"/> - <source>Options engine is not loaded, can't access to the filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>DiskSpace</name> - <message> - <location filename="../../DiskSpace.ui" line="14"/> - <source>Disk space</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="24"/> - <source>You need more space on this drive to finish this transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="49"/> - <source>Continue</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.ui" line="56"/> - <source>Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../DiskSpace.cpp" line="23"/> - <source>Drives %1 have %2 available but need %3</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileErrorDialog</name> - <message> - <location filename="../../FileErrorDialog.cpp" line="54"/> - <source>Error on folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileErrorDialog.cpp" line="57"/> - <source>Folder name</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileExistsDialog</name> - <message> - <location filename="../../FileExistsDialog.cpp" line="137"/> - <source>%name% - copy%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="144"/> - <source>%name% - copy (%number%)%suffix%</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileExistsDialog.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FileIsSameDialog</name> - <message> - <location filename="../../FileIsSameDialog.cpp" line="111"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="118"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FileIsSameDialog.cpp" line="184"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FilterRules</name> - <message> - <location filename="../../FilterRules.ui" line="17"/> - <source>Filters dialog</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="33"/> - <source>Search:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="43"/> - <source>Search type:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="51"/> - <source>Raw text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="56"/> - <source>Simplified regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="61"/> - <source>Perl's regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="69"/> - <source>Apply on:</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="77"/> - <source>File</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="82"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="87"/> - <source>File and folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="95"/> - <source>Whole string must match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="125"/> - <source>The test string matches with the regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="102"/> - <source>Checking</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="108"/> - <source>The regex is valid</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FilterRules.ui" line="115"/> - <source>Test string:</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>Filters</name> - <message> - <location filename="../../Filters.ui" line="14"/> - <source>Filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="30"/> - <source>Exclusion filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="93"/> - <source>Inclusion filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.ui" line="105"/> - <source>None = Include all</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="93"/> - <location filename="../../Filters.cpp" line="131"/> - <source>Raw text</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="96"/> - <location filename="../../Filters.cpp" line="134"/> - <source>Simplified regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="99"/> - <location filename="../../Filters.cpp" line="137"/> - <source>Perl's regex</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="107"/> - <location filename="../../Filters.cpp" line="145"/> - <source>Only on file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="110"/> - <location filename="../../Filters.cpp" line="148"/> - <source>Only on folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../Filters.cpp" line="116"/> - <location filename="../../Filters.cpp" line="154"/> - <location filename="../../Filters.cpp" line="216"/> - <location filename="../../Filters.cpp" line="255"/> - <source>Full match</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>FolderExistsDialog</name> - <message> - <location filename="../../FolderExistsDialog.cpp" line="57"/> - <source>Folder already exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="122"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="131"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../FolderExistsDialog.cpp" line="190"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ListThread</name> - <message> - <location filename="../../ListThread.cpp" line="1487"/> - <location filename="../../ListThread.cpp" line="2419"/> - <source>Unable do to move or copy item into wrong forced mode: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1494"/> - <location filename="../../ListThread.cpp" line="2426"/> - <source>Unable to save the transfer list: %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1510"/> - <source>Problem reading file, or file-size is 0</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1517"/> - <source>Wrong header: "%1"</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1526"/> - <source>The transfer list is in mixed mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1535"/> - <source>The transfer list is in copy mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1541"/> - <source>The transfer list is in move mode, but this instance is not in this mode</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1604"/> - <source>Some errors have been found during the line parsing</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ListThread.cpp" line="1612"/> - <source>Unable to open the transfer list: %1</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>MkPath</name> - <message> - <location filename="../../MkPath.cpp" line="142"/> - <source>Unable to create the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="155"/> - <source>The source folder don't exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="183"/> - <source>Unable to temporary rename the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="206"/> - <source>Unable to do the final real move the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="233"/> - <source>Unable to move the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../MkPath.cpp" line="93"/> - <location filename="../../MkPath.cpp" line="276"/> - <source>Unable to remove</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ReadThread</name> - <message> - <location filename="../../ReadThread.cpp" line="59"/> - <source>Internal error, please report it!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="188"/> - <source>Internal error reading the source file:block size out of range</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="196"/> - <location filename="../../ReadThread.cpp" line="420"/> - <source>Unable to read the source file: </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ReadThread.cpp" line="237"/> - <location filename="../../ReadThread.cpp" line="468"/> - <source>File truncated during the read, possible data change</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>RenamingRules</name> - <message> - <location filename="../../RenamingRules.ui" line="14"/> - <source>Renaming rules</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="35"/> - <source>First renaming</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="41"/> - <source>%name% - copy%suffix%</source> - <extracomment>%name% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="57"/> - <source>%name% - copy (%number%)%suffix%</source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="67"/> - <source><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name, <span style=" font-weight:600;">%number%</span> for the extra number, <span style=" font-weight:600;">%suffix%</span> file suffix</p></body></html></source> - <extracomment>%name%, %number% should not be translated</extracomment> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.ui" line="51"/> - <source>Second renaming</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="39"/> - <location filename="../../RenamingRules.cpp" line="62"/> - <source>%1 - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../RenamingRules.cpp" line="43"/> - <location filename="../../RenamingRules.cpp" line="73"/> - <source>%1 - copy (%2)</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>ScanFileOrFolder</name> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="274"/> - <source>Blacklisted folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="338"/> - <source>%1 - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="345"/> - <source>%1 - copy (%2)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="401"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="408"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="444"/> - <source>This is not a folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="446"/> - <source>The folder does exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="448"/> - <source>The folder is not readable</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../ScanFileOrFolder.cpp" line="459"/> - <source>Problem with name encoding</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>TransferThread</name> - <message> - <location filename="../../TransferThread.cpp" line="244"/> - <location filename="../../TransferThread.cpp" line="673"/> - <location filename="../../TransferThread.cpp" line="745"/> - <location filename="../../TransferThread.cpp" line="1315"/> - <source>File not found</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="346"/> - <location filename="../../TransferThread.cpp" line="363"/> - <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="421"/> - <location filename="../../TransferThread.cpp" line="444"/> - <source>Internal error: Already opening</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="586"/> - <source>Drive %1</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="588"/> - <source>Unknown folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="592"/> - <source>root</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="645"/> - <source>%name% - copy</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="652"/> - <source>%name% - copy (%number%)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="711"/> - <location filename="../../TransferThread.cpp" line="826"/> - <source>The source file doesn't exist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="751"/> - <location filename="../../TransferThread.cpp" line="838"/> - <source>Unable to do the folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="787"/> - <source>The source doesn't exist</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="832"/> - <source>Another file exists at same place</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1134"/> - <source>The checksums do not match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1224"/> - <source>Internal error: The destination is not closed</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1239"/> - <source>Internal error: The size transfered doesn't match</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1250"/> - <source>Internal error: The buffer is not empty</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="1315"/> - <location filename="../../TransferThread.cpp" line="1333"/> - <location filename="../../TransferThread.cpp" line="1348"/> - <source>Unable to change the date</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../TransferThread.cpp" line="228"/> - <source>Try rename with using special characters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>WriteThread</name> - <message> - <location filename="../../WriteThread.cpp" line="83"/> - <source>Path resolution error (Empty path)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="277"/> - <source>Internal error, please report it!</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="680"/> - <source>Unable to read the source file: </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../WriteThread.cpp" line="705"/> - <source>File truncated during read, possible data change</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>copyEngineOptions</name> - <message> - <location filename="../../copyEngineOptions.ui" line="44"/> - <source>Transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="53"/> - <source>Move the whole folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="60"/> - <source>Transfer the file rights</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="70"/> - <source>Keep the file date</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="83"/> - <source>Autostart the transfer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="90"/> - <location filename="../../copyEngineOptions.ui" line="110"/> - <source>Less performance if checked</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="113"/> - <source>Follow the strict order</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="139"/> - <source>Error and collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="145"/> - <source>When folder error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="155"/> - <source>When file error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="181"/> - <source>When file collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="241"/> - <source>When folder collision</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="272"/> - <source>Check if destination folder exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="279"/> - <source>Renaming rules</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="299"/> - <source>Delete partially transferred files</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="312"/> - <source>Rename the original destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="343"/> - <source>Control</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="349"/> - <source>Checksum</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="358"/> - <source>Only after error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="365"/> - <source>Ignore if impossible</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="382"/> - <source>Verify checksums</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="414"/> - <source>Performance</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="420"/> - <source>Parallel buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="427"/> - <location filename="../../copyEngineOptions.ui" line="440"/> - <location filename="../../copyEngineOptions.ui" line="453"/> - <location filename="../../copyEngineOptions.ui" line="490"/> - <location filename="../../copyEngineOptions.ui" line="559"/> - <source>KB</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="469"/> - <source>Block size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="476"/> - <source>Sequential buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="483"/> - <source>Enable OS buffer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="506"/> - <source>OS buffer only if smaller than</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="513"/> - <source>Transfer algorithm</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="552"/> - <source>Parallelize if smaller than</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="582"/> - <source>Inode threads (unsafe > 1)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="589"/> - <location filename="../../copyEngineOptions.ui" line="599"/> - <source>More cpu, but better organisation on the disk</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="602"/> - <source>Order the list</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="618"/> - <source>Misc</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="624"/> - <source>Check the disk space</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="634"/> - <source>Use this folder when destination is not set</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="646"/> - <source>Browse</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../copyEngineOptions.ui" line="668"/> - <source>Filters</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileErrorDialog</name> - <message> - <location filename="../../fileErrorDialog.ui" line="14"/> - <source>Error with file</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="20"/> - <source>Error</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="59"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="76"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="93"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="110"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="127"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="173"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="193"/> - <source>Try in with elevated privileges</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="200"/> - <source>Put to bottom</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="207"/> - <source>Retry</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="214"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileErrorDialog.ui" line="221"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileExistsDialog</name> - <message> - <location filename="../../fileExistsDialog.ui" line="14"/> - <source>The file exists</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="34"/> - <source>Source</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="82"/> - <location filename="../../fileExistsDialog.ui" line="170"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="99"/> - <location filename="../../fileExistsDialog.ui" line="187"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="116"/> - <location filename="../../fileExistsDialog.ui" line="204"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="133"/> - <location filename="../../fileExistsDialog.ui" line="221"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="277"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="288"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="346"/> - <location filename="../../fileExistsDialog.ui" line="349"/> - <source>Overwrite if modification date differs</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="308"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="315"/> - <source>&Overwrite</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="325"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="332"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="341"/> - <source>Overwrite if newer</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileExistsDialog.ui" line="354"/> - <location filename="../../fileExistsDialog.ui" line="357"/> - <source>Overwrite if older</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>fileIsSameDialog</name> - <message> - <location filename="../../fileIsSameDialog.ui" line="40"/> - <source>Size</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="110"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="70"/> - <source>File name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="14"/> - <source>The source and destination are same</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="90"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="159"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="170"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="190"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="197"/> - <source>&Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../fileIsSameDialog.ui" line="204"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -<context> - <name>folderExistsDialog</name> - <message> - <location filename="../../folderExistsDialog.ui" line="34"/> - <source>Source</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="50"/> - <source>Destination</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="14"/> - <source>The source and destination is identical</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="82"/> - <location filename="../../folderExistsDialog.ui" line="150"/> - <source>Modified</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="99"/> - <location filename="../../folderExistsDialog.ui" line="160"/> - <source>Folder name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="116"/> - <location filename="../../folderExistsDialog.ui" line="184"/> - <source>Folder</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="227"/> - <source>Suggest new &name</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="238"/> - <source>&Always perform this action</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="245"/> - <source>&Rename</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="252"/> - <source>Merge</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="259"/> - <source>Skip</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../../folderExistsDialog.ui" line="266"/> - <source>&Cancel</source> - <translation type="unfinished"></translation> - </message> -</context> -</TS> diff --git a/plugins/CopyEngine/Ultracopier/ListThread.cpp b/plugins/CopyEngine/Ultracopier/ListThread.cpp deleted file mode 100644 index bb0bce6..0000000 --- a/plugins/CopyEngine/Ultracopier/ListThread.cpp +++ /dev/null @@ -1,2429 +0,0 @@ -#include "ListThread.h" -#include <QStorageInfo> -#include <QMutexLocker> -#include <QtGlobal> -#include "../../../cpp11addition.h" - -ListThread::ListThread(FacilityInterface * facilityInterface) -{ - moveToThread(this); - start(HighPriority); - this->facilityInterface = facilityInterface; - putInPause = false; - sourceDriveMultiple = false; - destinationDriveMultiple = false; - destinationFolderMultiple = false; - stopIt = false; - bytesToTransfer = 0; - bytesTransfered = 0; - idIncrementNumber = 1; - actualRealByteTransfered = 0; - numberOfTransferIntoToDoList = 0; - numberOfInodeOperation = 0; - putAtBottom = 0; - maxSpeed = 0; - inodeThreads = 1; - renameTheOriginalDestination = false; - doRightTransfer = false; - #ifdef ULTRACOPIER_PLUGIN_RSYNC - rsync = false; - #endif - keepDate = false; - checkDiskSpace = true; - blockSize = ULTRACOPIER_PLUGIN_DEFAULT_BLOCK_SIZE*1024; - sequentialBuffer = ULTRACOPIER_PLUGIN_DEFAULT_SEQUENTIAL_NUMBER_OF_BLOCK; - parallelBuffer = ULTRACOPIER_PLUGIN_DEFAULT_PARALLEL_NUMBER_OF_BLOCK; - #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT - blockSizeAfterSpeedLimitation = blockSize; - #endif - osBufferLimit = 512; - alwaysDoThisActionForFileExists = FileExists_NotSet; - doChecksum = false; - checksumIgnoreIfImpossible = true; - checksumOnlyOnError = true; - osBuffer = false; - osBufferLimited = false; - forcedMode = false; - #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT - clockForTheCopySpeed = NULL; - multiForBigSpeed = 0; - #endif - - #ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW - connect(&timerUpdateDebugDialog,&QTimer::timeout,this,&ListThread::timedUpdateDebugDialog); - timerUpdateDebugDialog.start(ULTRACOPIER_PLUGIN_DEBUG_WINDOW_TIMER); - #endif - connect(this, &ListThread::tryCancel, this,&ListThread::cancel, Qt::QueuedConnection); - connect(this, &ListThread::askNewTransferThread, this,&ListThread::createTransferThread, Qt::QueuedConnection); - connect(&mkPathQueue, &MkPath::firstFolderFinish, this,&ListThread::mkPathFirstFolderFinish, Qt::QueuedConnection); - connect(&mkPathQueue, &MkPath::errorOnFolder, this,&ListThread::mkPathErrorOnFolder, Qt::QueuedConnection); - connect(this, &ListThread::send_syncTransferList, this,&ListThread::syncTransferList_internal, Qt::QueuedConnection); - #ifdef ULTRACOPIER_PLUGIN_DEBUG - connect(&mkPathQueue, &MkPath::debugInformation, this,&ListThread::debugInformation, Qt::QueuedConnection); - connect(&driveManagement,&DriveManagement::debugInformation, this,&ListThread::debugInformation, Qt::QueuedConnection); - #endif // ULTRACOPIER_PLUGIN_DEBUG - - emit askNewTransferThread(); - mkpathTransfer.release(); -} - -ListThread::~ListThread() -{ - emit tryCancel(); - waitCancel.acquire(); - quit(); - wait(); -} - -//transfer is finished -void ListThread::transferInodeIsClosed() -{ - numberOfInodeOperation--; - #ifdef ULTRACOPIER_PLUGIN_DEBUG_SCHEDULER - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"numberOfInodeOperation: "+std::to_string(numberOfInodeOperation)); - #endif - TransferThread *temp_transfer_thread=qobject_cast<TransferThread *>(QObject::sender()); - if(temp_transfer_thread==NULL) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"transfer thread not located!"); - return; - } - bool isFound=false; - #ifdef ULTRACOPIER_PLUGIN_DEBUG - int countLocalParse=0; - #endif - if(temp_transfer_thread->getStat()!=TransferStat_Idle) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"transfer thread not idle!"); - return; - } - int int_for_internal_loop=0; - const int &loop_size=actionToDoListTransfer.size(); - while(int_for_internal_loop<loop_size) - { - if(actionToDoListTransfer.at(int_for_internal_loop).id==temp_transfer_thread->transferId) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("[%1] have finish, put at idle; for id: %2").arg(int_for_internal_loop).arg(temp_transfer_thread->transferId).toStdString()); - Ultracopier::ReturnActionOnCopyList newAction; - newAction.type=Ultracopier::RemoveItem; - newAction.userAction.moveAt=0; - newAction.addAction=actionToDoTransferToItemOfCopyList(actionToDoListTransfer.at(int_for_internal_loop)); - newAction.userAction.position=int_for_internal_loop; - actionDone.push_back(newAction); - /// \todo check if item is at the right thread - actionToDoListTransfer.erase(actionToDoListTransfer.cbegin()+int_for_internal_loop); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("actionToDoListTransfer.size(): %1, actionToDoListInode: %2, actionToDoListInode_afterTheTransfer: %3").arg(actionToDoListTransfer.size()).arg(actionToDoListInode.size()).arg(actionToDoListInode_afterTheTransfer.size()).toStdString()); - if(actionToDoListTransfer.empty() && actionToDoListInode.empty() && actionToDoListInode_afterTheTransfer.empty()) - updateTheStatus(); - - //add the current size of file, to general size because it's finish - copiedSize=temp_transfer_thread->copiedSize(); - if(copiedSize>(qint64)temp_transfer_thread->transferSize) - { - oversize=copiedSize-temp_transfer_thread->transferSize; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"add oversize of: "+std::to_string(oversize)); - bytesToTransfer+=oversize; - bytesTransfered+=oversize; - } - bytesTransfered+=temp_transfer_thread->transferSize; - - if(temp_transfer_thread->haveStartTime) - { - timeToTransfer.push_back(std::pair<uint64_t,uint32_t>(temp_transfer_thread->transferSize,temp_transfer_thread->startTransferTime.elapsed())); - temp_transfer_thread->haveStartTime=false; - } - temp_transfer_thread->transferId=0; - temp_transfer_thread->transferSize=0; - #ifdef ULTRACOPIER_PLUGIN_DEBUG - countLocalParse++; - #endif - isFound=true; - if(actionToDoListTransfer.empty()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"actionToDoListTransfer==0"); - actionToDoListInode.insert(actionToDoListInode.cbegin(),actionToDoListInode_afterTheTransfer.cbegin(),actionToDoListInode_afterTheTransfer.cend()); - actionToDoListInode_afterTheTransfer.clear(); - doNewActions_inode_manipulation(); - } - break; - } - int_for_internal_loop++; - } - if(isFound) - deleteTransferThread(); - else - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,QStringLiteral("unable to found item into the todo list, id: %1, index: %2").arg(temp_transfer_thread->transferId).arg(int_for_internal_loop).toStdString()); - temp_transfer_thread->transferId=0; - temp_transfer_thread->transferSize=0; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("countLocalParse: %1, actionToDoList.size(): %2").arg(countLocalParse).arg(actionToDoListTransfer.size()).toStdString()); - #ifdef ULTRACOPIER_PLUGIN_DEBUG - if(countLocalParse!=1) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"countLocalParse != 1"); - #endif - doNewActions_inode_manipulation(); -} - -/** \brief put the current file at bottom in case of error -\note ONLY IN CASE OF ERROR */ -void ListThread::transferPutAtBottom() -{ - TransferThread *transfer=qobject_cast<TransferThread *>(QObject::sender()); - if(transfer==NULL) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"transfer thread not located!"); - return; - } - bool isFound=false; - #ifdef ULTRACOPIER_PLUGIN_DEBUG - int countLocalParse=0; - #endif - unsigned int indexAction=0; - while(indexAction<actionToDoListTransfer.size()) - { - if(actionToDoListTransfer.at(indexAction).id==transfer->transferId) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"Put at the end: "+std::to_string(transfer->transferId)); - //push for interface at the end - Ultracopier::ReturnActionOnCopyList newAction; - newAction.type=Ultracopier::MoveItem; - newAction.addAction.id=transfer->transferId; - newAction.userAction.position=actionToDoListTransfer.size()-1; - actionDone.push_back(newAction); - //do the wait stat - actionToDoListTransfer[indexAction].isRunning=false; - //move at the end - actionToDoListTransfer.push_back(actionToDoListTransfer.at(indexAction)); - actionToDoListTransfer.erase(actionToDoListTransfer.cbegin()+indexAction); - //reset the thread list stat - transfer->transferId=0; - transfer->transferSize=0; - #ifdef ULTRACOPIER_PLUGIN_DEBUG - countLocalParse++; - #endif - isFound=true; - break; - } - indexAction++; - } - if(!isFound) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,QStringLiteral("unable to found item into the todo list, id: %1, index: %2").arg(transfer->transferId).toStdString()); - transfer->transferId=0; - transfer->transferSize=0; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"countLocalParse: "+std::to_string(countLocalParse)); - #ifdef ULTRACOPIER_PLUGIN_DEBUG - if(countLocalParse!=1) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"countLocalParse != 1"); - #endif - transfer->skip(); -} - -//set the copy info and options before runing -void ListThread::setRightTransfer(const bool doRightTransfer) -{ - mkPathQueue.setRightTransfer(doRightTransfer); - this->doRightTransfer=doRightTransfer; - int index=0; - int loop_sub_size_transfer_thread_search=transferThreadList.size(); - while(index<loop_sub_size_transfer_thread_search) - { - transferThreadList.at(index)->setRightTransfer(doRightTransfer); - index++; - } -} - -//set keep date -void ListThread::setKeepDate(const bool keepDate) -{ - mkPathQueue.setKeepDate(keepDate); - this->keepDate=keepDate; - int index=0; - int loop_sub_size_transfer_thread_search=transferThreadList.size(); - while(index<loop_sub_size_transfer_thread_search) - { - transferThreadList.at(index)->setKeepDate(keepDate); - index++; - } -} - -//set block size in KB -void ListThread::setBlockSize(const int blockSize) -{ - this->blockSize=blockSize*1024; - int index=0; - int loop_sub_size_transfer_thread_search=transferThreadList.size(); - while(index<loop_sub_size_transfer_thread_search) - { - transferThreadList.at(index)->setBlockSize(this->blockSize); - index++; - } - #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT - setSpeedLimitation(maxSpeed); - #endif -} - -//set auto start -void ListThread::setAutoStart(const bool autoStart) -{ - this->autoStart=autoStart; -} - -#ifdef ULTRACOPIER_PLUGIN_RSYNC -/// \brief set rsync -void ListThread::setRsync(const bool rsync) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"set rsync: "+std::to_string(rsync)); - this->rsync=rsync; - int index=0; - int loop_sub_size_transfer_thread_search=transferThreadList.size(); - while(index<loop_sub_size_transfer_thread_search) - { - transferThreadList.at(index)->setRsync(rsync); - index++; - } - for(unsigned int i=0;i<scanFileOrFolderThreadsPool.size();i++) - scanFileOrFolderThreadsPool.at(i)->setRsync(rsync); -} -#endif - -//set check destination folder -void ListThread::setCheckDestinationFolderExists(const bool checkDestinationFolderExists) -{ - this->checkDestinationFolderExists=checkDestinationFolderExists; - for(unsigned int i=0;i<scanFileOrFolderThreadsPool.size();i++) - scanFileOrFolderThreadsPool.at(i)->setCheckDestinationFolderExists(checkDestinationFolderExists && alwaysDoThisActionForFolderExists!=FolderExists_Merge); -} - -void ListThread::fileTransfer(const QFileInfo &sourceFileInfo,const QFileInfo &destinationFileInfo,const Ultracopier::CopyMode &mode) -{ - if(stopIt) - return; - addToTransfer(sourceFileInfo,destinationFileInfo,mode); -} - -// -> add thread safe, by Qt::BlockingQueuedConnection -bool ListThread::haveSameSource(const std::vector<std::string> &sources) -{ - if(stopIt) - return false; - if(sourceDriveMultiple) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"sourceDriveMultiple"); - return false; - } - if(sourceDrive.empty()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"sourceDrive.isEmpty()"); - return true; - } - unsigned int index=0; - while(index<sources.size()) - { - if(driveManagement.getDrive(sources.at(index))!=sourceDrive) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"sources.at(index))!=sourceDrive"); - return false; - } - index++; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"seam have same source"); - return true; -} - -// -> add thread safe, by Qt::BlockingQueuedConnection -bool ListThread::haveSameDestination(const std::string &destination) -{ - if(stopIt) - return false; - if(destinationDriveMultiple) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"destinationDriveMultiple"); - return false; - } - if(destinationDrive.empty()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"destinationDrive.isEmpty()"); - return true; - } - if(driveManagement.getDrive(destination)!=destinationDrive) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"destination!=destinationDrive"); - return false; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"seam have same destination"); - return true; -} - -/// \return empty if multiple or no destination -std::string ListThread::getUniqueDestinationFolder() const -{ - if(stopIt) - return std::string(); - if(destinationFolderMultiple) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"destinationDriveMultiple"); - return std::string(); - } - return destinationFolder; -} - -ScanFileOrFolder * ListThread::newScanThread(Ultracopier::CopyMode mode) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start with: "+std::to_string(mode)); - - //create new thread because is auto-detroyed - scanFileOrFolderThreadsPool.push_back(new ScanFileOrFolder(mode)); - connect(scanFileOrFolderThreadsPool.back(),&ScanFileOrFolder::finishedTheListing, this,&ListThread::scanThreadHaveFinishSlot, Qt::QueuedConnection); - connect(scanFileOrFolderThreadsPool.back(),&ScanFileOrFolder::fileTransfer, this,&ListThread::fileTransfer, Qt::QueuedConnection); - #ifdef ULTRACOPIER_PLUGIN_DEBUG - connect(scanFileOrFolderThreadsPool.back(),&ScanFileOrFolder::debugInformation, this,&ListThread::debugInformation, Qt::QueuedConnection); - #endif - connect(scanFileOrFolderThreadsPool.back(),&ScanFileOrFolder::newFolderListing, this,&ListThread::newFolderListing); - connect(scanFileOrFolderThreadsPool.back(),&ScanFileOrFolder::addToMovePath, this,&ListThread::addToMovePath, Qt::QueuedConnection); - connect(scanFileOrFolderThreadsPool.back(),&ScanFileOrFolder::addToRealMove, this,&ListThread::addToRealMove, Qt::QueuedConnection); - connect(scanFileOrFolderThreadsPool.back(),&ScanFileOrFolder::addToMkPath, this,&ListThread::addToMkPath, Qt::QueuedConnection); - #ifdef ULTRACOPIER_PLUGIN_RSYNC - connect(scanFileOrFolderThreadsPool.back(),&ScanFileOrFolder::addToRmForRsync, this,&ListThread::addToRmForRsync, Qt::QueuedConnection); - #endif - - connect(scanFileOrFolderThreadsPool.back(),&ScanFileOrFolder::errorOnFolder, this,&ListThread::errorOnFolder, Qt::QueuedConnection); - connect(scanFileOrFolderThreadsPool.back(),&ScanFileOrFolder::folderAlreadyExists, this,&ListThread::folderAlreadyExists, Qt::QueuedConnection); - - connect(this,&ListThread::send_updateMount, scanFileOrFolderThreadsPool.back(),&ScanFileOrFolder::set_updateMount, Qt::QueuedConnection); - - scanFileOrFolderThreadsPool.back()->setFilters(include,exclude); - scanFileOrFolderThreadsPool.back()->setCheckDestinationFolderExists(checkDestinationFolderExists && alwaysDoThisActionForFolderExists!=FolderExists_Merge); - scanFileOrFolderThreadsPool.back()->setMoveTheWholeFolder(moveTheWholeFolder); - #ifdef ULTRACOPIER_PLUGIN_RSYNC - scanFileOrFolderThreadsPool.back()->setRsync(rsync); - #endif - if(scanFileOrFolderThreadsPool.size()==1) - updateTheStatus(); - scanFileOrFolderThreadsPool.back()->setRenamingRules(firstRenamingRule,otherRenamingRule); - return scanFileOrFolderThreadsPool.back(); -} - -void ListThread::scanThreadHaveFinishSlot() -{ - scanThreadHaveFinish(); -} - -void ListThread::scanThreadHaveFinish(bool skipFirstRemove) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"listing thread have finish, skipFirstRemove: "+std::to_string(skipFirstRemove)); - if(!skipFirstRemove) - { - ScanFileOrFolder * senderThread = qobject_cast<ScanFileOrFolder *>(QObject::sender()); - if(senderThread==NULL) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"sender pointer null (plugin copy engine)"); - else - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start the next thread, scanFileOrFolderThreadsPool.size(): "+std::to_string(scanFileOrFolderThreadsPool.size())); - delete senderThread; - vectorremoveOne(scanFileOrFolderThreadsPool,senderThread); - if(scanFileOrFolderThreadsPool.empty()) - updateTheStatus(); - } - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start the next thread, scanFileOrFolderThreadsPool.size(): "+std::to_string(scanFileOrFolderThreadsPool.size())); - if(scanFileOrFolderThreadsPool.size()>0) - { - //then start the next listing threads - if(scanFileOrFolderThreadsPool.front()->isFinished()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"Start listing thread"); - scanFileOrFolderThreadsPool.front()->start(); - } - else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"The listing thread is already running"); - } - else - autoStartAndCheckSpace(); -} - -void ListThread::autoStartAndCheckSpace() -{ - if(needMoreSpace()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"Need more space"); - return; - } - autoStartIfNeeded(); -} - -void ListThread::autoStartIfNeeded() -{ - if(autoStart) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"Auto start the copy"); - startGeneralTransfer(); - } - else - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"Put the copy engine in pause"); - putInPause=true; - emit isInPause(true); - } -} - -void ListThread::startGeneralTransfer() -{ - doNewActions_inode_manipulation(); -} - -// -> add thread safe, by Qt::BlockingQueuedConnection -bool ListThread::newCopy(const std::vector<std::string> &sources,const std::string &destination) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start: "+stringimplode(sources,";")+", destination: "+destination); - ScanFileOrFolder * scanFileOrFolderThread = newScanThread(Ultracopier::Copy); - if(scanFileOrFolderThread==NULL) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"unable to get new thread"); - return false; - } - std::regex base_regex("^[a-z][a-z][a-z]*:/.*"); - std::smatch base_match; - std::vector<std::string> sourcesClean; - unsigned int index=0; - while(index<sources.size()) - { - std::string source=sources.at(index); - //can be: file://192.168.0.99/share/file.txt - //can be: file:///C:/file.txt - //can be: file:///home/user/fileatrootunderunix - #ifndef Q_OS_WIN - if(stringStartWith(source,"file:///")) - source.replace(0,7,""); - #else - if(stringStartWith(source,"file:///")) - source.replace(0,8,""); - else if(stringStartWith(source,"file://")) - source.replace(0,5,""); - else if(stringStartWith(source,"file:/")) - source.replace(0,6,""); - #endif - else if (std::regex_match(source, base_match, base_regex)) - return false; - if(index<99) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,sources.at(index)+" -> "+source); - index++; - sourcesClean.push_back(source); - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"sourcesClean: "+stringimplode(sourcesClean,";")); - scanFileOrFolderThread->addToList(sourcesClean,destination); - scanThreadHaveFinish(true); - detectDrivesOfCurrentTransfer(sourcesClean,destination); - return true; -} - -// -> add thread safe, by Qt::BlockingQueuedConnection -bool ListThread::newMove(const std::vector<std::string> &sources,const std::string &destination) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); - ScanFileOrFolder * scanFileOrFolderThread = newScanThread(Ultracopier::Move); - if(scanFileOrFolderThread==NULL) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"unable to get new thread"); - return false; - } - scanFileOrFolderThread->addToList(sources,destination); - scanThreadHaveFinish(true); - detectDrivesOfCurrentTransfer(sources,destination); - return true; -} - -void ListThread::detectDrivesOfCurrentTransfer(const std::vector<std::string> &sources,const std::string &destination) -{ - /* code to detect volume/mount point to group by windows */ - if(!sourceDriveMultiple) - { - unsigned int index=0; - while(index<sources.size()) - { - const std::string &tempDrive=driveManagement.getDrive(sources.at(index)); - //if have not already source, set the source - if(sourceDrive.empty()) - sourceDrive=tempDrive; - //if have previous source and the news source is not the same - if(sourceDrive!=tempDrive) - { - sourceDriveMultiple=true; - break; - } - index++; - } - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("source informations, sourceDrive: %1, sourceDriveMultiple: %2").arg(QString::fromStdString(sourceDrive)).arg(sourceDriveMultiple).toStdString()); - if(!destinationDriveMultiple) - { - const std::string &tempDrive=driveManagement.getDrive(destination); - //if have not already destination, set the destination - if(destinationDrive.empty()) - destinationDrive=tempDrive; - //if have previous destination and the news destination is not the same - if(destinationDrive!=tempDrive) - destinationDriveMultiple=true; - } - if(!destinationFolderMultiple) - { - //if have not already destination, set the destination - if(destinationFolder.empty()) - destinationFolder=destination; - //if have previous destination and the news destination is not the same - if(destinationFolder!=destination) - destinationFolderMultiple=true; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("destination informations, destinationDrive: %1, destinationDriveMultiple: %2").arg(QString::fromStdString(destinationDrive)).arg(destinationDriveMultiple).toStdString()); -} - -void ListThread::setCollisionAction(const FileExistsAction &alwaysDoThisActionForFileExists) -{ - this->alwaysDoThisActionForFileExists=alwaysDoThisActionForFileExists; - int index=0; - int loop_sub_size_transfer_thread_search=transferThreadList.size(); - while(index<loop_sub_size_transfer_thread_search) - { - transferThreadList.at(index)->setAlwaysFileExistsAction(alwaysDoThisActionForFileExists); - index++; - } -} - -/** \brief to sync the transfer list - * Used when the interface is changed, useful to minimize the memory size */ -void ListThread::syncTransferList() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); - emit send_syncTransferList(); -} - -//set the folder local collision -void ListThread::setFolderCollision(const FolderExistsAction &alwaysDoThisActionForFolderExists) -{ - this->alwaysDoThisActionForFolderExists=alwaysDoThisActionForFolderExists; -} - -bool ListThread::getReturnBoolToCopyEngine() const -{ - return returnBoolToCopyEngine; -} - -std::pair<quint64, quint64> ListThread::getReturnPairQuint64ToCopyEngine() const -{ - return returnPairQuint64ToCopyEngine; -} - -Ultracopier::ItemOfCopyList ListThread::getReturnItemOfCopyListToCopyEngine() const -{ - return returnItemOfCopyListToCopyEngine; -} - -void ListThread::set_doChecksum(bool doChecksum) -{ - this->doChecksum=doChecksum; - int index=0; - int loop_sub_size_transfer_thread_search=transferThreadList.size(); - while(index<loop_sub_size_transfer_thread_search) - { - transferThreadList.at(index)->set_doChecksum(doChecksum); - index++; - } -} - -void ListThread::set_checksumIgnoreIfImpossible(bool checksumIgnoreIfImpossible) -{ - this->checksumIgnoreIfImpossible=checksumIgnoreIfImpossible; - int index=0; - int loop_sub_size_transfer_thread_search=transferThreadList.size(); - while(index<loop_sub_size_transfer_thread_search) - { - transferThreadList.at(index)->set_checksumIgnoreIfImpossible(checksumIgnoreIfImpossible); - index++; - } -} - -void ListThread::set_checksumOnlyOnError(bool checksumOnlyOnError) -{ - this->checksumOnlyOnError=checksumOnlyOnError; - int index=0; - int loop_sub_size_transfer_thread_search=transferThreadList.size(); - while(index<loop_sub_size_transfer_thread_search) - { - transferThreadList.at(index)->set_checksumOnlyOnError(checksumOnlyOnError); - index++; - } -} - -void ListThread::set_osBuffer(bool osBuffer) -{ - this->osBuffer=osBuffer; - int index=0; - int loop_sub_size_transfer_thread_search=transferThreadList.size(); - while(index<loop_sub_size_transfer_thread_search) - { - transferThreadList.at(index)->set_osBuffer(osBuffer); - index++; - } -} - -void ListThread::set_osBufferLimited(bool osBufferLimited) -{ - this->osBufferLimited=osBufferLimited; - int index=0; - int loop_sub_size_transfer_thread_search=transferThreadList.size(); - while(index<loop_sub_size_transfer_thread_search) - { - transferThreadList.at(index)->set_osBufferLimited(osBufferLimited); - index++; - } -} - -void ListThread::realByteTransfered() -{ - quint64 totalRealByteTransfered=0; - int index=0; - int loop_sub_size_transfer_thread_search=transferThreadList.size(); - while(index<loop_sub_size_transfer_thread_search) - { - totalRealByteTransfered+=transferThreadList.at(index)->realByteTransfered(); - index++; - } - emit send_realBytesTransfered(totalRealByteTransfered); -} - -void ListThread::pause() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); - if(putInPause) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Seam already in pause!"); - return; - } - putInPause=true; - int index=0; - int loop_sub_size_transfer_thread_search=transferThreadList.size(); - while(index<loop_sub_size_transfer_thread_search) - { - transferThreadList.at(index)->pause(); - index++; - } - emit isInPause(true); -} - -void ListThread::resume() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); - if(!putInPause) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Seam already resumed!"); - return; - } - putInPause=false; - startGeneralTransfer(); - doNewActions_start_transfer(); - int index=0; - int loop_sub_size_transfer_thread_search=transferThreadList.size(); - while(index<loop_sub_size_transfer_thread_search) - { - transferThreadList.at(index)->resume(); - index++; - } - emit isInPause(false); -} - -void ListThread::skip(const uint64_t &id) -{ - skipInternal(id); -} - -bool ListThread::skipInternal(const uint64_t &id) -{ - int index=0; - int loop_sub_size_transfer_thread_search=transferThreadList.size(); - while(index<loop_sub_size_transfer_thread_search) - { - if(transferThreadList.at(index)->transferId==id) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"skip one transfer: "+std::to_string(id)); - transferThreadList.at(index)->skip(); - return true; - } - index++; - } - int int_for_internal_loop=0; - const int &loop_size=actionToDoListTransfer.size(); - while(int_for_internal_loop<loop_size) - { - if(actionToDoListTransfer.at(int_for_internal_loop).id==id) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("[%1] remove at not running, for id: %2").arg(int_for_internal_loop).arg(id).toStdString()); - Ultracopier::ReturnActionOnCopyList newAction; - newAction.type=Ultracopier::RemoveItem; - newAction.userAction.moveAt=1; - newAction.addAction=actionToDoTransferToItemOfCopyList(actionToDoListTransfer.at(int_for_internal_loop)); - newAction.userAction.position=int_for_internal_loop; - actionDone.push_back(newAction); - actionToDoListTransfer.erase(actionToDoListTransfer.cbegin()+int_for_internal_loop); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("actionToDoListTransfer.size(): %1, actionToDoListInode: %2, actionToDoListInode_afterTheTransfer: %3").arg(actionToDoListTransfer.size()).arg(actionToDoListInode.size()).arg(actionToDoListInode_afterTheTransfer.size()).toStdString()); - if(actionToDoListTransfer.empty() && actionToDoListInode.empty() && actionToDoListInode_afterTheTransfer.empty()) - updateTheStatus(); - return true; - } - int_for_internal_loop++; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"skip transfer not found: "+std::to_string(id)); - return false; -} - -//executed in this thread -void ListThread::cancel() -{ - if(stopIt) - { - waitCancel.release(); - return; - } - stopIt=true; - int index=0; - int loop_size=transferThreadList.size(); - while(index<loop_size) - { - transferThreadList.at(index)->stop(); - index++; - } - index=0; - loop_size=scanFileOrFolderThreadsPool.size(); - while(index<loop_size) - { - scanFileOrFolderThreadsPool.at(index)->stop(); - delete scanFileOrFolderThreadsPool.at(index);//->deleteLayer(); - scanFileOrFolderThreadsPool[index]=NULL; - index++; - } - scanFileOrFolderThreadsPool.clear(); - #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT - if(clockForTheCopySpeed!=NULL) - { - clockForTheCopySpeed->stop(); - delete clockForTheCopySpeed; - clockForTheCopySpeed=NULL; - } - #endif - checkIfReadyToCancel(); -} - -void ListThread::checkIfReadyToCancel() -{ - if(!stopIt) - return; - int index=0; - int loop_size=transferThreadList.size(); - while(index<loop_size) - { - if(transferThreadList.at(index)!=NULL) - { - if(transferThreadList.at(index)->transferId!=0) - return; - delete transferThreadList.at(index);//->deleteLayer(); - transferThreadList[index]=NULL; - transferThreadList.erase(transferThreadList.cbegin()+index); - loop_size=transferThreadList.size(); - index--; - } - index++; - } - actionToDoListTransfer.clear(); - actionToDoListInode.clear(); - actionToDoListInode_afterTheTransfer.clear(); - actionDone.clear(); - progressionList.clear(); - returnListItemOfCopyListToCopyEngine.clear(); - quit(); - waitCancel.release(); - emit canBeDeleted(); -} - -//speedLimitation in KB/s -bool ListThread::setSpeedLimitation(const int64_t &speedLimitation) -{ - #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"maxSpeed in KB/s: "+std::to_string(speedLimitation)); - - if(speedLimitation>1024*1024) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"speedLimitation out of range"); - return false; - } - maxSpeed=speedLimitation; - - multiForBigSpeed=0; - if(maxSpeed>0) - { - blockSizeAfterSpeedLimitation=blockSize; - - //try resolv the interval - int newInterval;//in ms - do - { - multiForBigSpeed++; - //at max speed, is out of range for int, it's why quint64 is used - newInterval=(((quint64)blockSize*(quint64)multiForBigSpeed*1000/* *1000 because interval is into ms, not s*/)/((quint64)maxSpeed*(quint64)1024)); - if(newInterval<0) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"calculated newInterval wrong"); - return false; - } - } - while(newInterval<ULTRACOPIER_PLUGIN_MINTIMERINTERVAL); - - if(newInterval<=0) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"calculated newInterval wrong"); - return false; - } - //wait time too big, then shrink the block size and set interval to max size - if(newInterval>ULTRACOPIER_PLUGIN_MAXTIMERINTERVAL) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"wait time too big, then shrink the block size and set interval to max size"); - newInterval=ULTRACOPIER_PLUGIN_MAXTIMERINTERVAL; - multiForBigSpeed=1; - blockSizeAfterSpeedLimitation=(this->maxSpeed*1024*newInterval)/1000; - - if(blockSizeAfterSpeedLimitation<10) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"calculated block size wrong"); - return false; - } - - //set the new block size into the thread - const int &loop_size=transferThreadList.size(); - int int_for_loop=0; - while(int_for_loop<loop_size) - { - if(!transferThreadList.at(int_for_loop)->setBlockSize(blockSizeAfterSpeedLimitation)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"unable to set the block size"); - int_for_loop++; - } - } - - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("fixed speed with new block size and new interval in BlockSize: %1, multiForBigSpeed: %2, newInterval: %3, maxSpeed: %4") - .arg(blockSizeAfterSpeedLimitation) - .arg(multiForBigSpeed) - .arg(newInterval) - .arg(maxSpeed) - .toStdString() - ); - - clockForTheCopySpeed->setInterval(newInterval); - if(clockForTheCopySpeed!=NULL) - clockForTheCopySpeed->start(); - else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"clockForTheCopySpeed == NULL at this point"); - } - else - { - if(clockForTheCopySpeed!=NULL) - clockForTheCopySpeed->stop(); - else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"clockForTheCopySpeed == NULL at this point"); - int int_for_loop=0; - const int &loop_size=transferThreadList.size(); - while(int_for_loop<loop_size) - { - transferThreadList.at(int_for_loop)->setBlockSize(blockSize); - int_for_loop++; - } - } - int int_for_loop=0; - const int &loop_size=transferThreadList.size(); - while(int_for_loop<loop_size) - { - transferThreadList.at(int_for_loop)->setMultiForBigSpeed(multiForBigSpeed); - int_for_loop++; - } - - return true; - #else - Q_UNUSED(speedLimitation); - return false; - #endif -} - -void ListThread::updateTheStatus() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); - sendActionDone(); - bool updateTheStatus_listing=scanFileOrFolderThreadsPool.size()>0; - bool updateTheStatus_copying=actionToDoListTransfer.size()>0 || actionToDoListInode.size()>0 || actionToDoListInode_afterTheTransfer.size()>0; - Ultracopier::EngineActionInProgress updateTheStatus_action_in_progress; - if(updateTheStatus_copying && updateTheStatus_listing) - updateTheStatus_action_in_progress=Ultracopier::CopyingAndListing; - else if(updateTheStatus_listing) - updateTheStatus_action_in_progress=Ultracopier::Listing; - else if(updateTheStatus_copying) - updateTheStatus_action_in_progress=Ultracopier::Copying; - else - updateTheStatus_action_in_progress=Ultracopier::Idle; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"emit actionInProgess("+std::to_string(updateTheStatus_action_in_progress)+")"); - emit actionInProgess(updateTheStatus_action_in_progress); -} - -//set data local to the thread -void ListThread::setAlwaysFileExistsAction(const FileExistsAction &alwaysDoThisActionForFileExists) -{ - this->alwaysDoThisActionForFileExists=alwaysDoThisActionForFileExists; - int int_for_loop=0; - const int &loop_size=transferThreadList.size(); - while(int_for_loop<loop_size) - { - transferThreadList.at(int_for_loop)->setAlwaysFileExistsAction(alwaysDoThisActionForFileExists); - int_for_loop++; - } -} - -//mk path to do -uint64_t ListThread::addToMkPath(const QFileInfo& source,const QFileInfo& destination, const int& inode) -{ - if(stopIt) - return 0; - if(inode!=0 && (!keepDate && !doRightTransfer)) - return 0; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("source: %1, destination: %2").arg(source.absoluteFilePath()).arg(destination.absoluteFilePath()).toStdString()); - ActionToDoInode temp; - temp.type = ActionType_MkPath; - temp.id = generateIdNumber(); - temp.source = source; - temp.destination= destination; - temp.isRunning = false; - actionToDoListInode.push_back(temp); - return temp.id; -} - -//add rm path to do -void ListThread::addToMovePath(const QFileInfo& source, const QFileInfo &destination, const int& inodeToRemove) -{ - if(stopIt) - return; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("source: %1, destination: %2, inodeToRemove: %3").arg(source.absoluteFilePath()).arg(destination.absoluteFilePath()).arg(inodeToRemove).toStdString()); - ActionToDoInode temp; - temp.type = ActionType_MovePath; - temp.id = generateIdNumber(); - temp.size = inodeToRemove; - temp.source = source; - temp.destination= destination; - temp.isRunning = false; - actionToDoListInode.push_back(temp); -} - -void ListThread::addToRealMove(const QFileInfo& source,const QFileInfo& destination) -{ - if(stopIt) - return; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("source: %1, destination: %2").arg(source.absoluteFilePath()).arg(destination.absoluteFilePath()).toStdString()); - ActionToDoInode temp; - temp.type = ActionType_RealMove; - temp.id = generateIdNumber(); - temp.size = 0; - temp.source = source; - temp.destination= destination; - temp.isRunning = false; - actionToDoListInode.push_back(temp); -} - -#ifdef ULTRACOPIER_PLUGIN_RSYNC -//rsync rm -void ListThread::addToRmForRsync(const QFileInfo& destination) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"inode: "+destination.absoluteFilePath().toStdString()); - ActionToDoInode temp; - temp.type = ActionType_RmSync; - temp.id = generateIdNumber(); - temp.destination= destination; - temp.isRunning = false; - actionToDoListInode.push_back(temp); -} -#endif - -//send action done -void ListThread::sendActionDone() -{ - if(!actionDone.empty()) - { - emit newActionOnList(actionDone); - actionDone.clear(); - } - if(!timeToTransfer.empty()) - { - emit doneTime(timeToTransfer); - timeToTransfer.clear(); - } -} - -//send progression -void ListThread::sendProgression() -{ - if(actionToDoListTransfer.empty()) - return; - oversize=0; - currentProgression=0; - int int_for_loop=0; - const int &loop_size=transferThreadList.size(); - while(int_for_loop<loop_size) - { - TransferThread * temp_transfer_thread=transferThreadList.at(int_for_loop); - switch(temp_transfer_thread->getStat()) - { - case TransferStat_Transfer: - case TransferStat_PostTransfer: - case TransferStat_Checksum: - case TransferStat_PostOperation: - { - copiedSize=temp_transfer_thread->copiedSize(); - - //for the general progression - currentProgression+=copiedSize; - - //the oversize (when the file is bigger after/during the copy then what was during the listing) - if(copiedSize>(qint64)temp_transfer_thread->transferSize) - localOverSize=copiedSize-temp_transfer_thread->transferSize; - else - localOverSize=0; - - //the current size copied - totalSize=temp_transfer_thread->transferSize+localOverSize; - std::pair<uint64_t,uint64_t> progression=temp_transfer_thread->progression(); - tempItem.currentRead=progression.first; - tempItem.currentWrite=progression.second; - tempItem.id=temp_transfer_thread->transferId; - tempItem.total=totalSize; - progressionList.push_back(tempItem); - - //add the oversize to the general progression - oversize+=localOverSize; - } - break; - default: - break; - } - int_for_loop++; - } - emit pushFileProgression(progressionList); - progressionList.clear(); - emit pushGeneralProgression(bytesTransfered+currentProgression,bytesToTransfer+oversize); - realByteTransfered(); -} - -//send the progression, after full reset of the interface (then all is empty) -void ListThread::syncTransferList_internal() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); - emit syncReady(); - actionDone.clear(); - //do list operation - TransferThread *transferThread; - const int &loop_size=actionToDoListTransfer.size(); - int loop_sub_size=transferThreadList.size(); - //this loop to have at max inodeThreads*inodeThreads, not inodeThreads*transferThreadList.size() - int int_for_internal_loop; - for(int int_for_loop=0; int_for_loop<loop_size; ++int_for_loop) { - const ActionToDoTransfer &item=actionToDoListTransfer.at(int_for_loop); - Ultracopier::ReturnActionOnCopyList newAction; - newAction.type = Ultracopier::PreOperation; - newAction.addAction.id = item.id; - newAction.addAction.sourceFullPath = item.source.absoluteFilePath().toStdString(); - newAction.addAction.sourceFileName = item.source.fileName().toStdString(); - newAction.addAction.destinationFullPath = item.destination.absoluteFilePath().toStdString(); - newAction.addAction.destinationFileName = item.destination.fileName().toStdString(); - newAction.addAction.size = item.size; - newAction.addAction.mode = item.mode; - actionDone.push_back(newAction); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("id: %1, size: %2, name: %3, size2: %4").arg(item.id).arg(item.size).arg(item.source.absoluteFilePath()).arg(newAction.addAction.size).toStdString()); - if(item.isRunning) - { - for(int_for_internal_loop=0; int_for_internal_loop<loop_sub_size; ++int_for_internal_loop) { - transferThread=transferThreadList.at(int_for_internal_loop); - Ultracopier::ReturnActionOnCopyList newAction; - newAction.type = Ultracopier::PreOperation; - newAction.addAction.id = item.id; - newAction.addAction.sourceFullPath = item.source.absoluteFilePath().toStdString(); - newAction.addAction.sourceFileName = item.source.fileName().toStdString(); - newAction.addAction.destinationFullPath = item.destination.absoluteFilePath().toStdString(); - newAction.addAction.destinationFileName = item.destination.fileName().toStdString(); - newAction.addAction.size = item.size; - newAction.addAction.mode = item.mode; - actionDone.push_back(newAction); - if(transferThread->getStat()!=TransferStat_PreOperation) - { - Ultracopier::ReturnActionOnCopyList newAction; - switch(transferThread->getStat()) - { - case TransferStat_Transfer: - newAction.type=Ultracopier::Transfer; - break; - /*case TransferStat_PostTransfer: - newAction.type=Ultracopier::PostOperation; - break;*/ - case TransferStat_PostOperation: - newAction.type=Ultracopier::PostOperation; - break; - default: - break; - } - newAction.addAction.id = item.id; - actionDone.push_back(newAction); - } - } - } - } -} - -//add file transfer to do -uint64_t ListThread::addToTransfer(const QFileInfo& source,const QFileInfo& destination,const Ultracopier::CopyMode& mode) -{ - if(stopIt) - return 0; - //add to transfer list - numberOfTransferIntoToDoList++; - quint64 size=0; - if(!source.isSymLink()) - size=source.size(); - const std::string &drive=driveManagement.getDrive(destination.absoluteFilePath().toStdString()); - if(!drive.empty())//can be a network drive - if(mode!=Ultracopier::Move || drive!=driveManagement.getDrive(source.absoluteFilePath().toStdString())) - { - if(requiredSpace.find(drive)!=requiredSpace.cend()) - { - requiredSpace[drive]+=size; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("space needed add: %1, space needed: %2, on: %3").arg(size).arg(requiredSpace.at(drive)).arg(QString::fromStdString(drive)).toStdString()); - } - else - { - requiredSpace[drive]=size; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("set space %1 needed, on: %2").arg(size).arg(QString::fromStdString(drive)).toStdString()); - } - } - bytesToTransfer+= size; - ActionToDoTransfer temp; - temp.id = generateIdNumber(); - temp.size = size; - temp.source = source; - temp.destination= destination; - temp.mode = mode; - temp.isRunning = false; - actionToDoListTransfer.push_back(temp); - //push the new transfer to interface - Ultracopier::ReturnActionOnCopyList newAction; - newAction.type = Ultracopier::AddingItem; - newAction.addAction=actionToDoTransferToItemOfCopyList(temp); - actionDone.push_back(newAction); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("source: %1, destination: %2, add entry: %3, size: %4, size2: %5, isSymLink: %6").arg(source.absoluteFilePath()).arg(destination.absoluteFilePath()).arg(temp.id).arg(temp.size).arg(size).arg(source.isSymLink()).toStdString()); - return temp.id; -} - -Ultracopier::ItemOfCopyList ListThread::actionToDoTransferToItemOfCopyList(const ListThread::ActionToDoTransfer &actionToDoTransfer) -{ - Ultracopier::ItemOfCopyList itemOfCopyList; - itemOfCopyList.id = actionToDoTransfer.id; - itemOfCopyList.sourceFullPath = actionToDoTransfer.source.absoluteFilePath().toStdString(); - itemOfCopyList.sourceFileName = actionToDoTransfer.source.fileName().toStdString(); - itemOfCopyList.destinationFullPath = actionToDoTransfer.destination.absoluteFilePath().toStdString(); - itemOfCopyList.destinationFileName = actionToDoTransfer.destination.fileName().toStdString(); - itemOfCopyList.size = actionToDoTransfer.size; - itemOfCopyList.mode = actionToDoTransfer.mode; - return itemOfCopyList; -} - -//generate id number -uint64_t ListThread::generateIdNumber() -{ - idIncrementNumber++; - if(idIncrementNumber>(((quint64)1024*1024)*1024*1024*2)) - idIncrementNumber=0; - return idIncrementNumber; -} - -//warning the first entry is accessible will copy -void ListThread::removeItems(const std::vector<uint64_t> &ids) -{ - for(unsigned int i=0;i<ids.size();i++) - skipInternal(ids.at(i)); -} - -//put on top -void ListThread::moveItemsOnTop(std::vector<uint64_t> ids) -{ - if(actionToDoListTransfer.size()<=1) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"list size is empty"); - return; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); - //do list operation - int indexToMove=0; - for (unsigned int i=0; i<actionToDoListTransfer.size(); ++i) { - if(vectorcontainsAtLeastOne(ids,actionToDoListTransfer.at(i).id)) - { - vectorremoveOne(ids,actionToDoListTransfer.at(i).id); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"move item "+std::to_string(i)+" to "+std::to_string(indexToMove)); - Ultracopier::ReturnActionOnCopyList newAction; - newAction.type=Ultracopier::MoveItem; - newAction.addAction.id=actionToDoListTransfer.at(i).id; - newAction.userAction.moveAt=indexToMove; - newAction.userAction.position=i; - actionDone.push_back(newAction); - ActionToDoTransfer temp=actionToDoListTransfer.at(i); - actionToDoListTransfer.erase(actionToDoListTransfer.cbegin()+i); - actionToDoListTransfer.insert(actionToDoListTransfer.cbegin()+indexToMove,temp); - indexToMove++; - if(ids.empty()) - return; - } - } - sendActionDone(); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"stop"); -} - -//move up -void ListThread::moveItemsUp(std::vector<uint64_t> ids) -{ - if(actionToDoListTransfer.size()<=1) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"list size is empty"); - return; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); - //do list operation - int lastGoodPositionReal=0; - bool haveGoodPosition=false; - for (unsigned int i=0; i<actionToDoListTransfer.size(); ++i) { - if(vectorcontainsAtLeastOne(ids,actionToDoListTransfer.at(i).id)) - { - if(haveGoodPosition) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"move item "+std::to_string(i)+" to "+std::to_string(i-1)); - Ultracopier::ReturnActionOnCopyList newAction; - newAction.type=Ultracopier::MoveItem; - newAction.addAction.id=actionToDoListTransfer.at(i).id; - newAction.userAction.moveAt=lastGoodPositionReal; - newAction.userAction.position=i; - actionDone.push_back(newAction); - ActionToDoTransfer temp1=actionToDoListTransfer.at(i); - ActionToDoTransfer temp2=actionToDoListTransfer.at(lastGoodPositionReal); - actionToDoListTransfer[i]=temp2; - actionToDoListTransfer[lastGoodPositionReal]=temp1; - } - else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"Try move up false, item "+std::to_string(i)); - vectorremoveOne(ids,actionToDoListTransfer.at(i).id); - if(ids.empty()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"stop with return"); - return; - } - } - else - { - lastGoodPositionReal=i; - haveGoodPosition=true; - } - } - sendActionDone(); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"stop"); -} - -//move down -void ListThread::moveItemsDown(std::vector<uint64_t> ids) -{ - if(actionToDoListTransfer.size()<=1) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"list size is empty"); - return; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); - //do list operation - int lastGoodPositionReal=0; - bool haveGoodPosition=false; - for (int i=actionToDoListTransfer.size()-1; i>=0; --i) { - if(vectorcontainsAtLeastOne(ids,actionToDoListTransfer.at(i).id)) - { - if(haveGoodPosition) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"move item "+std::to_string(i)+" to "+std::to_string(i+1)); - Ultracopier::ReturnActionOnCopyList newAction; - newAction.type=Ultracopier::MoveItem; - newAction.addAction.id=actionToDoListTransfer.at(i).id; - newAction.userAction.moveAt=lastGoodPositionReal; - newAction.userAction.position=i; - actionDone.push_back(newAction); - ActionToDoTransfer temp1=actionToDoListTransfer.at(i); - ActionToDoTransfer temp2=actionToDoListTransfer.at(lastGoodPositionReal); - actionToDoListTransfer[i]=temp2; - actionToDoListTransfer[lastGoodPositionReal]=temp1; - } - else - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"Try move up false, item "+std::to_string(i)); - } - vectorremoveOne(ids,actionToDoListTransfer.at(i).id); - if(ids.empty()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"stop with return"); - return; - } - } - else - { - lastGoodPositionReal=i; - haveGoodPosition=true; - } - } - sendActionDone(); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"stop"); -} - -//put on bottom -void ListThread::moveItemsOnBottom(std::vector<uint64_t> ids) -{ - if(actionToDoListTransfer.size()<=1) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"list size is empty"); - return; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); - //do list operation - int lastGoodPositionReal=actionToDoListTransfer.size()-1; - for (int i=lastGoodPositionReal; i>=0; --i) { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"Check action on item "+std::to_string(i)); - if(vectorcontainsAtLeastOne(ids,actionToDoListTransfer.at(i).id)) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"move item "+std::to_string(i)+" to "+std::to_string(lastGoodPositionReal)); - vectorremoveOne(ids,actionToDoListTransfer.at(i).id); - Ultracopier::ReturnActionOnCopyList newAction; - newAction.type=Ultracopier::MoveItem; - newAction.addAction.id=actionToDoListTransfer.at(i).id; - newAction.userAction.moveAt=lastGoodPositionReal; - newAction.userAction.position=i; - actionDone.push_back(newAction); - ActionToDoTransfer temp=actionToDoListTransfer.at(i); - actionToDoListTransfer.erase(actionToDoListTransfer.cbegin()+i); - actionToDoListTransfer.insert(actionToDoListTransfer.cbegin()+lastGoodPositionReal,temp); - lastGoodPositionReal--; - if(ids.empty()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"stop with return"); - return; - } - } - } - sendActionDone(); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"stop"); -} - -/** \brief give the forced mode, to export/import transfer list */ -void ListThread::forceMode(const Ultracopier::CopyMode &mode) -{ - #ifdef ULTRACOPIER_PLUGIN_RSYNC - if(mode==Ultracopier::Move) - setRsync(false); - #endif - if(mode==Ultracopier::Copy) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"Force mode to copy"); - else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"Force mode to move"); - this->mode=mode; - forcedMode=true; -} - -void ListThread::exportTransferList(const std::string &fileName) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); - QFile transferFile(QString::fromStdString(fileName)); - if(transferFile.open(QIODevice::WriteOnly|QIODevice::Truncate)) - { - transferFile.write(QStringLiteral("Ultracopier;Transfer-list;").toUtf8()); - if(!forcedMode) - transferFile.write(QStringLiteral("Transfer;").toUtf8()); - else - { - if(mode==Ultracopier::Copy) - transferFile.write(QStringLiteral("Copy;").toUtf8()); - else - transferFile.write(QStringLiteral("Move;").toUtf8()); - } - transferFile.write(QStringLiteral("Ultracopier\n").toUtf8()); - bool haveError=false; - int size=actionToDoListTransfer.size(); - for (int index=0;index<size;++index) { - if(actionToDoListTransfer.at(index).mode==Ultracopier::Copy) - { - if(!forcedMode || mode==Ultracopier::Copy) - { - if(forcedMode) - transferFile.write(QStringLiteral("%1;%2\n").arg(actionToDoListTransfer.at(index).source.absoluteFilePath()).arg(actionToDoListTransfer.at(index).destination.absoluteFilePath()).toUtf8()); - else - transferFile.write(QStringLiteral("Copy;%1;%2\n").arg(actionToDoListTransfer.at(index).source.absoluteFilePath()).arg(actionToDoListTransfer.at(index).destination.absoluteFilePath()).toUtf8()); - } - else - haveError=true; - } - else if(actionToDoListTransfer.at(index).mode==Ultracopier::Move) - { - if(!forcedMode || mode==Ultracopier::Move) - { - if(forcedMode) - transferFile.write(QStringLiteral("%1;%2\n").arg(actionToDoListTransfer.at(index).source.absoluteFilePath()).arg(actionToDoListTransfer.at(index).destination.absoluteFilePath()).toUtf8()); - else - transferFile.write(QStringLiteral("Move;%1;%2\n").arg(actionToDoListTransfer.at(index).source.absoluteFilePath()).arg(actionToDoListTransfer.at(index).destination.absoluteFilePath()).toUtf8()); - } - else - haveError=true; - } - } - if(haveError) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("Unable do to move or copy item into wrong forced mode: %1").arg(transferFile.errorString()).toStdString()); - emit errorTransferList(tr("Unable do to move or copy item into wrong forced mode: %1").arg(transferFile.errorString()).toStdString()); - } - transferFile.close(); - } - else - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("Unable to save the transfer list: %1").arg(transferFile.errorString()).toStdString()); - emit errorTransferList(tr("Unable to save the transfer list: %1").arg(transferFile.errorString()).toStdString()); - return; - } -} - -void ListThread::importTransferList(const std::string &fileName) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); - QFile transferFile(QString::fromStdString(fileName)); - if(transferFile.open(QIODevice::ReadOnly)) - { - std::string content; - QByteArray data=transferFile.readLine(64); - if(data.size()<=0) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Problem reading file, or file-size is 0"); - emit errorTransferList(tr("Problem reading file, or file-size is 0").toStdString()); - return; - } - content=QString::fromUtf8(data).toStdString(); - if(content!="Ultracopier;Transfer-list;Transfer;Ultracopier\n" && content!="Ultracopier;Transfer-list;Copy;Ultracopier\n" && content!="Ultracopier;Transfer-list;Move;Ultracopier\n") - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Wrong header: "+content); - emit errorTransferList(tr("Wrong header: \"%1\"").arg(QString::fromStdString(content)).toStdString()); - return; - } - bool transferListMixedMode=false; - if(content=="Ultracopier;Transfer-list;Transfer;Ultracopier\n") - { - if(forcedMode) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"The transfer list is in mixed mode, but this instance is not"); - emit errorTransferList(tr("The transfer list is in mixed mode, but this instance is not in this mode").toStdString()); - return; - } - else - transferListMixedMode=true; - } - if(content=="Ultracopier;Transfer-list;Copy;Ultracopier\n" && (forcedMode && mode==Ultracopier::Move)) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("The transfer list is in copy mode, but this instance is not: forcedMode: %1, mode: %2").arg(forcedMode).arg(mode).toStdString()); - emit errorTransferList(tr("The transfer list is in copy mode, but this instance is not in this mode").toStdString()); - return; - } - if(content=="Ultracopier;Transfer-list;Move;Ultracopier\n" && (forcedMode && mode==Ultracopier::Copy)) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("The transfer list is in move mode, but this instance is not: forcedMode: %1, mode: %2").arg(forcedMode).arg(mode).toStdString()); - emit errorTransferList(tr("The transfer list is in move mode, but this instance is not in this mode").toStdString()); - return; - } - - bool updateTheStatus_copying=actionToDoListTransfer.size()>0 || actionToDoListInode.size()>0 || actionToDoListInode_afterTheTransfer.size()>0; - Ultracopier::EngineActionInProgress updateTheStatus_action_in_progress; - if(updateTheStatus_copying) - updateTheStatus_action_in_progress=Ultracopier::CopyingAndListing; - else - updateTheStatus_action_in_progress=Ultracopier::Listing; - emit actionInProgess(updateTheStatus_action_in_progress); - - bool errorFound=false; - std::regex correctLine; - if(transferListMixedMode) - correctLine=std::regex("^(Copy|Move);[^;]+;[^;]+[\n\r]*$"); - else - correctLine=std::regex("^[^;]+;[^;]+[\n\r]*$"); - std::vector<std::string> args; - Ultracopier::CopyMode tempMode; - do - { - data=transferFile.readLine(65535*2); - if(data.size()>0) - { - content=std::string(data.constData(),data.size()); - //do the import here - if(std::regex_match(content,correctLine)) - { - stringreplaceAll(content,"\n",""); - args=stringsplit(content,';'); - if(forcedMode) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("New data to import in forced mode: %2,%3") - .arg(QString::fromStdString(args.at(0))) - .arg(QString::fromStdString(args.at(1))) - .toStdString()); - addToTransfer(QFileInfo(QString::fromStdString(args.at(0))),QFileInfo(QString::fromStdString(args.at(1))),mode); - } - else - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("New data to import: %1,%2,%3") - .arg(QString::fromStdString(args.at(0))) - .arg(QString::fromStdString(args.at(1))) - .arg(QString::fromStdString(args.at(2))) - .toStdString()); - if(args.at(0)=="Copy") - tempMode=Ultracopier::Copy; - else - tempMode=Ultracopier::Move; - addToTransfer(QFileInfo(QString::fromStdString(args.at(1))),QFileInfo(QString::fromStdString(args.at(2))),tempMode); - } - } - else - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Wrong line syntax: "+content); - errorFound=true; - } - } - } - while(data.size()>0); - transferFile.close(); - if(errorFound) - emit warningTransferList(tr("Some errors have been found during the line parsing").toStdString()); - - updateTheStatus();//->sendActionDone(); into this - autoStartAndCheckSpace(); - } - else - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("Unable to open the transfer list: %1").arg(transferFile.errorString()).toStdString()); - emit errorTransferList(tr("Unable to open the transfer list: %1").arg(transferFile.errorString()).toStdString()); - return; - } -} - -int ListThread::getNumberOfTranferRuning() const -{ - int numberOfTranferRuning=0; - const int &loop_size=transferThreadList.size(); - //lunch the transfer in WaitForTheTransfer - int int_for_loop=0; - while(int_for_loop<loop_size) - { - if(transferThreadList.at(int_for_loop)->getStat()==TransferStat_Transfer && transferThreadList.at(int_for_loop)->transferId!=0 && transferThreadList.at(int_for_loop)->transferSize>=parallelizeIfSmallerThan) - numberOfTranferRuning++; - int_for_loop++; - } - return numberOfTranferRuning; -} - -//return -bool ListThread::needMoreSpace() const -{ - if(!checkDiskSpace) - return false; - std::vector<Diskspace> diskspace_list; - for( auto& spaceDrive : requiredSpace ) { - const QString &drive=QString::fromStdString(spaceDrive.first); - #ifdef Q_OS_WIN32 - if(spaceDrive.first!="A:\\" && spaceDrive.first!="A:/" && spaceDrive.first!="A:" && spaceDrive.first!="A" && spaceDrive.first!="a:\\" && spaceDrive.first!="a:/" && spaceDrive.first!="a:" && spaceDrive.first!="a") - { - #endif - QStorageInfo storageInfo(drive); - storageInfo.refresh(); - const qint64 &availableSpace=storageInfo.bytesAvailable(); - #ifdef ULTRACOPIER_PLUGIN_DEBUG - const qint64 &bytesFree=storageInfo.bytesFree(); - #endif - - if(availableSpace<0 || - //workaround for all 0 value in case of bug from Qt - (availableSpace==0 && storageInfo.bytesTotal()==0) - ) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("availableSpace: %1, space needed: %2, on: %3, bytesFree: %4").arg(availableSpace).arg(spaceDrive.second).arg(drive).arg(bytesFree).toStdString()); - } - else if(spaceDrive.second>(quint64)availableSpace) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("availableSpace: %1, space needed: %2, on: %3, bytesFree: %4").arg(availableSpace).arg(spaceDrive.second).arg(drive).arg(bytesFree).toStdString()); - #ifdef Q_OS_WIN32 - //if(drive.contains(QRegularExpression("^[a-zA-Z]:[\\\\/]"))) - if(drive.contains(QRegularExpression("^[a-zA-Z]:"))) - #endif - { - Diskspace diskspace; - diskspace.drive=spaceDrive.first; - diskspace.freeSpace=availableSpace; - diskspace.requiredSpace=spaceDrive.second; - diskspace_list.push_back(diskspace); - } - #ifdef Q_OS_WIN32 - else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"not local drive"); - #endif - } - #ifdef Q_OS_WIN32 - } - #endif - } - if(!diskspace_list.empty()) - emit missingDiskSpace(diskspace_list); - return ! diskspace_list.empty(); -} - -//do new actions -void ListThread::doNewActions_start_transfer() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("actionToDoListTransfer.size(): %1, numberOfTranferRuning: %2").arg(actionToDoListTransfer.size()).arg(getNumberOfTranferRuning()).toStdString()); - if(stopIt || putInPause) - return; - int numberOfTranferRuning=getNumberOfTranferRuning(); - const int &loop_size=transferThreadList.size(); - //lunch the transfer in WaitForTheTransfer - int int_for_loop=0; - while(int_for_loop<loop_size) - { - if(transferThreadList.at(int_for_loop)->getStat()==TransferStat_WaitForTheTransfer) - { - if(transferThreadList.at(int_for_loop)->transferSize>=parallelizeIfSmallerThan) - { - if(numberOfTranferRuning<ULTRACOPIER_PLUGIN_MAXPARALLELTRANFER) - { - transferThreadList.at(int_for_loop)->startTheTransfer(); - numberOfTranferRuning++; - } - } - else - transferThreadList.at(int_for_loop)->startTheTransfer(); - } - int_for_loop++; - } - int_for_loop=0; - while(int_for_loop<loop_size) - { - if(transferThreadList.at(int_for_loop)->getStat()==TransferStat_PreOperation) - { - if(transferThreadList.at(int_for_loop)->transferSize>=parallelizeIfSmallerThan) - { - if(numberOfTranferRuning<ULTRACOPIER_PLUGIN_MAXPARALLELTRANFER) - { - transferThreadList.at(int_for_loop)->startTheTransfer(); - numberOfTranferRuning++; - } - } - else - transferThreadList.at(int_for_loop)->startTheTransfer(); - } - int_for_loop++; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"numberOfTranferRuning: "+std::to_string(numberOfTranferRuning)); -} - -/** \brief lunch the pre-op or inode op - 1) locate the next next item to do into the both list - 1a) optimisation posible on the mkpath/rmpath - 2) determine what need be lunched - 3) lunch it, rerun the 2) - */ -void ListThread::doNewActions_inode_manipulation() -{ - #ifdef ULTRACOPIER_PLUGIN_DEBUG_SCHEDULER - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"actionToDoList.size(): "+std::to_string(actionToDoListTransfer.size())); - #endif - if(stopIt) - checkIfReadyToCancel(); - if(stopIt || putInPause) - return; - #ifdef ULTRACOPIER_PLUGIN_DEBUG_SCHEDULER - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); - #endif - //lunch the pre-op or inode op - TransferThread *currentTransferThread; - int int_for_loop=0; - int int_for_internal_loop=0; - int int_for_transfer_thread_search=0; - actionToDoListTransfer_count=actionToDoListTransfer.size(); - actionToDoListInode_count=actionToDoListInode.size(); - int loop_sub_size_transfer_thread_search=transferThreadList.size(); - //search the next transfer action to do - while(int_for_loop<actionToDoListTransfer_count) - { - if(!actionToDoListTransfer.at(int_for_loop).isRunning) - { - //search the next inode action to do - while(int_for_internal_loop<actionToDoListInode_count) - { - if(!actionToDoListInode.at(int_for_internal_loop).isRunning) - { - if(actionToDoListTransfer.at(int_for_loop).id<actionToDoListInode.at(int_for_internal_loop).id) - { - //do the tranfer action in the next code - break; - } - else - { - //do the inode action - #include "ListThread_InodeAction.cpp" - } - } - int_for_internal_loop++; - } - ActionToDoTransfer& currentActionToDoTransfer=actionToDoListTransfer[int_for_loop]; - //do the tranfer action - while(int_for_transfer_thread_search<loop_sub_size_transfer_thread_search) - { - /** - transferThreadList.at(int_for_transfer_thread_search)->transferId==0) /!\ important! - Because the other thread can have call doNewAction before than this thread have the finish event parsed! - I this case it lose all data - */ - currentTransferThread=transferThreadList.at(int_for_transfer_thread_search); - if(currentTransferThread->getStat()==TransferStat_Idle && currentTransferThread->transferId==0) // /!\ important! - { - std::string drive=driveManagement.getDrive(actionToDoListTransfer.at(int_for_internal_loop).destination.absoluteFilePath().toStdString()); - if(requiredSpace.find(drive)!=requiredSpace.cend() && (actionToDoListTransfer.at(int_for_internal_loop).mode!=Ultracopier::Move || drive!=driveManagement.getDrive(actionToDoListTransfer.at(int_for_internal_loop).source.absoluteFilePath().toStdString()))) - { - requiredSpace[drive]-=actionToDoListTransfer.at(int_for_internal_loop).size; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("space needed removed: %1, space needed: %2, on: %3").arg(actionToDoListTransfer.at(int_for_internal_loop).size).arg(requiredSpace.at(drive)).arg(QString::fromStdString(drive)).toStdString()); - } - currentTransferThread->transferId=currentActionToDoTransfer.id; - currentTransferThread->transferSize=currentActionToDoTransfer.size; - if(!currentTransferThread->setFiles( - currentActionToDoTransfer.source, - currentActionToDoTransfer.size, - currentActionToDoTransfer.destination, - currentActionToDoTransfer.mode - )) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("[%1] id: %2 is idle, but seam busy at set name: %3").arg(int_for_loop).arg(currentTransferThread->transferId).arg(currentActionToDoTransfer.destination.absoluteFilePath()).toStdString()); - break; - } - currentActionToDoTransfer.isRunning=true; - - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("[%1] id: %2 is idle, use it for %3").arg(int_for_loop).arg(currentTransferThread->transferId).arg(currentActionToDoTransfer.destination.absoluteFilePath()).toStdString()); - - /// \note wrong position? Else write why it's here - Ultracopier::ReturnActionOnCopyList newAction; - newAction.type = Ultracopier::PreOperation; - newAction.addAction.id = currentActionToDoTransfer.id; - newAction.addAction.sourceFullPath = currentActionToDoTransfer.source.absoluteFilePath().toStdString(); - newAction.addAction.sourceFileName = currentActionToDoTransfer.source.fileName().toStdString(); - newAction.addAction.destinationFullPath = currentActionToDoTransfer.destination.absoluteFilePath().toStdString(); - newAction.addAction.destinationFileName = currentActionToDoTransfer.destination.fileName().toStdString(); - newAction.addAction.size = currentActionToDoTransfer.size; - newAction.addAction.mode = currentActionToDoTransfer.mode; - actionDone.push_back(newAction); - int_for_transfer_thread_search++; - numberOfInodeOperation++; - #ifdef ULTRACOPIER_PLUGIN_DEBUG_SCHEDULER - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"numberOfInodeOperation: "+std::to_string(numberOfInodeOperation)); - #endif - break; - } - int_for_transfer_thread_search++; - } - if(int_for_internal_loop==loop_sub_size_transfer_thread_search) - { - /// \note Can be normal when all thread is not initialized - #ifdef ULTRACOPIER_PLUGIN_DEBUG_SCHEDULER - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"unable to found free thread to do the transfer"); - #endif - break; - } - #ifdef ULTRACOPIER_PLUGIN_DEBUG_SCHEDULER - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"numberOfInodeOperation: "+std::to_string(numberOfInodeOperation)); - #endif - if(numberOfInodeOperation>=inodeThreads) - break; - if(followTheStrictOrder) - break; - } - int_for_loop++; - } - //search the next inode action to do - int_for_internal_loop=0; - while(int_for_internal_loop<actionToDoListInode_count) - { - if(!actionToDoListInode.at(int_for_internal_loop).isRunning) - { - //do the inode action - #include "ListThread_InodeAction.cpp" - } - int_for_internal_loop++; - } - //error checking - if(actionToDoListInode_count>inodeThreads) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("The index have been detected as out of max range: %1>%2").arg(actionToDoListInode_count).arg(inodeThreads).toStdString()); - return; - } -} - -//restart transfer if it can -void ListThread::restartTransferIfItCan() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); - TransferThread *transfer=qobject_cast<TransferThread *>(QObject::sender()); - if(transfer==NULL) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"transfer thread not located!"); - return; - } - int numberOfTranferRuning=getNumberOfTranferRuning(); - if(numberOfTranferRuning<ULTRACOPIER_PLUGIN_MAXPARALLELTRANFER && transfer->getStat()==TransferStat_WaitForTheTransfer) - transfer->startTheTransfer(); - doNewActions_start_transfer(); -} - -/// \brief update the transfer stat -void ListThread::newTransferStat(const TransferStat &stat,const quint64 &id) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"TransferStat: "+std::to_string(stat)); - Ultracopier::ReturnActionOnCopyList newAction; - switch(stat) - { - case TransferStat_Idle: - return; - break; - case TransferStat_PreOperation: - return; - break; - case TransferStat_WaitForTheTransfer: - return; - break; - case TransferStat_Transfer: - newAction.type=Ultracopier::Transfer; - break; - case TransferStat_PostTransfer: - case TransferStat_PostOperation: - newAction.type=Ultracopier::PostOperation; - break; - case TransferStat_Checksum: - newAction.type=Ultracopier::CustomOperation; - break; - default: - return; - break; - } - newAction.addAction.id = id; - actionDone.push_back(newAction); -} - -void ListThread::set_osBufferLimit(const unsigned int &osBufferLimit) -{ - this->osBufferLimit=osBufferLimit; - int index=0; - int loop_sub_size_transfer_thread_search=transferThreadList.size(); - while(index<loop_sub_size_transfer_thread_search) - { - transferThreadList.at(index)->set_osBufferLimit(osBufferLimit); - index++; - } -} - -void ListThread::set_setFilters(const std::vector<Filters_rules> &include,const std::vector<Filters_rules> &exclude) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("include.size(): %1, exclude.size(): %2").arg(include.size()).arg(exclude.size()).toStdString()); - this->include=include; - this->exclude=exclude; - unsigned int index=0; - while(index<scanFileOrFolderThreadsPool.size()) - { - scanFileOrFolderThreadsPool.at(index)->setFilters(include,exclude); - index++; - } -} - -void ListThread::set_sendNewRenamingRules(const std::string &firstRenamingRule,const std::string &otherRenamingRule) -{ - this->firstRenamingRule=firstRenamingRule; - this->otherRenamingRule=otherRenamingRule; - emit send_sendNewRenamingRules(firstRenamingRule,otherRenamingRule); -} - -void ListThread::set_updateMount() -{ - driveManagement.tryUpdate(); - emit send_updateMount(); -} - -void ListThread::mkPathFirstFolderFinish() -{ - int int_for_loop=0; - const int &loop_size=actionToDoListInode.size(); - while(int_for_loop<loop_size) - { - if(actionToDoListInode.at(int_for_loop).isRunning) - { - if(actionToDoListInode.at(int_for_loop).type==ActionType_MkPath) - { - //to send to the log - emit mkPath(actionToDoListInode.at(int_for_loop).destination.absoluteFilePath().toStdString()); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("stop mkpath: %1").arg(actionToDoListInode.at(int_for_loop).destination.absoluteFilePath()).toStdString()); - actionToDoListInode.erase(actionToDoListInode.cbegin()+int_for_loop); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("actionToDoListTransfer.size(): %1, actionToDoListInode: %2, actionToDoListInode_afterTheTransfer: %3").arg(actionToDoListTransfer.size()).arg(actionToDoListInode.size()).arg(actionToDoListInode_afterTheTransfer.size()).toStdString()); - if(actionToDoListTransfer.empty() && actionToDoListInode.empty() && actionToDoListInode_afterTheTransfer.empty()) - updateTheStatus(); - numberOfInodeOperation--; - #ifdef ULTRACOPIER_PLUGIN_DEBUG_SCHEDULER - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"numberOfInodeOperation: "+std::to_string(numberOfInodeOperation)); - #endif - doNewActions_inode_manipulation(); - return; - } - if(actionToDoListInode.at(int_for_loop).type==ActionType_MovePath || actionToDoListInode.at(int_for_loop).type==ActionType_RealMove - #ifdef ULTRACOPIER_PLUGIN_RSYNC - || actionToDoListInode.at(int_for_loop).type==ActionType_RmSync - #endif - ) - { - //to send to the log - #ifdef ULTRACOPIER_PLUGIN_RSYNC - if(actionToDoListInode.at(int_for_loop).type!=ActionType_RmSync) - emit mkPath(actionToDoListInode.at(int_for_loop).destination.absoluteFilePath().toStdString()); - #else - emit mkPath(actionToDoListInode.at(int_for_loop).destination.absoluteFilePath().toStdString()); - #endif - emit rmPath(actionToDoListInode.at(int_for_loop).source.absoluteFilePath().toStdString()); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("stop mkpath: %1").arg(actionToDoListInode.at(int_for_loop).destination.absoluteFilePath()).toStdString()); - actionToDoListInode.erase(actionToDoListInode.cbegin()+int_for_loop); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("actionToDoListTransfer.size(): %1, actionToDoListInode: %2, actionToDoListInode_afterTheTransfer: %3").arg(actionToDoListTransfer.size()).arg(actionToDoListInode.size()).arg(actionToDoListInode_afterTheTransfer.size()).toStdString()); - if(actionToDoListTransfer.empty() && actionToDoListInode.empty() && actionToDoListInode_afterTheTransfer.empty()) - updateTheStatus(); - numberOfInodeOperation--; - #ifdef ULTRACOPIER_PLUGIN_DEBUG_SCHEDULER - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"numberOfInodeOperation: "+std::to_string(numberOfInodeOperation)); - #endif - doNewActions_inode_manipulation(); - return; - } - - } - int_for_loop++; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to found item into the todo list"); -} - -#ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW - -void ListThread::timedUpdateDebugDialog() -{ - std::vector<std::string> newList; - int index=0; - int loop_sub_size_transfer_thread_search=transferThreadList.size(); - while(index<loop_sub_size_transfer_thread_search) - { - QString stat; - switch(transferThreadList.at(index)->getStat()) - { - case TransferStat_Idle: - stat="Idle"; - break; - case TransferStat_PreOperation: - stat="PreOperation"; - break; - case TransferStat_WaitForTheTransfer: - stat="WaitForTheTransfer"; - break; - case TransferStat_Transfer: - stat="Transfer"; - break; - case TransferStat_PostOperation: - stat="PostOperation"; - break; - case TransferStat_PostTransfer: - stat="PostTransfer"; - break; - case TransferStat_Checksum: - stat="Checksum"; - break; - default: - stat=QStringLiteral("??? (%1)").arg(transferThreadList.at(index)->getStat()); - break; - } - newList.push_back(QStringLiteral("%1) (%3,%4) %2") - .arg(index) - .arg(stat) - .arg(transferThreadList.at(index)->readingLetter()) - .arg(transferThreadList.at(index)->writingLetter()) - .toStdString() - ); - index++; - } - std::vector<std::string> newList2; - index=0; - const int &loop_size=actionToDoListTransfer.size(); - while(index<loop_size) - { - newList2.push_back(QStringLiteral("%1 %2 %3") - .arg(actionToDoListTransfer.at(index).source.absoluteFilePath()) - .arg(actionToDoListTransfer.at(index).size) - .arg(actionToDoListTransfer.at(index).destination.absoluteFilePath()) - .toStdString() - ); - if(index>((inodeThreads+ULTRACOPIER_PLUGIN_MAXPARALLELTRANFER)*2+1)) - { - newList2.push_back("..."); - break; - } - index++; - } - emit updateTheDebugInfo(newList,newList2,numberOfInodeOperation); -} - -#endif - -/// \note Can be call without queue because all call will be serialized -void ListThread::fileAlreadyExists(const QFileInfo &source,const QFileInfo &destination,const bool &isSame) -{ - emit send_fileAlreadyExists(source,destination,isSame,qobject_cast<TransferThread *>(sender())); -} - -/// \note Can be call without queue because all call will be serialized -void ListThread::errorOnFile(const QFileInfo &fileInfo, const std::string &errorString, const ErrorType &errorType) -{ - TransferThread * transferThread=qobject_cast<TransferThread *>(sender()); - if(transferThread==NULL) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"Thread locating error"); - return; - } - ErrorLogEntry errorLogEntry; - errorLogEntry.source=transferThread->getSourceInode(); - errorLogEntry.destination=transferThread->getDestinationInode(); - errorLogEntry.mode=transferThread->getMode(); - errorLogEntry.error=errorString; - errorLog.push_back(errorLogEntry); - emit errorToRetry(transferThread->getSourcePath(),transferThread->getDestinationPath(),errorString); - emit send_errorOnFile(fileInfo,errorString,transferThread,errorType); -} - -/// \note Can be call without queue because all call will be serialized -void ListThread::folderAlreadyExists(const QFileInfo &source,const QFileInfo &destination,const bool &isSame) -{ - emit send_folderAlreadyExists(source,destination,isSame,qobject_cast<ScanFileOrFolder *>(sender())); -} - -/// \note Can be call without queue because all call will be serialized -/// \todo all this part -void ListThread::errorOnFolder(const QFileInfo &fileInfo,const std::string &errorString,const ErrorType &errorType) -{ - emit send_errorOnFolder(fileInfo,errorString,qobject_cast<ScanFileOrFolder *>(sender()),errorType); -} - -//to run the thread -void ListThread::run() -{ - #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT - clockForTheCopySpeed=new QTimer(); - #endif - - exec(); -} - -void ListThread::getNeedPutAtBottom(const QFileInfo &fileInfo, const std::string &errorString, TransferThread *thread, const ErrorType &errorType) -{ - if(actionToDoListTransfer.empty()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"can't try put at bottom if empty"); - this->alwaysDoThisActionForFileExists=FileExists_NotSet; - putAtBottom=0; - emit haveNeedPutAtBottom(false,fileInfo,errorString,thread,errorType); - return; - } - bool needPutAtBottom=(putAtBottom<(quint32)actionToDoListTransfer.size()); - if(!needPutAtBottom) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"Reset put at bottom"); - this->alwaysDoThisActionForFileExists=FileExists_NotSet; - putAtBottom=0; - } - else - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"Put at bottom for later try"); - thread->putAtBottom(); - putAtBottom++; - return; - } - emit haveNeedPutAtBottom(needPutAtBottom,fileInfo,errorString,thread,errorType); -} - -/// \to create transfer thread -void ListThread::createTransferThread() -{ - if(stopIt) - return; - if(transferThreadList.size()>=(unsigned int)inodeThreads) - return; - transferThreadList.push_back(new TransferThread()); - TransferThread * last=transferThreadList.back(); - last->transferId=0; - last->transferSize=0; - last->setRightTransfer(doRightTransfer); - last->setKeepDate(keepDate); - #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT - if(!last->setBlockSize(blockSizeAfterSpeedLimitation)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"unable to set the block size: "+std::to_string(blockSizeAfterSpeedLimitation)); - #else - if(!last->setBlockSize(blockSize)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"unable to set the block size: "+std::to_string(blockSize)); - #endif - if(!last->setSequentialBuffer(sequentialBuffer)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"unable to set the sequentialBuffer: "+std::to_string(sequentialBuffer)); - if(!last->setBlockSize(parallelBuffer)) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"unable to set the parallelBuffer: "+std::to_string(parallelBuffer)); - last->setAlwaysFileExistsAction(alwaysDoThisActionForFileExists); - #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT - last->setMultiForBigSpeed(multiForBigSpeed); - #endif - last->set_doChecksum(doChecksum); - last->set_checksumIgnoreIfImpossible(checksumIgnoreIfImpossible); - last->set_checksumOnlyOnError(checksumOnlyOnError); - last->set_osBuffer(osBuffer); - last->set_osBufferLimited(osBufferLimited); - last->set_osBufferLimit(osBufferLimit); - last->setDeletePartiallyTransferredFiles(deletePartiallyTransferredFiles); - #ifdef ULTRACOPIER_PLUGIN_RSYNC - last->setRsync(rsync); - #endif - - #ifdef ULTRACOPIER_PLUGIN_DEBUG - connect(last,&TransferThread::debugInformation, this,&ListThread::debugInformation, Qt::QueuedConnection); - #endif // ULTRACOPIER_PLUGIN_DEBUG - connect(last,&TransferThread::errorOnFile, this,&ListThread::errorOnFile, Qt::QueuedConnection); - connect(last,&TransferThread::fileAlreadyExists, this,&ListThread::fileAlreadyExists, Qt::QueuedConnection); - connect(last,&TransferThread::tryPutAtBottom, this,&ListThread::transferPutAtBottom, Qt::QueuedConnection); - connect(last,&TransferThread::readStopped, this,&ListThread::doNewActions_start_transfer, Qt::QueuedConnection); - connect(last,&TransferThread::preOperationStopped, this,&ListThread::doNewActions_start_transfer, Qt::QueuedConnection); - connect(last,&TransferThread::postOperationStopped, this,&ListThread::transferInodeIsClosed, Qt::QueuedConnection); - connect(last,&TransferThread::checkIfItCanBeResumed, this,&ListThread::restartTransferIfItCan, Qt::QueuedConnection); - connect(last,&TransferThread::pushStat, this,&ListThread::newTransferStat, Qt::QueuedConnection); - - #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT - //speed limitation - connect(clockForTheCopySpeed, &QTimer::timeout, last, &TransferThread::timeOfTheBlockCopyFinished, Qt::QueuedConnection); - #endif - - connect(this,&ListThread::send_sendNewRenamingRules, last,&TransferThread::setRenamingRules, Qt::QueuedConnection); - - connect(this,&ListThread::send_setTransferAlgorithm, last,&TransferThread::setTransferAlgorithm, Qt::QueuedConnection); - connect(this,&ListThread::send_parallelBuffer, last,&TransferThread::setParallelBuffer, Qt::QueuedConnection); - connect(this,&ListThread::send_sequentialBuffer, last,&TransferThread::setSequentialBuffer, Qt::QueuedConnection); - connect(this,&ListThread::send_updateMount, last,&TransferThread::set_updateMount, Qt::QueuedConnection); - - last->start(); - last->setObjectName(QStringLiteral("transfer %1").arg(transferThreadList.size()-1)); - last->setMkpathTransfer(&mkpathTransfer); - last->setRenamingRules(firstRenamingRule,otherRenamingRule); - #ifdef ULTRACOPIER_PLUGIN_DEBUG - last->setId(transferThreadList.size()-1); - #endif - if(transferThreadList.size()>=(unsigned int)inodeThreads) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"create the last of the "+std::to_string(inodeThreads)+" transferThread"); - return; - } - if(stopIt) - return; - doNewActions_inode_manipulation(); - emit askNewTransferThread(); -} - -void ListThread::deleteTransferThread() -{ - int loop_size=transferThreadList.size(); - if(loop_size>inodeThreads) - { - int index=0; - while(index<loop_size && loop_size>inodeThreads) - { - if(transferThreadList.at(index)->getStat()==TransferStat_Idle && transferThreadList.at(index)->transferId==0) - { - transferThreadList.at(index)->stop(); - delete transferThreadList.at(index);//->deleteLayer(); - transferThreadList[index]=NULL; - transferThreadList.erase(transferThreadList.cbegin()+index); - loop_size--; - } - else - index++; - } - if(loop_size==inodeThreads) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"inodeThreads is lowered to the right value: "+std::to_string(inodeThreads)); - } -} - -void ListThread::setTransferAlgorithm(const TransferAlgorithm &transferAlgorithm) -{ - if(transferAlgorithm==TransferAlgorithm_Sequential) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"transferAlgorithm==TransferAlgorithm_Sequential"); - else if(transferAlgorithm==TransferAlgorithm_Automatic) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"transferAlgorithm==TransferAlgorithm_Automatic"); - else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"transferAlgorithm==TransferAlgorithm_Parallel"); - emit send_setTransferAlgorithm(transferAlgorithm); -} - -void ListThread::setParallelBuffer(int parallelBuffer) -{ - if(parallelBuffer<1 || parallelBuffer>ULTRACOPIER_PLUGIN_MAX_PARALLEL_NUMBER_OF_BLOCK) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"wrong number of block: "+std::to_string(parallelBuffer)); - return; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"in number of block: "+std::to_string(parallelBuffer)); - this->parallelBuffer=parallelBuffer; - emit send_parallelBuffer(parallelBuffer); -} - -void ListThread::setSequentialBuffer(int sequentialBuffer) -{ - if(sequentialBuffer<1 || sequentialBuffer>ULTRACOPIER_PLUGIN_MAX_SEQUENTIAL_NUMBER_OF_BLOCK) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"wrong number of block: "+std::to_string(sequentialBuffer)); - return; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"in number of block: "+std::to_string(sequentialBuffer)); - this->sequentialBuffer=sequentialBuffer; - emit send_sequentialBuffer(sequentialBuffer); -} - -void ListThread::setParallelizeIfSmallerThan(const unsigned int ¶llelizeIfSmallerThan) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"parallelizeIfSmallerThan in Bytes: "+std::to_string(parallelizeIfSmallerThan)); - this->parallelizeIfSmallerThan=parallelizeIfSmallerThan; -} - -void ListThread::setMoveTheWholeFolder(const bool &moveTheWholeFolder) -{ - for(unsigned int i=0;i<scanFileOrFolderThreadsPool.size();i++) - scanFileOrFolderThreadsPool.at(i)->setMoveTheWholeFolder(moveTheWholeFolder); - this->moveTheWholeFolder=moveTheWholeFolder; -} - -void ListThread::setFollowTheStrictOrder(const bool &followTheStrictOrder) -{ - this->followTheStrictOrder=followTheStrictOrder; -} - -void ListThread::setDeletePartiallyTransferredFiles(const bool &deletePartiallyTransferredFiles) -{ - this->deletePartiallyTransferredFiles=deletePartiallyTransferredFiles; - int index=0; - int loop_sub_size_transfer_thread_search=transferThreadList.size(); - while(index<loop_sub_size_transfer_thread_search) - { - transferThreadList.at(index)->setDeletePartiallyTransferredFiles(deletePartiallyTransferredFiles); - index++; - } -} - -void ListThread::setInodeThreads(const int &inodeThreads) -{ - if(inodeThreads<1 || inodeThreads>32) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"inodeThreads is out of ranges: "+std::to_string(inodeThreads)); - return; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"inodeThreads: "+std::to_string(inodeThreads)); - this->inodeThreads=inodeThreads; - createTransferThread(); - deleteTransferThread(); -} - -void ListThread::setRenameTheOriginalDestination(const bool &renameTheOriginalDestination) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"renameTheOriginalDestination: "+std::to_string(renameTheOriginalDestination)); - this->renameTheOriginalDestination=renameTheOriginalDestination; - int index=0; - int loop_sub_size_transfer_thread_search=transferThreadList.size(); - while(index<loop_sub_size_transfer_thread_search) - { - transferThreadList.at(index)->setRenameTheOriginalDestination(renameTheOriginalDestination); - index++; - } -} - -void ListThread::setCheckDiskSpace(const bool &checkDiskSpace) -{ - this->checkDiskSpace=checkDiskSpace; -} - -void ListThread::setCopyListOrder(const bool &order) -{ - this->copyListOrder=order; - for(unsigned int i=0;i<scanFileOrFolderThreadsPool.size();i++) - scanFileOrFolderThreadsPool.at(i)->setCopyListOrder(this->copyListOrder); -} - -void ListThread::exportErrorIntoTransferList(const std::string &fileName) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); - QFile transferFile(QString::fromStdString(fileName)); - if(transferFile.open(QIODevice::WriteOnly|QIODevice::Truncate)) - { - transferFile.write(QStringLiteral("Ultracopier;Transfer-list;").toUtf8()); - if(!forcedMode) - transferFile.write(QStringLiteral("Transfer;").toUtf8()); - else - { - if(mode==Ultracopier::Copy) - transferFile.write(QStringLiteral("Copy;").toUtf8()); - else - transferFile.write(QStringLiteral("Move;").toUtf8()); - } - transferFile.write(QStringLiteral("Ultracopier\n").toUtf8()); - bool haveError=false; - int size=errorLog.size(); - for (int index=0;index<size;++index) { - if(errorLog.at(index).mode==Ultracopier::Copy) - { - if(!forcedMode || mode==Ultracopier::Copy) - { - if(forcedMode) - transferFile.write(QStringLiteral("%1;%2\n").arg(errorLog.at(index).source.absoluteFilePath()).arg(errorLog.at(index).destination.absoluteFilePath()).toUtf8()); - else - transferFile.write(QStringLiteral("Copy;%1;%2\n").arg(errorLog.at(index).source.absoluteFilePath()).arg(errorLog.at(index).destination.absoluteFilePath()).toUtf8()); - } - else - haveError=true; - } - else if(errorLog.at(index).mode==Ultracopier::Move) - { - if(!forcedMode || mode==Ultracopier::Move) - { - if(forcedMode) - transferFile.write(QStringLiteral("%1;%2\n").arg(errorLog.at(index).source.absoluteFilePath()).arg(errorLog.at(index).destination.absoluteFilePath()).toUtf8()); - else - transferFile.write(QStringLiteral("Move;%1;%2\n").arg(errorLog.at(index).source.absoluteFilePath()).arg(errorLog.at(index).destination.absoluteFilePath()).toUtf8()); - } - else - haveError=true; - } - } - if(haveError) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable do to move or copy item into wrong forced mode: "+transferFile.errorString().toStdString()); - emit errorTransferList(tr("Unable do to move or copy item into wrong forced mode: %1").arg(transferFile.errorString()).toStdString()); - } - transferFile.close(); - } - else - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable to save the transfer list: "+transferFile.errorString().toStdString()); - emit errorTransferList(tr("Unable to save the transfer list: %1").arg(transferFile.errorString()).toStdString()); - return; - } -} diff --git a/plugins/CopyEngine/Ultracopier/ListThread.h b/plugins/CopyEngine/Ultracopier/ListThread.h deleted file mode 100644 index 48e7142..0000000 --- a/plugins/CopyEngine/Ultracopier/ListThread.h +++ /dev/null @@ -1,432 +0,0 @@ -/** \file ListThread.h -\brief Define the list thread, and management to the action to do -\author alpha_one_x86 -\licence GPL3, see the file COPYING */ - -#ifndef LISTTHREAD_H -#define LISTTHREAD_H - -#include <QThread> -#include <QObject> -#include <string> -#include <vector> -#include <unordered_map> -#include <QFileInfo> -#include <QSemaphore> -#include <QTextStream> -#include <QFile> -#include <QTimer> - -#include "../../../interface/PluginInterface_CopyEngine.h" -#include "ScanFileOrFolder.h" -#include "TransferThread.h" -#include "MkPath.h" -#include "Environment.h" -#include "DriveManagement.h" - -/// \brief Define the list thread, and management to the action to do -class ListThread : public QThread -{ - Q_OBJECT -public: - explicit ListThread(FacilityInterface * facilityInterface); - ~ListThread(); - - //duplication copy detection - /** \brief compare the current sources of the copy, with the passed arguments - * \param sources the sources list to compares with the current sources list - * \return true if have same sources, else false (or empty) */ - bool haveSameSource(const std::vector<std::string> &sources); - /** \brief compare the current destination of the copy, with the passed arguments - * \param destination the destination to compares with the current destination - * \return true if have same destination, else false (or empty) */ - bool haveSameDestination(const std::string &destination); - /// \return empty if multiple or no destination - std::string getUniqueDestinationFolder() const; - //external soft like file browser have send copy/move list to do - /** \brief send copy with destination - * \param sources the sources list to copy - * \param destination the destination to copy - * \return true if the copy have been accepted */ - bool newCopy(const std::vector<std::string> &sources,const std::string &destination); - /** \brief send move without destination, ask the destination - * \param sources the sources list to move - * \param destination the destination to move - * \return true if the move have been accepted */ - bool newMove(const std::vector<std::string> &sources,const std::string &destination); - /** \brief to set drives detected - * specific to this copy engine */ - /// \brief to set the collision action - void setCollisionAction(const FileExistsAction &alwaysDoThisActionForFileExists); - /** \brief to sync the transfer list - * Used when the interface is changed, useful to minimize the memory size */ - void syncTransferList(); - /// \brief to store one action to do - struct ActionToDoTransfer - { - uint64_t id; - uint64_t size;///< Used to set: used in case of transfer or remainingInode for drop folder - QFileInfo source;///< Used to set: source for transfer, folder to create, folder to drop - QFileInfo destination; - Ultracopier::CopyMode mode; - bool isRunning;///< store if the action si running - //TransferThread * transfer; // -> see transferThreadList - }; - std::vector<ActionToDoTransfer> actionToDoListTransfer; - /// \brief to store one action to do - struct ActionToDoInode - { - ActionType type;///< \see ActionType - uint64_t id; - int64_t size;///< Used to set: used in case of transfer or remainingInode for drop folder - QFileInfo source;///< Keep to copy the right/date, to remove (for move) - QFileInfo destination;///< Used to set: folder to create, folder to drop - bool isRunning;///< store if the action si running - }; - std::vector<ActionToDoInode> actionToDoListInode; - std::vector<ActionToDoInode> actionToDoListInode_afterTheTransfer; - int numberOfInodeOperation; - struct ErrorLogEntry - { - QFileInfo source; - QFileInfo destination; - std::string error; - Ultracopier::CopyMode mode; - }; - std::vector<ErrorLogEntry> errorLog; - //dir operation thread queue - MkPath mkPathQueue; - //to get the return value from copyEngine - bool getReturnBoolToCopyEngine() const; - std::pair<quint64,quint64> getReturnPairQuint64ToCopyEngine() const; - Ultracopier::ItemOfCopyList getReturnItemOfCopyListToCopyEngine() const; - - void set_doChecksum(bool doChecksum); - void set_checksumIgnoreIfImpossible(bool checksumIgnoreIfImpossible); - void set_checksumOnlyOnError(bool checksumOnlyOnError); - void set_osBuffer(bool osBuffer); - void set_osBufferLimited(bool osBufferLimited); - void autoStartIfNeeded(); -public slots: - //action on the copy - /// \brief put the transfer in pause - void pause(); - /// \brief resume the transfer - void resume(); - /** \brief skip one transfer entry - * \param id id of the file to remove */ - void skip(const uint64_t &id); - /** \brief skip as interanl one transfer entry - * \param id id of the file to remove */ - bool skipInternal(const uint64_t &id); - /// \brief cancel all the transfer - void cancel(); - //edit the transfer list - /** \brief remove the selected item - * \param ids ids is the id list of the selected items */ - void removeItems(const std::vector<uint64_t> &ids); - /** \brief move on top of the list the selected item - * \param ids ids is the id list of the selected items */ - void moveItemsOnTop(std::vector<uint64_t> ids); - /** \brief move up the list the selected item - * \param ids ids is the id list of the selected items */ - void moveItemsUp(std::vector<uint64_t> ids); - /** \brief move down the list the selected item - * \param ids ids is the id list of the selected items */ - void moveItemsDown(std::vector<uint64_t> ids); - /** \brief move on bottom of the list the selected item - * \param ids ids is the id list of the selected items */ - void moveItemsOnBottom(std::vector<uint64_t> ids); - - /** \brief give the forced mode, to export/import transfer list */ - void forceMode(const Ultracopier::CopyMode &mode); - /// \brief export the transfer list into a file - void exportTransferList(const std::string &fileName); - /// \brief import the transfer list into a file - void importTransferList(const std::string &fileName); - - /// \brief set the folder local collision - void setFolderCollision(const FolderExistsAction &alwaysDoThisActionForFolderExists); - /** \brief to set the speed limitation - * -1 if not able, 0 if disabled */ - bool setSpeedLimitation(const int64_t &speedLimitation); - /// \brief set the copy info and options before runing - void setRightTransfer(const bool doRightTransfer); - /// \brief set keep date - void setKeepDate(const bool keepDate); - /// \brief set block size in KB - void setBlockSize(const int blockSize); - /// \brief set auto start - void setAutoStart(const bool autoStart); - #ifdef ULTRACOPIER_PLUGIN_RSYNC - /// \brief set rsync - void setRsync(const bool rsync); - #endif - /// \brief set check destination folder - void setCheckDestinationFolderExists(const bool checkDestinationFolderExists); - /// \brief set data local to the thread - void setAlwaysFileExistsAction(const FileExistsAction &alwaysDoThisActionForFileExists); - /// \brief do new actions, start transfer - void doNewActions_start_transfer(); - /** \brief lunch the pre-op or inode op - 1) locate the next next item to do into the both list - 1a) optimisation posible on the mkpath/rmpath - 2) determine what need be lunched - 3) lunch it, rerun the 2) - */ - void doNewActions_inode_manipulation(); - /// \brief restart transfer if it can - void restartTransferIfItCan(); - void getNeedPutAtBottom(const QFileInfo &fileInfo, const std::string &errorString, TransferThread *thread,const ErrorType &errorType); - - /// \brief update the transfer stat - void newTransferStat(const TransferStat &stat,const quint64 &id); - - void set_osBufferLimit(const unsigned int &osBufferLimit); - void set_setFilters(const std::vector<Filters_rules> &include,const std::vector<Filters_rules> &exclude); - void set_sendNewRenamingRules(const std::string &firstRenamingRule,const std::string &otherRenamingRule); - void set_updateMount(); - - //send action done - void sendActionDone(); - //send progression - void sendProgression(); - - void setTransferAlgorithm(const TransferAlgorithm &transferAlgorithm); - void setParallelBuffer(int parallelBuffer); - void setSequentialBuffer(int sequentialBuffer); - void setParallelizeIfSmallerThan(const unsigned int ¶llelizeIfSmallerThan); - void setMoveTheWholeFolder(const bool &moveTheWholeFolder); - void setFollowTheStrictOrder(const bool &followTheStrictOrder); - void setDeletePartiallyTransferredFiles(const bool &deletePartiallyTransferredFiles); - void setInodeThreads(const int &inodeThreads); - void setRenameTheOriginalDestination(const bool &renameTheOriginalDestination); - void setCheckDiskSpace(const bool &checkDiskSpace); - void setCopyListOrder(const bool &order); - void exportErrorIntoTransferList(const std::string &fileName); -private: - QSemaphore mkpathTransfer; - std::string sourceDrive; - bool sourceDriveMultiple; - std::string destinationDrive; - std::string destinationFolder; - bool destinationDriveMultiple; - bool destinationFolderMultiple; - DriveManagement driveManagement; - - bool stopIt; - std::vector<ScanFileOrFolder *> scanFileOrFolderThreadsPool; - int numberOfTransferIntoToDoList; - std::vector<TransferThread *> transferThreadList; - ScanFileOrFolder * newScanThread(Ultracopier::CopyMode mode); - uint64_t bytesToTransfer; - uint64_t bytesTransfered; - bool autoStart; - #ifdef ULTRACOPIER_PLUGIN_RSYNC - bool rsync; - #endif - bool putInPause; - std::vector<Ultracopier::ReturnActionOnCopyList> actionDone;///< to action to send to the interface - uint64_t idIncrementNumber;///< to store the last id returned - int64_t actualRealByteTransfered; - int maxSpeed;///< in KB/s, assume as 0KB/s as default like every where - FolderExistsAction alwaysDoThisActionForFolderExists; - bool checkDestinationFolderExists; - bool doChecksum; - bool checksumIgnoreIfImpossible; - bool checksumOnlyOnError; - bool osBuffer; - bool osBufferLimited; - unsigned int parallelizeIfSmallerThan; - bool moveTheWholeFolder; - bool followTheStrictOrder; - bool deletePartiallyTransferredFiles; - int sequentialBuffer; - int parallelBuffer; - int inodeThreads; - bool renameTheOriginalDestination; - bool checkDiskSpace; - bool copyListOrder; - std::unordered_map<std::string,uint64_t> requiredSpace; - std::vector<std::pair<uint64_t,uint32_t> > timeToTransfer; - unsigned int putAtBottom; - unsigned int osBufferLimit; - std::vector<Filters_rules> include,exclude; - Ultracopier::CopyMode mode; - bool forcedMode; - std::string firstRenamingRule; - std::string otherRenamingRule; - #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT - int multiForBigSpeed; - #endif - /* here to prevent: - QObject::killTimer: timers cannot be stopped from another thread - QObject::startTimer: timers cannot be started from another thread */ - #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT - QTimer *clockForTheCopySpeed; ///< For the speed throttling - #endif - - inline static Ultracopier::ItemOfCopyList actionToDoTransferToItemOfCopyList(const ActionToDoTransfer &actionToDoTransfer); - //add file transfer to do - uint64_t addToTransfer(const QFileInfo& source,const QFileInfo& destination,const Ultracopier::CopyMode& mode); - //generate id number - uint64_t generateIdNumber(); - //warning the first entry is accessible will copy - bool removeSingleItem(const uint64_t &id); - //put on top - bool moveOnTopItem(const uint64_t &id); - //move up - bool moveUpItem(const uint64_t &id); - //move down - bool moveDownItem(const uint64_t &id); - //put on bottom - bool moveOnBottomItem(const uint64_t &id); - //general transfer - void startGeneralTransfer(); - //debug windows if needed - #ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW - QTimer timerUpdateDebugDialog; - #endif - void detectDrivesOfCurrentTransfer(const std::vector<std::string> &sources,const std::string &destination); - FacilityInterface * facilityInterface; - QSemaphore waitConstructor,waitCancel; - int actionToDoListTransfer_count,actionToDoListInode_count; - bool doTransfer,doInode; - int64_t oversize;//used as temp variable - int64_t currentProgression; - int64_t copiedSize,totalSize,localOverSize; - std::vector<Ultracopier::ProgressionItem> progressionList; - //memory variable for transfer thread creation - bool doRightTransfer; - bool keepDate; - int blockSize;//in Bytes - #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT - int blockSizeAfterSpeedLimitation;//in Bytes - #endif - std::vector<std::string> drives; - FileExistsAction alwaysDoThisActionForFileExists; - //to return value to the copyEngine - bool returnBoolToCopyEngine; - std::pair<quint64,quint64> returnPairQuint64ToCopyEngine; - std::vector<Ultracopier::ItemOfCopyList> returnListItemOfCopyListToCopyEngine; - Ultracopier::ItemOfCopyList returnItemOfCopyListToCopyEngine; - Ultracopier::ProgressionItem tempItem; - - void realByteTransfered(); - int getNumberOfTranferRuning() const; - bool needMoreSpace() const; -private slots: - void scanThreadHaveFinishSlot(); - void scanThreadHaveFinish(bool skipFirstRemove=false); - void autoStartAndCheckSpace(); - void updateTheStatus(); - void fileTransfer(const QFileInfo &sourceFileInfo,const QFileInfo &destinationFileInfo,const Ultracopier::CopyMode &mode); - //mkpath event - void mkPathFirstFolderFinish(); - /** \brief put the current file at bottom in case of error - \note ONLY IN CASE OF ERROR */ - void transferPutAtBottom(); - //transfer is finished - void transferInodeIsClosed(); - //debug windows if needed - #ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW - void timedUpdateDebugDialog(); - #endif - //dialog message - /// \note Can be call without queue because all call will be serialized - void fileAlreadyExists(const QFileInfo &source,const QFileInfo &destination,const bool &isSame); - /// \note Can be call without queue because all call will be serialized - void errorOnFile(const QFileInfo &fileInfo,const std::string &errorString, const ErrorType &errorType); - /// \note Can be call without queue because all call will be serialized - void folderAlreadyExists(const QFileInfo &source,const QFileInfo &destination,const bool &isSame); - /// \note Can be call without queue because all call will be serialized - void errorOnFolder(const QFileInfo &fileInfo, const std::string &errorString, const ErrorType &errorType); - //to run the thread - void run(); - /// \to create transfer thread - void createTransferThread(); - void deleteTransferThread(); - //mk path to do - uint64_t addToMkPath(const QFileInfo& source, const QFileInfo& destination, const int &inode); - //add rm path to do - void addToMovePath(const QFileInfo& source,const QFileInfo& destination, const int& inodeToRemove); - //add to real move - void addToRealMove(const QFileInfo& source,const QFileInfo& destination); - #ifdef ULTRACOPIER_PLUGIN_RSYNC - //rsync rm - void addToRmForRsync(const QFileInfo& destination); - #endif - //send the progression, after full reset of the interface (then all is empty) - void syncTransferList_internal(); - - void checkIfReadyToCancel(); -signals: - //send information about the copy - void actionInProgess(const Ultracopier::EngineActionInProgress &) const; //should update interface information on this event - - void newActionOnList(const std::vector<Ultracopier::ReturnActionOnCopyList> &) const;///very important, need be temporized to group the modification to do and not flood the interface - void syncReady() const; - void doneTime(const std::vector<std::pair<uint64_t,uint32_t> >&) const; - - /** \brief to get the progression for a specific file - * \param id the id of the transfer, id send during population the transfer list - * first = current transfered byte, second = byte to transfer */ - void pushFileProgression(const std::vector<Ultracopier::ProgressionItem> &progressionList) const; - //get information about the copy - /** \brief to get the general progression - * first = current transfered byte, second = byte to transfer */ - void pushGeneralProgression(const uint64_t &,const uint64_t &) const; - - void newFolderListing(const std::string &path) const; - void isInPause(const bool &) const; - - //when can be deleted - void canBeDeleted() const; - void haveNeedPutAtBottom(bool needPutAtBottom,const QFileInfo &fileInfo,const std::string &errorString,TransferThread * thread,const ErrorType &errorType) const; - - //send error occurred - void error(const std::string &path,const uint64_t &size,const uint64_t &mtime,const std::string &error) const; - void errorToRetry(const std::string &source,const std::string &destination,const std::string &error) const; - //for the extra logging - void rmPath(const std::string &path) const; - void mkPath(const std::string &path) const; - /// \brief To debug source - #ifdef ULTRACOPIER_PLUGIN_DEBUG - void debugInformation(const Ultracopier::DebugLevel &level,const std::string &fonction,const std::string &text,const std::string &file,const int &ligne) const; - #endif - #ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW - void updateTheDebugInfo(const std::vector<std::string> &,const std::vector<std::string>&,const int &) const; - #endif - - //other signal - /// \note Can be call without queue because all call will be serialized - void send_fileAlreadyExists(const QFileInfo &source,const QFileInfo &destination,const bool &isSame,TransferThread * thread) const; - /// \note Can be call without queue because all call will be serialized - void send_errorOnFile(const QFileInfo &fileInfo,const std::string &errorString,TransferThread * thread, const ErrorType &errorType) const; - /// \note Can be call without queue because all call will be serialized - void send_folderAlreadyExists(const QFileInfo &source,const QFileInfo &destination,const bool &isSame,ScanFileOrFolder * thread) const; - /// \note Can be call without queue because all call will be serialized - void send_errorOnFolder(const QFileInfo &fileInfo,const std::string &errorString,ScanFileOrFolder * thread, const ErrorType &errorType) const; - //send the progression - void send_syncTransferList() const; - //mkpath error event - void mkPathErrorOnFolder(const QFileInfo &fileInfo,const std::string &errorString,const ErrorType &errorType) const; - //to close - void tryCancel() const; - //to ask new transfer thread - void askNewTransferThread() const; - - void warningTransferList(const std::string &warning) const; - void errorTransferList(const std::string &error) const; - void send_sendNewRenamingRules(const std::string &firstRenamingRule,const std::string &otherRenamingRule) const; - void send_realBytesTransfered(const uint64_t &) const; - - void send_setTransferAlgorithm(TransferAlgorithm transferAlgorithm) const; - void send_parallelBuffer(const int ¶llelBuffer) const; - void send_sequentialBuffer(const int &sequentialBuffer) const; - void send_parallelizeIfSmallerThan(const int ¶llelizeIfSmallerThan) const; - void send_updateMount(); - void missingDiskSpace(std::vector<Diskspace> list) const; -}; - -#endif // LISTTHREAD_H diff --git a/plugins/CopyEngine/Ultracopier/ListThread_InodeAction.cpp b/plugins/CopyEngine/Ultracopier/ListThread_InodeAction.cpp deleted file mode 100644 index 12421f2..0000000 --- a/plugins/CopyEngine/Ultracopier/ListThread_InodeAction.cpp +++ /dev/null @@ -1,64 +0,0 @@ -/** \file ListThread_InodeAction.cpp -\brief To be included into ListThread.cpp, to optimize and prevent code duplication -\see ListThread.cpp */ - -#ifdef LISTTHREAD_H - -//do the inode action -ActionToDoInode& currentActionToDoInode=actionToDoListInode[int_for_internal_loop]; -switch(currentActionToDoInode.type) -{ - case ActionType_RealMove: - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("launch real move, source: %1, destination: %2").arg(currentActionToDoInode.source.absoluteFilePath()).arg(currentActionToDoInode.destination.absoluteFilePath()).toStdString()); - mkPathQueue.addPath(currentActionToDoInode.source.absoluteFilePath(),currentActionToDoInode.destination.absoluteFilePath(),currentActionToDoInode.type); - currentActionToDoInode.isRunning=true; - numberOfInodeOperation++; - if(numberOfInodeOperation>=inodeThreads) - return; - break; - case ActionType_MkPath: - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("launch mkpath, source: %1, destination: %2").arg(currentActionToDoInode.source.absoluteFilePath()).arg(currentActionToDoInode.destination.absoluteFilePath()).toStdString()); - mkPathQueue.addPath(currentActionToDoInode.source.absoluteFilePath(),currentActionToDoInode.destination.absoluteFilePath(),currentActionToDoInode.type); - currentActionToDoInode.isRunning=true; - numberOfInodeOperation++; - if(numberOfInodeOperation>=inodeThreads) - return; - break; - #ifdef ULTRACOPIER_PLUGIN_RSYNC - case ActionType_RmSync: - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QString("launch rmsync, destination: %1").arg(currentActionToDoInode.destination.absoluteFilePath()).toStdString()); - mkPathQueue.addPath(currentActionToDoInode.destination.absoluteFilePath(),currentActionToDoInode.destination.absoluteFilePath(),currentActionToDoInode.type); - currentActionToDoInode.isRunning=true; - numberOfInodeOperation++; - if(numberOfInodeOperation>=inodeThreads) - return; - break; - #endif - case ActionType_MovePath: - //then empty (no file), can try remove it - if(currentActionToDoInode.size==0 || actionToDoListTransfer.empty())//don't put afterTheTransfer because actionToDoListInode_afterTheTransfer -> already afterTheTransfer - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("launch rmpath: %1").arg(currentActionToDoInode.source.absoluteFilePath()).toStdString()); - mkPathQueue.addPath(currentActionToDoInode.source.absoluteFilePath(),currentActionToDoInode.destination.absoluteFilePath(),currentActionToDoInode.type); - currentActionToDoInode.isRunning=true; - numberOfInodeOperation++; - if(numberOfInodeOperation>=inodeThreads) - return; - } - else //have do the destination, put the remove to after - { - currentActionToDoInode.size=0; - actionToDoListInode_afterTheTransfer.push_back(currentActionToDoInode); - actionToDoListInode.erase(actionToDoListInode.cbegin()+int_for_internal_loop); - int_for_internal_loop--; - actionToDoListInode_count--; - if(numberOfInodeOperation>=inodeThreads) - return; - } - break; - default: - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Wrong type at inode action"); - return; -} - -#endif diff --git a/plugins/CopyEngine/Ultracopier/MkPath.cpp b/plugins/CopyEngine/Ultracopier/MkPath.cpp deleted file mode 100644 index e4ac9cf..0000000 --- a/plugins/CopyEngine/Ultracopier/MkPath.cpp +++ /dev/null @@ -1,517 +0,0 @@ -#include "MkPath.h" - -#ifdef Q_OS_WIN32 - #ifndef ULTRACOPIER_PLUGIN_SET_TIME_UNIX_WAY - #ifndef NOMINMAX - #define NOMINMAX - #endif - #include <windows.h> - #endif -#endif - -std::string MkPath::text_slash="/"; - -MkPath::MkPath() -{ - stopIt=false; - waitAction=false; - doRightTransfer=false; - maxTime=QDateTime(QDate(ULTRACOPIER_PLUGIN_MINIMALYEAR,1,1)); - setObjectName("MkPath"); - moveToThread(this); - start(); - #ifdef Q_OS_WIN32 - #ifndef ULTRACOPIER_PLUGIN_SET_TIME_UNIX_WAY - regRead=std::regex("^[a-zA-Z]:"); - #endif - #endif -} - -MkPath::~MkPath() -{ - stopIt=true; - quit(); - wait(); -} - -void MkPath::addPath(const QFileInfo& source, const QFileInfo& destination, const ActionType &actionType) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("source: %1, destination: %2").arg(source.absoluteFilePath()).arg(destination.absoluteFilePath()).toStdString()); - if(stopIt) - return; - emit internalStartAddPath(source,destination,actionType); -} - -void MkPath::skip() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); - emit internalStartSkip(); -} - -void MkPath::retry() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); - emit internalStartRetry(); -} - -void MkPath::run() -{ - connect(this,&MkPath::internalStartAddPath, this,&MkPath::internalAddPath,Qt::QueuedConnection); - connect(this,&MkPath::internalStartDoThisPath, this,&MkPath::internalDoThisPath,Qt::QueuedConnection); - connect(this,&MkPath::internalStartSkip, this,&MkPath::internalSkip,Qt::QueuedConnection); - connect(this,&MkPath::internalStartRetry, this,&MkPath::internalRetry,Qt::QueuedConnection); - exec(); -} - -void MkPath::internalDoThisPath() -{ - if(waitAction || pathList.isEmpty()) - return; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("source: %1, destination: %2, move: %3").arg(pathList.first().source.absoluteFilePath()).arg(pathList.first().destination.absoluteFilePath()).arg(pathList.first().actionType).toStdString()); - #ifdef ULTRACOPIER_PLUGIN_RSYNC - if(pathList.first().actionType==ActionType_RmSync) - { - if(pathList.first().destination.isFile()) - { - QFile removedFile(pathList.first().destination.absoluteFilePath()); - if(!removedFile.remove()) - { - if(stopIt) - return; - waitAction=true; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable to remove the inode: "+pathList.first().destination.absoluteFilePath().toStdString()+", error: "+removedFile.errorString().toStdString()); - emit errorOnFolder(pathList.first().destination,removedFile.errorString().toStdString()); - return; - } - } - else if(!rmpath(pathList.first().destination.absoluteFilePath())) - { - if(stopIt) - return; - waitAction=true; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable to remove the inode: "+pathList.first().destination.absoluteFilePath().toStdString()); - emit errorOnFolder(pathList.first().destination,tr("Unable to remove").toStdString()); - return; - } - pathList.removeFirst(); - emit firstFolderFinish(); - checkIfCanDoTheNext(); - return; - } - #endif - doTheDateTransfer=false; - if(keepDate) - { - if(!pathList.first().source.exists()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"the sources not exists: "+pathList.first().source.absoluteFilePath().toStdString()); - doTheDateTransfer=false; - } - else if(maxTime>=pathList.first().source.lastModified()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"the sources is older to copy the time: "+pathList.first().source.absoluteFilePath().toStdString()+": "+maxTime.toString("dd.MM.yyyy hh:mm:ss.zzz").toStdString()+">="+pathList.first().source.lastModified().toString("dd.MM.yyyy hh:mm:ss.zzz").toStdString()); - doTheDateTransfer=false; - } - else - { - doTheDateTransfer=readFileDateTime(pathList.first().source); - /*if(!doTheDateTransfer) - { - if(stopIt) - return; - waitAction=true; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable to get source folder time: "+pathList.first().source.absoluteFilePath()); - emit errorOnFolder(pathList.first().source,tr("Unable to get time")); - return; - }*/ - } - } - if(dir.exists(pathList.first().destination.absoluteFilePath()) && pathList.first().actionType==ActionType_RealMove) - pathList.first().actionType=ActionType_MovePath; - if(pathList.first().actionType!=ActionType_RealMove) - { - if(!dir.exists(pathList.first().destination.absoluteFilePath())) - if(!dir.mkpath(pathList.first().destination.absoluteFilePath())) - { - if(!dir.exists(pathList.first().destination.absoluteFilePath())) - { - if(stopIt) - return; - waitAction=true; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable to make the folder: "+pathList.first().destination.absoluteFilePath().toStdString()); - emit errorOnFolder(pathList.first().destination,tr("Unable to create the folder").toStdString()); - return; - } - } - } - else - { - if(!pathList.first().source.exists()) - { - if(stopIt) - return; - waitAction=true; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"The source folder don't exists: "+pathList.first().source.absoluteFilePath().toStdString()); - emit errorOnFolder(pathList.first().destination,tr("The source folder don't exists").toStdString()); - return; - } - if(!pathList.first().source.isDir())//it's really an error? - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"The source is not a folder: "+pathList.first().source.absoluteFilePath().toStdString()); - /*if(stopIt) - return; - waitAction=true; - emit errorOnFolder(pathList.first().destination,tr("The source is not a folder")); - return;*/ - } - if(pathList.first().destination.absoluteFilePath().startsWith(pathList.first().source.absoluteFilePath()+QString::fromStdString(text_slash))) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"move into it self: "+pathList.first().destination.absoluteFilePath().toStdString()); - int random=rand(); - QFileInfo tempFolder=pathList.first().source.absolutePath()+QString::fromStdString(text_slash)+QString::number(random); - while(tempFolder.exists()) - { - random=rand(); - tempFolder=pathList.first().source.absolutePath()+QString::fromStdString(text_slash)+QString::number(random); - } - if(!dir.rename(pathList.first().source.absoluteFilePath(),tempFolder.absoluteFilePath())) - { - if(stopIt) - return; - waitAction=true; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable to temporary rename the folder: "+pathList.first().destination.absoluteFilePath().toStdString()); - emit errorOnFolder(pathList.first().destination,tr("Unable to temporary rename the folder").toStdString()); - return; - } - /* http://doc.qt.io/qt-5/qdir.html#rename - * On most file systems, rename() fails only if oldName does not exist, or if a file with the new name already exists. - if(!dir.mkpath(pathList.first().destination.absolutePath())) - { - if(!dir.exists(pathList.first().destination.absolutePath())) - { - if(stopIt) - return; - waitAction=true; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable to make the folder: "+pathList.first().destination.absoluteFilePath()); - emit errorOnFolder(pathList.first().destination,tr("Unable to create the folder")); - return; - } - }*/ - if(!dir.rename(tempFolder.absoluteFilePath(),pathList.first().destination.absoluteFilePath())) - { - if(stopIt) - return; - waitAction=true; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable to do the final real move the folder: "+pathList.first().destination.absoluteFilePath().toStdString()); - emit errorOnFolder(pathList.first().destination,tr("Unable to do the final real move the folder").toStdString()); - return; - } - } - else - { - /* http://doc.qt.io/qt-5/qdir.html#rename - * On most file systems, rename() fails only if oldName does not exist, or if a file with the new name already exists. - if(!dir.mkpath(pathList.first().destination.absolutePath())) - { - if(!dir.exists(pathList.first().destination.absolutePath())) - { - if(stopIt) - return; - waitAction=true; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable to make the folder: "+pathList.first().destination.absoluteFilePath()); - emit errorOnFolder(pathList.first().destination,tr("Unable to create the folder")); - return; - } - }*/ - if(!dir.rename(pathList.first().source.absoluteFilePath(),pathList.first().destination.absoluteFilePath())) - { - if(stopIt) - return; - waitAction=true; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable to make the folder: from: "+pathList.first().source.absoluteFilePath().toStdString()+", soruce exists: "+std::to_string(QDir(pathList.first().source.absoluteFilePath()).exists())+", to: "+pathList.first().destination.absoluteFilePath().toStdString() - +", destination exist: "+std::to_string(QDir(pathList.first().destination.absoluteFilePath()).exists())); - emit errorOnFolder(pathList.first().destination,tr("Unable to move the folder").toStdString()); - return; - } - } - } - if(doTheDateTransfer) - if(!writeFileDateTime(pathList.first().destination)) - { - if(!pathList.first().destination.exists()) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable to set destination folder time (not exists): "+pathList.first().destination.absoluteFilePath().toStdString()); - else if(!pathList.first().destination.isDir()) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable to set destination folder time (not a dir): "+pathList.first().destination.absoluteFilePath().toStdString()); - else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable to set destination folder time: "+pathList.first().destination.absoluteFilePath().toStdString()); - /*if(stopIt) - return; - waitAction=true; - - emit errorOnFolder(pathList.first().source,tr("Unable to set time")); - return;*/ - } - if(doRightTransfer && pathList.first().actionType!=ActionType_RealMove) - { - QFile source(pathList.first().source.absoluteFilePath()); - QFile destination(pathList.first().destination.absoluteFilePath()); - if(!destination.setPermissions(source.permissions())) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable to set the right: "+pathList.first().destination.absoluteFilePath().toStdString()); - /*if(stopIt) - return; - waitAction=true; - emit errorOnFolder(pathList.first().source,tr("Unable to set the access-right")); - return;*/ - } - } - if(pathList.first().actionType==ActionType_MovePath) - { - if(!rmpath(pathList.first().source.absoluteFilePath())) - { - if(stopIt) - return; - waitAction=true; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable to remove the source folder: "+pathList.first().destination.absoluteFilePath().toStdString()); - emit errorOnFolder(pathList.first().source,tr("Unable to remove").toStdString()); - return; - } - } - pathList.removeFirst(); - emit firstFolderFinish(); - checkIfCanDoTheNext(); -} - -void MkPath::internalAddPath(const QFileInfo& source, const QFileInfo& destination, const ActionType &actionType) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("source: %1, destination: %2").arg(source.absoluteFilePath()).arg(destination.absoluteFilePath()).toStdString()); - Item tempPath; - tempPath.source=source; - tempPath.destination=destination; - tempPath.actionType=actionType; - pathList << tempPath; - if(!waitAction) - checkIfCanDoTheNext(); -} - -void MkPath::checkIfCanDoTheNext() -{ - if(!waitAction && !stopIt && pathList.size()>0) - emit internalStartDoThisPath(); -} - -void MkPath::internalSkip() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); - waitAction=false; - pathList.removeFirst(); - emit firstFolderFinish(); - checkIfCanDoTheNext(); -} - -void MkPath::internalRetry() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start"); - waitAction=false; - checkIfCanDoTheNext(); -} - -void MkPath::setRightTransfer(const bool doRightTransfer) -{ - this->doRightTransfer=doRightTransfer; -} - -void MkPath::setKeepDate(const bool keepDate) -{ - this->keepDate=keepDate; -} - -bool MkPath::rmpath(const QDir &dir - #ifdef ULTRACOPIER_PLUGIN_RSYNC - ,const bool &toSync - #endif - ) -{ - if(!dir.exists()) - return true; - bool allHaveWork=true; - QFileInfoList list = dir.entryInfoList(QDir::AllEntries|QDir::NoDotAndDotDot|QDir::Hidden|QDir::System,QDir::DirsFirst); - for (int i = 0; i < list.size(); ++i) - { - QFileInfo fileInfo(list.at(i)); - if(!fileInfo.isDir()) - { - #ifdef ULTRACOPIER_PLUGIN_RSYNC - if(toSync) - { - QFile file(fileInfo.absoluteFilePath()); - if(!file.remove()) - { - if(toSync) - { - QFile file(fileInfo.absoluteFilePath()); - if(!file.remove()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"unable to remove a file: "+fileInfo.absoluteFilePath().toStdString()+", due to: "+file.errorString().toStdString()); - allHaveWork=false; - } - } - else - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"found a file: "+fileInfo.fileName().toStdString()); - allHaveWork=false; - } - } - } - else - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"found a file: "+fileInfo.fileName().toStdString()); - allHaveWork=false; - } - #else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"found a file: "+fileInfo.fileName().toStdString()); - allHaveWork=false; - #endif - } - else - { - //return the fonction for scan the new folder - if(!rmpath(dir.absolutePath()+'/'+fileInfo.fileName()+'/')) - allHaveWork=false; - } - } - if(!allHaveWork) - return false; - allHaveWork=dir.rmdir(dir.absolutePath()); - if(!allHaveWork) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"unable to remove the folder: "+dir.absolutePath().toStdString()); - return allHaveWork; -} - -//fonction to edit the file date time -bool MkPath::readFileDateTime(const QFileInfo &source) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"readFileDateTime("+source.absoluteFilePath().toStdString()+")"); - /** Why not do it with Qt? Because it not support setModificationTime(), and get the time with Qt, that's mean use local time where in C is UTC time */ - #ifdef Q_OS_UNIX - #ifdef Q_OS_LINUX - struct stat info; - if(stat(source.absoluteFilePath().toLatin1().data(),&info)!=0) - return false; - time_t ctime=info.st_ctim.tv_sec; - time_t actime=info.st_atim.tv_sec; - time_t modtime=info.st_mtim.tv_sec; - //this function avalaible on unix and mingw - butime.actime=actime; - butime.modtime=modtime; - Q_UNUSED(ctime); - return true; - #else //mainly for mac - QFileInfo fileInfo(source); - time_t ctime=fileInfo.created().toTime_t(); - time_t actime=fileInfo.lastRead().toTime_t(); - time_t modtime=fileInfo.lastModified().toTime_t(); - //this function avalaible on unix and mingw - utimbuf butime; - butime.actime=actime; - butime.modtime=modtime; - Q_UNUSED(ctime); - return true; - #endif - #else - #ifdef Q_OS_WIN32 - #ifdef ULTRACOPIER_PLUGIN_SET_TIME_UNIX_WAY - struct stat info; - if(stat(source.toLatin1().data(),&info)!=0) - return false; - time_t ctime=info.st_ctim.tv_sec; - time_t actime=info.st_atim.tv_sec; - time_t modtime=info.st_mtim.tv_sec; - //this function avalaible on unix and mingw - butime.actime=actime; - butime.modtime=modtime; - Q_UNUSED(ctime); - return true; - #else - wchar_t filePath[65535]; - if(std::regex_match(source.absoluteFilePath().toStdString(),regRead)) - filePath[QDir::toNativeSeparators(QStringLiteral("\\\\?\\")+source.absoluteFilePath()).toWCharArray(filePath)]=L'\0'; - else - filePath[QDir::toNativeSeparators(source.absoluteFilePath()).toWCharArray(filePath)]=L'\0'; - HANDLE hFileSouce = CreateFileW(filePath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_READONLY | FILE_FLAG_BACKUP_SEMANTICS, NULL); - if(hFileSouce == INVALID_HANDLE_VALUE) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"open failed to read: "+QString::fromWCharArray(filePath).toStdString()+", error: "+std::to_string(GetLastError())); - return false; - } - FILETIME ftCreate, ftAccess, ftWrite; - if(!GetFileTime(hFileSouce, &ftCreate, &ftAccess, &ftWrite)) - { - CloseHandle(hFileSouce); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"unable to get the file time"); - return false; - } - this->ftCreateL=ftCreate.dwLowDateTime; - this->ftCreateH=ftCreate.dwHighDateTime; - this->ftAccessL=ftAccess.dwLowDateTime; - this->ftAccessH=ftAccess.dwHighDateTime; - this->ftWriteL=ftWrite.dwLowDateTime; - this->ftWriteH=ftWrite.dwHighDateTime; - CloseHandle(hFileSouce); - return true; - #endif - #else - return false; - #endif - #endif - return false; -} - -bool MkPath::writeFileDateTime(const QFileInfo &destination) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"writeFileDateTime("+destination.absoluteFilePath().toStdString()+")"); - /** Why not do it with Qt? Because it not support setModificationTime(), and get the time with Qt, that's mean use local time where in C is UTC time */ - #ifdef Q_OS_UNIX - #ifdef Q_OS_LINUX - return utime(destination.absoluteFilePath().toLatin1().data(),&butime)==0; - #else //mainly for mac - return utime(destination.absoluteFilePath().toLatin1().data(),&butime)==0; - #endif - #else - #ifdef Q_OS_WIN32 - #ifdef ULTRACOPIER_PLUGIN_SET_TIME_UNIX_WAY - return utime(destination.toLatin1().data(),&butime)==0; - #else - wchar_t filePath[65535]; - if(std::regex_match(destination.absoluteFilePath().toStdString(),regRead)) - filePath[QDir::toNativeSeparators(QStringLiteral("\\\\?\\")+destination.absoluteFilePath()).toWCharArray(filePath)]=L'\0'; - else - filePath[QDir::toNativeSeparators(destination.absoluteFilePath()).toWCharArray(filePath)]=L'\0'; - HANDLE hFileDestination = CreateFileW(filePath, GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL); - if(hFileDestination == INVALID_HANDLE_VALUE) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"open failed to write: "+QString::fromWCharArray(filePath).toStdString()+", error: "+std::to_string(GetLastError())); - return false; - } - FILETIME ftCreate, ftAccess, ftWrite; - ftCreate.dwLowDateTime=this->ftCreateL; - ftCreate.dwHighDateTime=this->ftCreateH; - ftAccess.dwLowDateTime=this->ftAccessL; - ftAccess.dwHighDateTime=this->ftAccessH; - ftWrite.dwLowDateTime=this->ftWriteL; - ftWrite.dwHighDateTime=this->ftWriteH; - if(!SetFileTime(hFileDestination, &ftCreate, &ftAccess, &ftWrite)) - { - CloseHandle(hFileDestination); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"unable to set the file time"); - return false; - } - CloseHandle(hFileDestination); - return true; - #endif - #else - return false; - #endif - #endif - return false; -} diff --git a/plugins/CopyEngine/Ultracopier/MkPath.h b/plugins/CopyEngine/Ultracopier/MkPath.h deleted file mode 100644 index 2bbebcc..0000000 --- a/plugins/CopyEngine/Ultracopier/MkPath.h +++ /dev/null @@ -1,106 +0,0 @@ -/** \file MkPath.h -\brief Make the path given as queued mkpath -\author alpha_one_x86 -\licence GPL3, see the file COPYING */ - -#ifndef MKPATH_H -#define MKPATH_H - -#include <QThread> -#include <QFileInfo> -#include <string> -#include <QSemaphore> -#include <vector> -#include <QDir> -#include <QDateTime> - -#include "Environment.h" - -#ifdef Q_OS_UNIX - #include <utime.h> - #include <time.h> - #include <unistd.h> - #include <sys/stat.h> -#else - #ifdef Q_OS_WIN32 - #ifdef ULTRACOPIER_PLUGIN_SET_TIME_UNIX_WAY - #include <utime.h> - #include <time.h> - #include <unistd.h> - #include <sys/stat.h> - #endif - #endif -#endif - -/// \brief Make the path given as queued mkpath -class MkPath : public QThread -{ - Q_OBJECT -public: - explicit MkPath(); - ~MkPath(); - /// \brief add path to make - void addPath(const QFileInfo& source,const QFileInfo& destination,const ActionType &actionType); - void setRightTransfer(const bool doRightTransfer); - void setKeepDate(const bool keepDate); -signals: - void errorOnFolder(const QFileInfo &,const std::string &,const ErrorType &errorType=ErrorType_FolderWithRety) const; - void firstFolderFinish(); - void internalStartAddPath(const QFileInfo& source,const QFileInfo& destination, const ActionType &actionType) const; - void internalStartDoThisPath() const; - void internalStartSkip() const; - void internalStartRetry() const; - void debugInformation(const Ultracopier::DebugLevel &level,const std::string &fonction,const std::string &text,const std::string &file,const int &ligne) const; -public slots: - /// \brief skip after creation error - void skip(); - /// \brief retry after creation error - void retry(); -private: - void run(); - bool waitAction; - bool stopIt; - bool skipIt; - QDateTime maxTime; - struct Item - { - QFileInfo source; - QFileInfo destination; - ActionType actionType; - }; - QList<Item> pathList; - void checkIfCanDoTheNext(); - QDir dir; - bool doRightTransfer; - bool keepDate; - bool doTheDateTransfer; - #ifdef Q_OS_UNIX - utimbuf butime; - #else - #ifdef Q_OS_WIN32 - #ifdef ULTRACOPIER_PLUGIN_SET_TIME_UNIX_WAY - utimbuf butime; - #else - uint64_t ftCreateL, ftAccessL, ftWriteL; - uint64_t ftCreateH, ftAccessH, ftWriteH; - std::regex regRead; - #endif - #endif - #endif - //fonction to edit the file date time - bool readFileDateTime(const QFileInfo &source); - bool writeFileDateTime(const QFileInfo &destination); - static std::string text_slash; -private slots: - void internalDoThisPath(); - void internalAddPath(const QFileInfo& source, const QFileInfo& destination,const ActionType &actionType); - void internalSkip(); - void internalRetry(); - bool rmpath(const QDir &dir - #ifdef ULTRACOPIER_PLUGIN_RSYNC - , const bool &toSync=false - #endif - ); -}; - -#endif // MKPATH_H diff --git a/plugins/CopyEngine/Ultracopier/README.md b/plugins/CopyEngine/Ultracopier/README.md deleted file mode 100644 index a15b943..0000000 --- a/plugins/CopyEngine/Ultracopier/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Copy Engine: Ultracopier - -This is the default copy engine. diff --git a/plugins/CopyEngine/Ultracopier/ReadThread.cpp b/plugins/CopyEngine/Ultracopier/ReadThread.cpp deleted file mode 100644 index 7bdb60c..0000000 --- a/plugins/CopyEngine/Ultracopier/ReadThread.cpp +++ /dev/null @@ -1,699 +0,0 @@ -#include "ReadThread.h" - -#ifdef Q_OS_LINUX -#include <fcntl.h> -#endif - -ReadThread::ReadThread() -{ - start(); - moveToThread(this); - stopIt=false; - putInPause=false; - blockSize=ULTRACOPIER_PLUGIN_DEFAULT_BLOCK_SIZE*1024; - setObjectName(QStringLiteral("read")); - #ifdef ULTRACOPIER_PLUGIN_DEBUG - stat=Idle; - #endif - isInReadLoop=false; - tryStartRead=false; - lastGoodPosition=0; - isOpen.release(); -} - -ReadThread::~ReadThread() -{ - stopIt=true; - //disconnect(this);//-> do into ~TransferThread() - #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT - waitNewClockForSpeed.release(); - #endif - pauseMutex.release(); - #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT - waitNewClockForSpeed.release(); - #endif - pauseMutex.release(); - //if(isOpen.available()<=0) - emit internalStartClose(); - isOpen.acquire(); - exit(); - wait(); -} - -void ReadThread::run() -{ - connect(this,&ReadThread::internalStartOpen, this,&ReadThread::internalOpenSlot, Qt::QueuedConnection); - connect(this,&ReadThread::internalStartReopen, this,&ReadThread::internalReopen, Qt::QueuedConnection); - connect(this,&ReadThread::internalStartRead, this,&ReadThread::internalRead, Qt::QueuedConnection); - connect(this,&ReadThread::internalStartClose, this,&ReadThread::internalCloseSlot, Qt::QueuedConnection); - connect(this,&ReadThread::checkIfIsWait, this,&ReadThread::isInWait, Qt::QueuedConnection); - connect(this,&ReadThread::internalStartChecksum, this,&ReadThread::checkSum, Qt::QueuedConnection); - exec(); -} - -void ReadThread::open(const QFileInfo &file, const Ultracopier::CopyMode &mode) -{ - if(!isRunning()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] the thread not running to open destination: "+file.absoluteFilePath().toStdString()); - errorString_internal=tr("Internal error, please report it!").toStdString(); - emit error(); - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] open source: "+file.absoluteFilePath().toStdString()); - if(this->file.isOpen()) - { - if(file.absoluteFilePath()==this->file.fileName()) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] Try reopen already opened same file: "+file.absoluteFilePath().toStdString()); - else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+"] previous file is already open: "+file.absoluteFilePath().toStdString()); - emit internalStartClose(); - isOpen.acquire(); - isOpen.release(); - } - if(isInReadLoop) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+"] previous file is already readding: "+file.absoluteFilePath().toStdString()); - return; - } - if(tryStartRead) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+"] previous file is already try read: "+file.absoluteFilePath().toStdString()); - return; - } - stopIt=false; - fakeMode=false; - lastGoodPosition=0; - this->file.setFileName(file.absoluteFilePath()); - this->mode=mode; - emit internalStartOpen(); -} - -std::string ReadThread::errorString() const -{ - return errorString_internal; -} - -void ReadThread::stop() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] stop()"); - stopIt=true; - pauseMutex.release(); - pauseMutex.release(); - #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT - waitNewClockForSpeed.release(); - #endif - if(isOpen.available()<=0) - emit internalStartClose(); -} - -void ReadThread::pause() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] try put read thread in pause"); - if(stopIt) - return; - pauseMutex.tryAcquire(pauseMutex.available()); - putInPause=true; -} - -void ReadThread::resume() -{ - if(putInPause) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start"); - putInPause=false; - stopIt=false; - } - else - return; - if(!file.isOpen()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] file is not open"); - return; - } - pauseMutex.release(); -} - -bool ReadThread::seek(const int64_t &position) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start with: "+std::to_string(position)); - if(position>file.size()) - return false; - return file.seek(position); -} - -int64_t ReadThread::size() const -{ - return file.size(); -} - -void ReadThread::postOperation() -{ - emit internalStartClose(); -} - -void ReadThread::checkSum() -{ - QByteArray blockArray; - QCryptographicHash hash(QCryptographicHash::Sha1); - isInReadLoop=true; - lastGoodPosition=0; - #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT - numberOfBlockCopied=0; - #endif - seek(0); - int sizeReaden=0; - do - { - //read one block - #ifdef ULTRACOPIER_PLUGIN_DEBUG - stat=Read; - #endif - if(putInPause) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"["+std::to_string(id)+"] read put in pause"); - if(stopIt) - return; - pauseMutex.acquire(); - if(stopIt) - return; - } - blockArray=file.read(blockSize); - #ifdef ULTRACOPIER_PLUGIN_DEBUG - stat=Idle; - #endif - - //can be smaller than min block size to do correct speed limitation - if(blockArray.size()>ULTRACOPIER_PLUGIN_MAX_BLOCK_SIZE*1024) - { - errorString_internal=tr("Internal error reading the source file:block size out of range").toStdString(); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] Internal error reading the source file:block size out of range"); - emit error(); - isInReadLoop=false; - return; - } - if(file.error()!=QFile::NoError) - { - errorString_internal=tr("Unable to read the source file: ").toStdString()+file.errorString().toStdString()+" ("+std::to_string(file.error())+")"; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+QStringLiteral("file.error()!=QFile::NoError: %1, error: ").arg(QString::number(file.error())).toStdString()+errorString_internal); - emit error(); - isInReadLoop=false; - return; - } - sizeReaden=blockArray.size(); - if(sizeReaden>0) - { - #ifdef ULTRACOPIER_PLUGIN_DEBUG - stat=Checksum; - #endif - hash.addData(blockArray); - #ifdef ULTRACOPIER_PLUGIN_DEBUG - stat=Idle; - #endif - - if(stopIt) - break; - - lastGoodPosition+=blockArray.size(); - - #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT - //wait for limitation speed if stop not query - if(multiForBigSpeed>0) - { - numberOfBlockCopied++; - if(numberOfBlockCopied>=multiForBigSpeed) - { - numberOfBlockCopied=0; - waitNewClockForSpeed.acquire(); - if(stopIt) - break; - } - } - #endif - } - } - while(sizeReaden>0 && !stopIt); - if(lastGoodPosition>file.size()) - { - errorString_internal=tr("File truncated during the read, possible data change").toStdString(); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+QStringLiteral("Source truncated during the read: %1 (%2)").arg(file.errorString()).arg(QString::number(file.error())).toStdString()); - emit error(); - isInReadLoop=false; - return; - } - isInReadLoop=false; - if(stopIt) - { - stopIt=false; - return; - } - emit checksumFinish(hash.result()); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] stop the read"); -} - -bool ReadThread::internalOpenSlot() -{ - return internalOpen(); -} - -bool ReadThread::internalOpen(bool resetLastGoodPosition) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] internalOpen source: "+file.fileName().toStdString()+", open in write because move: "+std::to_string(mode==Ultracopier::Move)); - if(stopIt) - { - emit closed(); - return false; - } - putInPause=false; - #ifdef ULTRACOPIER_PLUGIN_DEBUG - stat=InodeOperation; - #endif - if(file.isOpen()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] this file is already open: "+file.fileName().toStdString()); - #ifdef ULTRACOPIER_PLUGIN_DEBUG - stat=Idle; - #endif - emit closed(); - return false; - } - QIODevice::OpenMode openMode=QIODevice::ReadOnly; - /*can have permision to remove but not write - * if(mode==Ultracopier::Move) - openMode=QIODevice::ReadWrite;*/ - seekToZero=false; - if(file.open(openMode)) - { - if(stopIt) - { - file.close(); - emit closed(); - return false; - } - pauseMutex.tryAcquire(pauseMutex.available()); - #ifdef Q_OS_LINUX - const int intfd=file.handle(); - if(intfd!=-1) - { - posix_fadvise(intfd, 0, 0, POSIX_FADV_WILLNEED); - posix_fadvise(intfd, 0, 0, POSIX_FADV_SEQUENTIAL); - } - #endif - if(stopIt) - { - file.close(); - emit closed(); - return false; - } - size_at_open=file.size(); - mtime_at_open=QFileInfo(file).lastModified().toMSecsSinceEpoch()/1000; - putInPause=false; - if(resetLastGoodPosition) - lastGoodPosition=0; - if(!seek(lastGoodPosition)) - { - file.close(); - errorString_internal=file.errorString().toStdString(); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+QStringLiteral("Unable to seek after open: %1, error: %2").arg(file.fileName()).toStdString()+errorString_internal); - emit error(); - #ifdef ULTRACOPIER_PLUGIN_DEBUG - stat=Idle; - #endif - return false; - } - isOpen.acquire(); - emit opened(); - #ifdef ULTRACOPIER_PLUGIN_DEBUG - stat=Idle; - #endif - return true; - } - else - { - errorString_internal=file.errorString().toStdString(); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+QStringLiteral("Unable to open: %1, error: ").arg(file.fileName()).toStdString()+errorString_internal); - emit error(); - #ifdef ULTRACOPIER_PLUGIN_DEBUG - stat=Idle; - #endif - return false; - } -} - -void ReadThread::internalRead() -{ - isInReadLoop=true; - tryStartRead=false; - if(stopIt) - { - if(seekToZero && file.isOpen()) - { - stopIt=false; - lastGoodPosition=0; - file.seek(0); - } - else - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] stopIt == true, then quit"); - isInReadLoop=false; - internalClose(); - return; - } - } - #ifdef ULTRACOPIER_PLUGIN_DEBUG - stat=InodeOperation; - #endif - int sizeReaden=0; - if(!file.isOpen()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] is not open!"); - isInReadLoop=false; - return; - } - QByteArray blockArray; - #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT - numberOfBlockCopied=0; - #endif - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start the copy"); - emit readIsStarted(); - #ifdef ULTRACOPIER_PLUGIN_DEBUG - stat=Idle; - #endif - if(stopIt) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] stopIt == true, then quit"); - isInReadLoop=false; - internalClose(); - return; - } - do - { - //read one block - if(putInPause) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"["+std::to_string(id)+"] read put in pause"); - if(stopIt) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] stopIt == true, then quit"); - isInReadLoop=false; - internalClose(); - return; - } - pauseMutex.acquire(); - if(stopIt) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] stopIt == true, then quit"); - isInReadLoop=false; - internalClose(); - return; - } - } - #ifdef ULTRACOPIER_PLUGIN_DEBUG - stat=Read; - #endif - blockArray=file.read(blockSize); - #ifdef ULTRACOPIER_PLUGIN_DEBUG - stat=Idle; - #endif - - if(file.error()!=QFile::NoError) - { - errorString_internal=tr("Unable to read the source file: ").toStdString()+file.errorString().toStdString()+" ("+std::to_string(file.error())+")"; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+QStringLiteral("file.error()!=QFile::NoError: %1, error: ").arg(QString::number(file.error())).toStdString()+errorString_internal); - isInReadLoop=false; - emit error(); - return; - } - sizeReaden=blockArray.size(); - if(sizeReaden>0) - { - #ifdef ULTRACOPIER_PLUGIN_DEBUG - stat=WaitWritePipe; - #endif - if(!writeThread->write(blockArray))//speed limitation here - { - if(!stopIt) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] stopped because the write is stopped: "+std::to_string(lastGoodPosition)); - stopIt=true; - } - } - - #ifdef ULTRACOPIER_PLUGIN_DEBUG - stat=Idle; - #endif - - if(stopIt) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] stopIt == true, then quit"); - isInReadLoop=false; - internalClose();//need re-open the destination and then the source - return; - } - lastGoodPosition+=blockArray.size(); - } - /* - if(lastGoodPosition>16*1024) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("[")+QString::number(id)+QStringLiteral("] ")+QStringLiteral("Test error in reading: %1 (%2)").arg(file.errorString()).arg(file.error())); - errorString_internal=QStringLiteral("Test error in reading: %1 (%2)").arg(file.errorString()).arg(file.error()); - isInReadLoop=false; - emit error(); - return; - } - */ - } - while(sizeReaden>0 && !stopIt); - if(lastGoodPosition>file.size()) - { - errorString_internal=tr("File truncated during the read, possible data change").toStdString(); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+QStringLiteral("Source truncated during the read: %1 (%2)").arg(file.errorString()).arg(QString::number(file.error())).toStdString()); - isInReadLoop=false; - emit error(); - return; - } - isInReadLoop=false; - if(stopIt) - { - stopIt=false; - return; - } - emit readIsStopped();//will product by signal connection writeThread->endIsDetected(); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] stop the read"); -} - -void ReadThread::startRead() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start"); - if(tryStartRead) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] already in try start"); - return; - } - if(isInReadLoop) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] double event dropped"); - else - { - tryStartRead=true; - emit internalStartRead(); - } -} - -void ReadThread::internalCloseSlot() -{ - internalClose(); -} - -void ReadThread::internalClose(bool callByTheDestructor) -{ - /// \note never send signal here, because it's called by the destructor - //ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("[")+QString::number(id)+QStringLiteral("] start")); - bool closeTheFile=false; - if(!fakeMode) - { - if(file.isOpen()) - { - closeTheFile=true; - file.close(); - isInReadLoop=false; - } - } - if(!callByTheDestructor) - emit closed(); - - /// \note always the last of this function - if(closeTheFile) - isOpen.release(); -} - -/** \brief set block size -\param block the new block size in B -\return Return true if succes */ -bool ReadThread::setBlockSize(const int blockSize) -{ - //can be smaller than min block size to do correct speed limitation - if(blockSize>1 && blockSize<ULTRACOPIER_PLUGIN_MAX_BLOCK_SIZE*1024) - { - this->blockSize=blockSize; - //set the new max speed because the timer have changed - return true; - } - else - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"block size out of range: "+std::to_string(blockSize)); - return false; - } -} - -#ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT -/*! \brief Set the max speed -\param tempMaxSpeed Set the max speed in KB/s, 0 for no limit */ -void ReadThread::setMultiForBigSpeed(const int &multiForBigSpeed) -{ - this->multiForBigSpeed=multiForBigSpeed; - waitNewClockForSpeed.release(); -} - -/// \brief For give timer every X ms -void ReadThread::timeOfTheBlockCopyFinished() -{ - /* this is the old way to limit the speed, it product blocking - *if(waitNewClockForSpeed.available()<ULTRACOPIER_PLUGIN_NUMSEMSPEEDMANAGEMENT) - waitNewClockForSpeed.release();*/ - - //try this new way: - /* only if speed limited, else will accumulate waitNewClockForSpeed - * Disabled because: Stop call of this method when no speed limit - if(this->maxSpeed>0)*/ - if(waitNewClockForSpeed.available()<=1) - waitNewClockForSpeed.release(); -} -#endif - -/// \brief do the fake open -void ReadThread::fakeOpen() -{ - fakeMode=true; - emit opened(); -} - -/// \brief do the fake writeIsStarted -void ReadThread::fakeReadIsStarted() -{ - emit readIsStarted(); -} - -/// \brief do the fake writeIsStopped -void ReadThread::fakeReadIsStopped() -{ - emit readIsStopped(); -} - -/// do the checksum -void ReadThread::startCheckSum() -{ - emit internalStartChecksum(); -} - -int64_t ReadThread::getLastGoodPosition() const -{ - /*if(lastGoodPosition>file.size()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,QStringLiteral("[")+QString::number(id)+QStringLiteral("] Bug, the lastGoodPosition is greater than the file size!")); - return file.size(); - } - else*/ - return lastGoodPosition; -} - -//reopen after an error -void ReadThread::reopen() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start"); - if(isInReadLoop) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] try reopen where read is not finish"); - return; - } - stopIt=true; - emit internalStartReopen(); -} - -bool ReadThread::internalReopen() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start"); - stopIt=false; - if(file.isOpen()) - { - file.close(); - isOpen.release(); - } - if(size_at_open!=file.size() && mtime_at_open!=(uint64_t)QFileInfo(file).lastModified().toMSecsSinceEpoch()/1000) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] source file have changed since the last open, restart all"); - //fix this function like the close function - if(internalOpen(true)) - { - emit resumeAfterErrorByRestartAll(); - return true; - } - else - return false; - } - else - { - //fix this function like the close function - if(internalOpen(false)) - { - emit resumeAfterErrorByRestartAtTheLastPosition(); - return true; - } - else - return false; - } -} - -//set the write thread -void ReadThread::setWriteThread(WriteThread * writeThread) -{ - this->writeThread=writeThread; -} - -#ifdef ULTRACOPIER_PLUGIN_DEBUG -//to set the id -void ReadThread::setId(int id) -{ - this->id=id; -} -#endif - -void ReadThread::seekToZeroAndWait() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start"); - stopIt=true; - seekToZero=true; - emit checkIfIsWait(); -} - -void ReadThread::isInWait() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start"); - if(seekToZero) - { - stopIt=false; - seekToZero=false; - if(file.isOpen()) - { - lastGoodPosition=0; - seek(0); - } - else - internalOpen(true); - emit isSeekToZeroAndWait(); - } -} - -bool ReadThread::isReading() const -{ - return isInReadLoop; -} - diff --git a/plugins/CopyEngine/Ultracopier/ReadThread.h b/plugins/CopyEngine/Ultracopier/ReadThread.h deleted file mode 100644 index f817e35..0000000 --- a/plugins/CopyEngine/Ultracopier/ReadThread.h +++ /dev/null @@ -1,147 +0,0 @@ -/** \file ReadThread.h -\brief Thread changed to open/close and read the source file -\author alpha_one_x86 -\licence GPL3, see the file COPYING */ - -#ifndef READTHREAD_H -#define READTHREAD_H - -#include <QThread> -#include <QByteArray> -#include <QSemaphore> -#include <QDateTime> -#include <QFileInfo> -#include <QCryptographicHash> - -#include "WriteThread.h" -#include "Environment.h" -#include "StructEnumDefinition_CopyEngine.h" -#include "AvancedQFile.h" - -/// \brief Thread changed to open/close and read the source file -class ReadThread : public QThread -{ - Q_OBJECT -public: - explicit ReadThread(); - ~ReadThread(); -protected: - void run(); -public: - /// \brief open with the name and copy mode - void open(const QFileInfo &file, const Ultracopier::CopyMode &mode); - /// \brief return the error string - std::string errorString() const; - //QByteArray read(qint64 position,qint64 maxSize); - /// \brief stop the copy - void stop(); - /// \brief put the copy in pause - void pause(); - /// \brief resume the copy - void resume(); - /// \brief get the size of the source file - int64_t size() const; - /// \brief get the last good position - int64_t getLastGoodPosition() const; - /// \brief start the reading of the source file - void startRead(); - #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT - /// \brief set the current max speed in KB/s - void setMultiForBigSpeed(const int &multiForBigSpeed); - #endif - /// \brief set block size in KB - bool setBlockSize(const int blockSize); - /// \brief reopen after an error - void reopen(); - /// \brief set the write thread - void setWriteThread(WriteThread * writeThread); - #ifdef ULTRACOPIER_PLUGIN_DEBUG - /// \brief to set the id - void setId(int id); - /// \brief stat - enum ReadStat - { - Idle=0, - InodeOperation=1, - Read=2, - WaitWritePipe=3, - Checksum=4 - }; - ReadStat stat; - #endif - /// \brief return if it's reading - bool isReading() const; - #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT - /// \brief executed at regular interval to do a speed throling - void timeOfTheBlockCopyFinished(); - #endif - /// \brief do the fake open - void fakeOpen(); - /// \brief do the fake readIsStarted - void fakeReadIsStarted(); - /// \brief do the fake readIsStopped - void fakeReadIsStopped(); - /// do the checksum - void startCheckSum(); -public slots: - /// \brief to reset the copy, and put at the same state when it just open - void seekToZeroAndWait(); - void postOperation(); - /// do the checksum - void checkSum(); -signals: - void error() const; - void opened() const; - void readIsStarted() const; - void readIsStopped() const; - void closed() const; - void isSeekToZeroAndWait() const; - void checkIfIsWait() const; - void resumeAfterErrorByRestartAll() const; - void resumeAfterErrorByRestartAtTheLastPosition() const; - void checksumFinish(const QByteArray&) const; - // internal signals - void internalStartOpen() const; - void internalStartChecksum() const; - void internalStartReopen() const; - void internalStartRead() const; - void internalStartClose() const; - /// \brief To debug source - void debugInformation(const Ultracopier::DebugLevel &level,std::string fonction,std::string text,std::string file,int ligne) const; - -private: - std::string errorString_internal; - AvancedQFile file; - volatile bool stopIt; - Ultracopier::CopyMode mode; - int64_t lastGoodPosition; - volatile int blockSize;//in Bytes - #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT - QSemaphore waitNewClockForSpeed; - volatile int numberOfBlockCopied; ///< Multiple for count the number of block copied - volatile int multiForBigSpeed; ///< Multiple for count the number of block needed - #endif - WriteThread* writeThread; - int id; - QSemaphore isOpen; - QSemaphore pauseMutex; - volatile bool putInPause; - volatile bool isInReadLoop; - volatile bool seekToZero; - volatile bool tryStartRead; - int64_t size_at_open; - uint64_t mtime_at_open; - bool fakeMode; - //internal function - bool seek(const int64_t &position);/// \todo search if is use full -private slots: - bool internalOpen(bool resetLastGoodPosition=true); - bool internalOpenSlot(); - bool internalReopen(); - void internalRead(); - void internalClose(bool callByTheDestructor=false); - void internalCloseSlot(); - void isInWait(); -}; - -#endif // READTHREAD_H diff --git a/plugins/CopyEngine/Ultracopier/RenamingRules.cpp b/plugins/CopyEngine/Ultracopier/RenamingRules.cpp deleted file mode 100644 index 4ae23b8..0000000 --- a/plugins/CopyEngine/Ultracopier/RenamingRules.cpp +++ /dev/null @@ -1,85 +0,0 @@ -#include "RenamingRules.h" -#include "ui_RenamingRules.h" - -#include <QMessageBox> - -RenamingRules::RenamingRules(QWidget *parent) : - QDialog(parent), - ui(new Ui::RenamingRules) -{ - ui->setupUi(this); - connectUI(); - setRenamingRules("",""); -} - -RenamingRules::~RenamingRules() -{ - delete ui; -} - -void RenamingRules::on_buttonBox_clicked(QAbstractButton *button) -{ - if(ui->buttonBox->buttonRole(button)==QDialogButtonBox::RejectRole) - reject(); - if(ui->buttonBox->buttonRole(button)==QDialogButtonBox::ResetRole) - { - setRenamingRules("",""); - emit sendNewRenamingRules(firstRenamingRule,otherRenamingRule); - } -} - -void RenamingRules::setRenamingRules(std::string firstRenamingRule,std::string otherRenamingRule) -{ - disconnectUI(); - this->firstRenamingRule=firstRenamingRule; - this->otherRenamingRule=otherRenamingRule; - if(!firstRenamingRule.empty()) - ui->firstRenamingRule->setText(QString::fromStdString(firstRenamingRule)); - else - ui->firstRenamingRule->setText(tr("%1 - copy").arg(QStringLiteral("%name%"))); - if(!otherRenamingRule.empty()) - ui->otherRenamingRule->setText(QString::fromStdString(otherRenamingRule)); - else - ui->otherRenamingRule->setText(tr("%1 - copy (%2)").arg(QStringLiteral("%name%")).arg(QStringLiteral("%number%"))); - connectUI(); -} - -void RenamingRules::connectUI() -{ - connect(ui->firstRenamingRule,&QLineEdit::editingFinished,this,&RenamingRules::firstRenamingRule_haveChanged); - connect(ui->otherRenamingRule,&QLineEdit::editingFinished,this,&RenamingRules::otherRenamingRule_haveChanged); -} - -void RenamingRules::disconnectUI() -{ - disconnect(ui->firstRenamingRule,&QLineEdit::editingFinished,this,&RenamingRules::firstRenamingRule_haveChanged); - disconnect(ui->otherRenamingRule,&QLineEdit::editingFinished,this,&RenamingRules::otherRenamingRule_haveChanged); -} - -void RenamingRules::firstRenamingRule_haveChanged() -{ - QString newValue=ui->firstRenamingRule->text(); - if(newValue==tr("%1 - copy").arg(QStringLiteral("%name%"))) - newValue=QStringLiteral(""); - if(newValue.toStdString()==firstRenamingRule) - return; - firstRenamingRule=newValue.toStdString(); - emit sendNewRenamingRules(firstRenamingRule,otherRenamingRule); -} - -void RenamingRules::otherRenamingRule_haveChanged() -{ - QString newValue=ui->otherRenamingRule->text(); - if(newValue==tr("%1 - copy (%2)").arg(QStringLiteral("%name%")).arg(QStringLiteral("%number%"))) - newValue=QStringLiteral(""); - if(newValue.toStdString()==otherRenamingRule) - return; - otherRenamingRule=newValue.toStdString(); - emit sendNewRenamingRules(firstRenamingRule,otherRenamingRule); -} - -void RenamingRules::newLanguageLoaded() -{ - ui->retranslateUi(this); - setRenamingRules(firstRenamingRule,otherRenamingRule); -} diff --git a/plugins/CopyEngine/Ultracopier/RenamingRules.h b/plugins/CopyEngine/Ultracopier/RenamingRules.h deleted file mode 100644 index b2e9d02..0000000 --- a/plugins/CopyEngine/Ultracopier/RenamingRules.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef RENAMINGRULES_H -#define RENAMINGRULES_H - -#include <QDialog> -#include <QAbstractButton> - -namespace Ui { -class RenamingRules; -} - -/** Define rules for renaming */ -class RenamingRules : public QDialog -{ - Q_OBJECT -public: - explicit RenamingRules(QWidget *parent = 0); - ~RenamingRules(); - void setRenamingRules(std::string firstRenamingRule, std::string otherRenamingRule); - void newLanguageLoaded(); -private: - Ui::RenamingRules *ui; - void connectUI(); - void disconnectUI(); - std::string firstRenamingRule; - std::string otherRenamingRule; -private slots: - void on_buttonBox_clicked(QAbstractButton *button); - void firstRenamingRule_haveChanged(); - void otherRenamingRule_haveChanged(); -signals: - void sendNewRenamingRules(std::string firstRenamingRule,std::string otherRenamingRule) const; -}; - -#endif // RENAMINGRULES_H diff --git a/plugins/CopyEngine/Ultracopier/RenamingRules.ui b/plugins/CopyEngine/Ultracopier/RenamingRules.ui deleted file mode 100644 index 0219249..0000000 --- a/plugins/CopyEngine/Ultracopier/RenamingRules.ui +++ /dev/null @@ -1,134 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>RenamingRules</class> - <widget class="QDialog" name="RenamingRules"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>491</width> - <height>293</height> - </rect> - </property> - <property name="windowTitle"> - <string>Renaming rules</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_3"> - <property name="spacing"> - <number>2</number> - </property> - <property name="leftMargin"> - <number>2</number> - </property> - <property name="topMargin"> - <number>2</number> - </property> - <property name="rightMargin"> - <number>2</number> - </property> - <property name="bottomMargin"> - <number>2</number> - </property> - <item> - <widget class="QGroupBox" name="groupBox"> - <property name="title"> - <string>First renaming</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <widget class="QLineEdit" name="firstRenamingRule"> - <property name="placeholderText"> - <string extracomment="%name% should not be translated">%name% - copy%suffix%</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="groupBox_2"> - <property name="title"> - <string>Second renaming</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_2"> - <item> - <widget class="QLineEdit" name="otherRenamingRule"> - <property name="placeholderText"> - <string extracomment="%name%, %number% should not be translated">%name% - copy (%number%)%suffix%</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QLabel" name="label_4"> - <property name="text"> - <string extracomment="%name%, %number% should not be translated"><html><head/><body><p>Variables: <span style=" font-weight:600;">%name%</span> for the original file name, <span style=" font-weight:600;">%number%</span> for the extra number, <span style=" font-weight:600;">%suffix%</span> file suffix</p></body></html></string> - </property> - <property name="wordWrap"> - <bool>true</bool> - </property> - </widget> - </item> - <item> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>1</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QDialogButtonBox" name="buttonBox"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="standardButtons"> - <set>QDialogButtonBox::Close|QDialogButtonBox::RestoreDefaults</set> - </property> - </widget> - </item> - </layout> - </widget> - <resources/> - <connections> - <connection> - <sender>buttonBox</sender> - <signal>accepted()</signal> - <receiver>RenamingRules</receiver> - <slot>accept()</slot> - <hints> - <hint type="sourcelabel"> - <x>248</x> - <y>254</y> - </hint> - <hint type="destinationlabel"> - <x>157</x> - <y>274</y> - </hint> - </hints> - </connection> - <connection> - <sender>buttonBox</sender> - <signal>rejected()</signal> - <receiver>RenamingRules</receiver> - <slot>reject()</slot> - <hints> - <hint type="sourcelabel"> - <x>316</x> - <y>260</y> - </hint> - <hint type="destinationlabel"> - <x>286</x> - <y>274</y> - </hint> - </hints> - </connection> - </connections> -</ui> 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(); -} diff --git a/plugins/CopyEngine/Ultracopier/ScanFileOrFolder.h b/plugins/CopyEngine/Ultracopier/ScanFileOrFolder.h deleted file mode 100644 index 0c625e9..0000000 --- a/plugins/CopyEngine/Ultracopier/ScanFileOrFolder.h +++ /dev/null @@ -1,108 +0,0 @@ -/** \file scanFileOrFolder.h -\brief Thread changed to list recursively the folder -\author alpha_one_x86 -\licence GPL3, see the file COPYING */ - -#include <QThread> -#include <QFileInfo> -#include <QDir> -#include <QSemaphore> -#include <QEventLoop> -#include <QCoreApplication> -#include <QMutexLocker> -#include <regex> -#include <string> -#include <vector> - -#include "Environment.h" -#include "DriveManagement.h" - -#ifndef SCANFILEORFOLDER_H -#define SCANFILEORFOLDER_H - -/// \brief Thread changed to list recursively the folder -class ScanFileOrFolder : public QThread -{ - Q_OBJECT -public: - explicit ScanFileOrFolder(const Ultracopier::CopyMode &mode); - ~ScanFileOrFolder(); - /// \brief to the a folder listing - void stop(); - /// \brief to get if is finished - bool isFinished() const; - /// \brief set action if Folder are same or exists - void setFolderExistsAction(const FolderExistsAction &action, const std::string &newName=""); - /// \brief set action if error - void setFolderErrorAction(const FileErrorAction &action); - /// \brief set if need check if the destination exists - void setCheckDestinationFolderExists(const bool checkDestinationFolderExists); - void setRenamingRules(const std::string &firstRenamingRule,const std::string &otherRenamingRule); - void setMoveTheWholeFolder(const bool &moveTheWholeFolder); - #ifdef ULTRACOPIER_PLUGIN_RSYNC - void setRsync(const bool rsync); - #endif -signals: - void fileTransfer(const QFileInfo &source,const QFileInfo &destination,const Ultracopier::CopyMode &mode) const; - /// \brief To debug source - void debugInformation(const Ultracopier::DebugLevel &level,const std::string &fonction,const std::string &text,const std::string &file,const int &ligne) const; - void folderAlreadyExists(const QFileInfo &source,const QFileInfo &destination,const bool &isSame) const; - void errorOnFolder(const QFileInfo &fileInfo,const std::string &errorString,const ErrorType &errorType=ErrorType_FolderWithRety) const; - void finishedTheListing() const; - - void newFolderListing(const std::string &path) const; - void addToMkPath(const QFileInfo& source,const QFileInfo& destination, const int& inode) const; - void addToMovePath(const QFileInfo& source,const QFileInfo& destination, const int& inodeToRemove) const; - void addToRealMove(const QFileInfo& source,const QFileInfo& destination) const; - #ifdef ULTRACOPIER_PLUGIN_RSYNC - void addToRmForRsync(const QFileInfo& destination) const; - #endif -public slots: - void addToList(const std::vector<std::string>& sources,const std::string& destination); - void setFilters(const std::vector<Filters_rules> &include,const std::vector<Filters_rules> &exclude); - void setCopyListOrder(const bool &order); - void set_updateMount(); -protected: - void run(); -private: - DriveManagement driveManagement; - bool moveTheWholeFolder; - std::vector<std::string> sources; - std::string destination; - volatile bool stopIt; - void listFolder(QFileInfo source, QFileInfo destination); - bool isBlackListed(const QFileInfo &destination); - QFileInfo resolvDestination(const QFileInfo &destination); - volatile bool stopped; - QSemaphore waitOneAction; - FolderExistsAction folderExistsAction; - FileErrorAction fileErrorAction; - volatile bool checkDestinationExists; - std::string newName; - bool copyListOrder; - std::regex folder_isolation; - #ifdef ULTRACOPIER_PLUGIN_RSYNC - bool rsync; - #endif - Ultracopier::CopyMode mode; - std::vector<Filters_rules> include,exclude; - std::vector<Filters_rules> include_send,exclude_send; - bool reloadTheNewFilters; - bool haveFilters; - QMutex filtersMutex; - std::string firstRenamingRule; - std::string otherRenamingRule; - std::vector<std::string> blackList; - /** Parse the multiple wildcard source, it allow resolv multiple wildcard with Qt into their path - * The string: /toto/f*a/yy*a/toto.mp3 - * Will give: /toto/f1a/yy*a/toto.mp3, /toto/f2a/yy*a/toto.mp3 - * Will give: /toto/f2a/yy1a/toto.mp3, /toto/f2a/yy2a/toto.mp3 - */ - std::vector<std::string> parseWildcardSources(const std::vector<std::string> &sources) const; - - static std::string text_slash; - static std::string text_antislash; - static std::string text_dot; -}; - -#endif // SCANFILEORFOLDER_H diff --git a/plugins/CopyEngine/Ultracopier/StructEnumDefinition.h b/plugins/CopyEngine/Ultracopier/StructEnumDefinition.h deleted file mode 100644 index c1758f4..0000000 --- a/plugins/CopyEngine/Ultracopier/StructEnumDefinition.h +++ /dev/null @@ -1 +0,0 @@ -#include "../../../StructEnumDefinition.h" diff --git a/plugins/CopyEngine/Ultracopier/StructEnumDefinition_CopyEngine.h b/plugins/CopyEngine/Ultracopier/StructEnumDefinition_CopyEngine.h deleted file mode 100644 index 036803c..0000000 --- a/plugins/CopyEngine/Ultracopier/StructEnumDefinition_CopyEngine.h +++ /dev/null @@ -1,124 +0,0 @@ -/** \file StructEnumDefinition_CopyEngine.h -\brief Define the structure and enumeration used in the copy engine -\author alpha_one_x86 -\licence GPL3, see the file COPYING */ - -#include <string> -#include <regex> - -#ifndef STRUCTDEF_COPYENGINE_H -#define STRUCTDEF_COPYENGINE_H - -/// \brief Define action if file exists -enum FileExistsAction -{ - FileExists_NotSet=0, - FileExists_Cancel=1, - FileExists_Skip=2, - FileExists_Overwrite=3, - FileExists_OverwriteIfNotSame=4, - FileExists_OverwriteIfNewer=5, - FileExists_OverwriteIfOlder=6, - FileExists_Rename=7 -}; - -/// \brief Define action if file error -enum FileErrorAction -{ - FileError_NotSet=1, - FileError_Cancel=2, - FileError_Skip=3, - FileError_Retry=4, - FileError_PutToEndOfTheList=5 -}; - -enum TransferAlgorithm -{ - TransferAlgorithm_Automatic=0, - TransferAlgorithm_Sequential=1, - TransferAlgorithm_Parallel=2 -}; - -/// \brief to have the transfer status -enum TransferStat -{ - TransferStat_Idle=0, - TransferStat_PreOperation=1, - TransferStat_WaitForTheTransfer=2, - TransferStat_Transfer=3, - TransferStat_Checksum=4, - TransferStat_PostTransfer=5, - TransferStat_PostOperation=6 -}; - -/// \brief Define overwrite mode -/*enum OverwriteMode -{ - OverwriteMode_None, - OverwriteMode_Overwrite, - OverwriteMode_OverwriteIfNewer, - OverwriteMode_OverwriteIfNotSameModificationDate -};*/ - -/// \brief Define action if file exists -enum FolderExistsAction -{ - FolderExists_NotSet=0, - FolderExists_Cancel=1, - FolderExists_Merge=2, - FolderExists_Skip=3, - FolderExists_Rename=4 -}; - -enum ErrorType -{ - ErrorType_Normal=0, - ErrorType_Folder=1, - ErrorType_FolderWithRety=2, - ErrorType_Rights=3 -}; - -enum SearchType -{ - SearchType_rawText=0, - SearchType_simpleRegex=1, - SearchType_perlRegex=2 -}; - -enum ApplyOn -{ - ApplyOn_file=0, - ApplyOn_fileAndFolder=1, - ApplyOn_folder=2 -}; - -/** to store into different way the filter rules to be exported */ -struct Filters_rules -{ - std::string search_text; - SearchType search_type; - ApplyOn apply_on; - bool need_match_all; - std::regex regex; -}; - -/// \brief get action type -enum ActionType -{ - ActionType_MkPath=1, - ActionType_MovePath=2, - ActionType_RealMove=3 - #ifdef ULTRACOPIER_PLUGIN_RSYNC - , - ActionType_RmSync=4 - #endif -}; - -struct Diskspace -{ - std::string drive; - uint64_t requiredSpace; - uint64_t freeSpace; -}; - -#endif // STRUCTDEF_COPYENGINE_H diff --git a/plugins/CopyEngine/Ultracopier/TransferThread.cpp b/plugins/CopyEngine/Ultracopier/TransferThread.cpp deleted file mode 100644 index 210c221..0000000 --- a/plugins/CopyEngine/Ultracopier/TransferThread.cpp +++ /dev/null @@ -1,2101 +0,0 @@ -//presume bug linked as multple paralelle inode to resume after "overwrite" -//then do overwrite node function to not re-set the file name - -#include "TransferThread.h" -#ifdef Q_OS_WIN32 -#include <windows.h> -#endif - -#ifdef Q_OS_WIN32 - #ifndef ULTRACOPIER_PLUGIN_SET_TIME_UNIX_WAY - #ifndef NOMINMAX - #define NOMINMAX - #endif - #include <windows.h> - #endif -#endif - -#ifdef Q_OS_WIN32 -#define CURRENTSEPARATOR "\\" -#else -#define CURRENTSEPARATOR "/" -#endif - -#include "../../../cpp11addition.h" - -TransferThread::TransferThread() : - haveStartTime (false), - transfer_stat (TransferStat_Idle), - doRightTransfer (false), - #ifdef ULTRACOPIER_PLUGIN_RSYNC - rsync (false), - #endif - stopIt (false), - fileExistsAction (FileExists_NotSet), - alwaysDoFileExistsAction (FileExists_NotSet), - needSkip (false), - needRemove (false), - deletePartiallyTransferredFiles (true), - writeError (false), - readError (false), - renameTheOriginalDestination (false), - havePermission (false) -{ - start(); - moveToThread(this); - readThread.setWriteThread(&writeThread); - source.setCaching(false); - destination.setCaching(false); - renameRegex=std::regex("^(.*)(\\.[a-zA-Z0-9]+)$"); - #ifdef Q_OS_WIN32 - #ifndef ULTRACOPIER_PLUGIN_SET_TIME_UNIX_WAY - regRead=std::regex("^[a-zA-Z]:"); - #endif - #endif - - minTime=QDateTime(QDate(ULTRACOPIER_PLUGIN_MINIMALYEAR,1,1)); -} - -TransferThread::~TransferThread() -{ - stopIt=true; - readThread.exit(); - readThread.wait(); - writeThread.exit(); - writeThread.wait(); - exit(); - //else cash without this disconnect - //disconnect(&readThread); - //disconnect(&writeThread); - wait(); -} - -void TransferThread::run() -{ - //ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+QStringLiteral("] start: ")+QString::number((qint64)QThread::currentThreadId()))); - transfer_stat = TransferStat_Idle; - stopIt = false; - fileExistsAction = FileExists_NotSet; - alwaysDoFileExistsAction= FileExists_NotSet; - //the error push - connect(&readThread,&ReadThread::error, this, &TransferThread::getReadError, Qt::QueuedConnection); - connect(&writeThread,&WriteThread::error, this, &TransferThread::getWriteError, Qt::QueuedConnection); - //the thread change operation - connect(this,&TransferThread::internalStartPreOperation, this, &TransferThread::preOperation, Qt::QueuedConnection); - connect(this,&TransferThread::internalStartPostOperation, this, &TransferThread::postOperation, Qt::QueuedConnection); - //the state change operation - connect(&readThread,&ReadThread::opened, this, &TransferThread::readIsReady, Qt::QueuedConnection); - connect(&writeThread,&WriteThread::opened, this, &TransferThread::writeIsReady, Qt::QueuedConnection); - connect(&readThread,&ReadThread::readIsStopped, this, &TransferThread::readIsStopped, Qt::QueuedConnection); - connect(&writeThread,&WriteThread::writeIsStopped, this, &TransferThread::writeIsStopped, Qt::QueuedConnection); - connect(&readThread,&ReadThread::readIsStopped, &writeThread, &WriteThread::endIsDetected, Qt::QueuedConnection); - connect(&readThread,&ReadThread::closed, this, &TransferThread::readIsClosed, Qt::QueuedConnection); - connect(&writeThread,&WriteThread::closed, this, &TransferThread::writeIsClosed, Qt::QueuedConnection); - connect(&writeThread,&WriteThread::reopened, this, &TransferThread::writeThreadIsReopened, Qt::QueuedConnection); - connect(&readThread,&ReadThread::checksumFinish, this, &TransferThread::readChecksumFinish, Qt::QueuedConnection); - connect(&writeThread,&WriteThread::checksumFinish, this, &TransferThread::writeChecksumFinish, Qt::QueuedConnection); - //error management - connect(&readThread,&ReadThread::isSeekToZeroAndWait, this, &TransferThread::readThreadIsSeekToZeroAndWait, Qt::QueuedConnection); - connect(&readThread,&ReadThread::resumeAfterErrorByRestartAtTheLastPosition,this, &TransferThread::readThreadResumeAfterError, Qt::QueuedConnection); - connect(&readThread,&ReadThread::resumeAfterErrorByRestartAll,&writeThread, &WriteThread::flushAndSeekToZero, Qt::QueuedConnection); - connect(&writeThread,&WriteThread::flushedAndSeekedToZero, this, &TransferThread::readThreadResumeAfterError, Qt::QueuedConnection); - connect(this,&TransferThread::internalTryStartTheTransfer, this, &TransferThread::internalStartTheTransfer, Qt::QueuedConnection); - - #ifdef ULTRACOPIER_PLUGIN_DEBUG - connect(&readThread,&ReadThread::debugInformation, this, &TransferThread::debugInformation, Qt::QueuedConnection); - connect(&writeThread,&WriteThread::debugInformation, this, &TransferThread::debugInformation, Qt::QueuedConnection); - connect(&driveManagement,&DriveManagement::debugInformation,this, &TransferThread::debugInformation, Qt::QueuedConnection); - #endif - - exec(); -} - -TransferStat TransferThread::getStat() const -{ - return transfer_stat; -} - -void TransferThread::startTheTransfer() -{ - emit internalTryStartTheTransfer(); -} - -void TransferThread::internalStartTheTransfer() -{ - if(transfer_stat==TransferStat_Idle) - { - if(mode!=Ultracopier::Move) - { - /// \bug can pass here because in case of direct move on same media, it return to idle stat directly - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+("] can't start transfert at idle")); - } - return; - } - if(transfer_stat==TransferStat_PostOperation) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+("] can't start transfert at PostOperation")); - return; - } - if(transfer_stat==TransferStat_Transfer) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+("] can't start transfert at Transfer")); - return; - } - if(canStartTransfer) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+("] canStartTransfer is already set to true")); - return; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+("] check how start the transfer")); - canStartTransfer=true; - if(readIsReadyVariable && writeIsReadyVariable) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+("] start directly the transfer")); - ifCanStartTransfer(); - } - else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+("] start the transfer as delayed")); -} - -bool TransferThread::setFiles(const QFileInfo& source, const int64_t &size, const QFileInfo& destination, const Ultracopier::CopyMode &mode) -{ - if(transfer_stat!=TransferStat_Idle) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+("] already used, source: ")+source.absoluteFilePath().toStdString()+", destination: "+destination.absoluteFilePath().toStdString()); - return false; - } - //to prevent multiple file alocation into ListThread::doNewActions_inode_manipulation() - transfer_stat = TransferStat_PreOperation; - //emit pushStat(stat,transferId); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start, source: "+source.absoluteFilePath().toStdString()+", destination: "+destination.absoluteFilePath().toStdString()); - this->source = source; - this->destination = destination; - this->mode = mode; - this->size = size; - stopIt = false; - fileExistsAction = FileExists_NotSet; - canStartTransfer = false; - sended_state_preOperationStopped= false; - canBeMovedDirectlyVariable = false; - canBeCopiedDirectlyVariable = false; - fileContentError = false; - real_doChecksum = false; - writeError = false; - writeError_source_seeked = false; - writeError_destination_reopened = false; - readError = false; - fileContentError = false; - resetExtraVariable(); - emit internalStartPreOperation(); - return true; -} - -void TransferThread::setFileExistsAction(const FileExistsAction &action) -{ - if(transfer_stat!=TransferStat_PreOperation) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+("] already used, source: ")+source.absoluteFilePath().toStdString()+(", destination: ")+destination.absoluteFilePath().toStdString()); - return; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+("] action: ")+std::to_string(action)); - if(action!=FileExists_Rename) - fileExistsAction = action; - else - { - //always rename pass here - fileExistsAction = action; - alwaysDoFileExistsAction=action; - } - if(action==FileExists_Skip) - { - skip(); - return; - } - resetExtraVariable(); - emit internalStartPreOperation(); -} - -void TransferThread::setFileRename(const std::string &nameForRename) -{ - if(transfer_stat!=TransferStat_PreOperation) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+("] already used, source: ")+source.absoluteFilePath().toStdString()+(", destination: ")+destination.absoluteFilePath().toStdString()); - return; - } - if(QString::fromStdString(nameForRename).contains(QRegularExpression(QStringLiteral("[/\\\\\\*]")))) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+("] can't use this kind of name, internal error")); - emit errorOnFile(destination,tr("Try rename with using special characters").toStdString()); - return; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] nameForRename: "+nameForRename); - if(!renameTheOriginalDestination) - destination.setFile(destination.absolutePath()+CURRENTSEPARATOR+QString::fromStdString(nameForRename)); - else - { - QString tempDestination=destination.absoluteFilePath(); - QFile destinationFile(tempDestination); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"["+std::to_string(id)+"] "+QStringLiteral("rename %1: to: %2").arg(destination.absoluteFilePath()).arg(destination.absolutePath()+CURRENTSEPARATOR+QString::fromStdString(nameForRename)).toStdString()); - if(!destinationFile.rename(destination.absolutePath()+CURRENTSEPARATOR+QString::fromStdString(nameForRename))) - { - if(!destinationFile.exists()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+QStringLiteral("source not exists %1: destination: %2, error: %3").arg(destinationFile.fileName()).arg(destinationFile.fileName()).arg(destinationFile.errorString()).toStdString()); - emit errorOnFile(destinationFile,tr("File not found").toStdString()); - return; - } - else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+QStringLiteral("unable to do real move %1: %2, error: %3").arg(destinationFile.fileName()).arg(destinationFile.fileName()).arg(destinationFile.errorString()).toStdString()); - emit errorOnFile(destinationFile,destinationFile.errorString().toStdString()); - return; - } - if(source.absoluteFilePath()==destination.absoluteFilePath()) - source.setFile(destination.absolutePath()+CURRENTSEPARATOR+QString::fromStdString(nameForRename)); - destination.setFile(tempDestination); - destination.refresh(); - } - fileExistsAction = FileExists_NotSet; - resetExtraVariable(); - emit internalStartPreOperation(); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] destination is: "+destination.absoluteFilePath().toStdString()); -} - -void TransferThread::setAlwaysFileExistsAction(const FileExistsAction &action) -{ - //ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+QStringLiteral("] action to do always: ")+QString::number(action))); - alwaysDoFileExistsAction=action; -} - -void TransferThread::resetExtraVariable() -{ - sended_state_preOperationStopped=false; - sended_state_readStopped = false; - sended_state_writeStopped = false; - writeError = false; - readError = false; - readIsReadyVariable = false; - writeIsReadyVariable = false; - readIsFinishVariable = false; - writeIsFinishVariable = false; - readIsClosedVariable = false; - writeIsClosedVariable = false; - needRemove = false; - needSkip = false; - retry = false; - readIsOpenVariable = false; - writeIsOpenVariable = false; - readIsOpeningVariable = false; - writeIsOpeningVariable = false; - havePermission = false; -} - -void TransferThread::preOperation() -{ - if(transfer_stat!=TransferStat_PreOperation) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+("] already used, source: ")+source.absoluteFilePath().toStdString()+", destination: "+destination.absoluteFilePath().toStdString()); - return; - } - haveStartTime=true; - startTransferTime.restart(); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start: source: "+source.absoluteFilePath().toStdString()+", destination: "+destination.absoluteFilePath().toStdString()); - needRemove=false; - if(isSame()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] is same "+source.absoluteFilePath().toStdString()+" than "+destination.absoluteFilePath().toStdString()); - return; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] after is same"); - /*Why this code? - if(readError) - { - readError=false; - return; - }*/ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] before destination exists"); - if(destinationExists()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] destination exists: "+destination.absoluteFilePath().toStdString()); - return; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] after destination exists"); - /*Why this code? - if(readError) - { - readError=false; - return; - }*/ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] before keep date"); - #ifdef Q_OS_WIN32 - doTheDateTransfer=!source.isSymLink(); - #else - doTheDateTransfer=true; - #endif - if(doTheDateTransfer) - { - if(source.lastModified()<minTime) - { - if(/*true when the destination have been remove but not the symlink:*/source.isSymLink()) - doTheDateTransfer=false; - else - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"the sources is older to copy the time: "+source.absoluteFilePath().toStdString()+": "+minTime.toString(QStringLiteral("dd.MM.yyyy hh:mm:ss.zzz")).toStdString()+">="+source.lastModified().toString(QStringLiteral("dd.MM.yyyy hh:mm:ss.zzz")).toStdString()); - doTheDateTransfer=false; - if(keepDate) - { - emit errorOnFile(source,tr("Wrong modification date or unable to get it, you can disable time transfer to do it").toStdString()); - return; - } - } - } - else - { - doTheDateTransfer=readFileDateTime(source); - #ifdef Q_OS_MAC - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] read the source time: "+std::to_string(butime.modtime)); - #endif - if(!doTheDateTransfer) - { - //will have the real error at source open - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] unable to read the source time: "+source.absoluteFilePath().toStdString()); - if(keepDate) - { - emit errorOnFile(source,tr("Wrong modification date or unable to get it, you can disable time transfer to do it").toStdString()); - return; - } - } - } - } - if(canBeMovedDirectly()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] "+QStringLiteral("need moved directly: %1 to %2").arg(source.absoluteFilePath()).arg(destination.absoluteFilePath()).toStdString()); - canBeMovedDirectlyVariable=true; - readThread.fakeOpen(); - writeThread.fakeOpen(); - return; - } - if(canBeCopiedDirectly()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] "+QStringLiteral("need copied directly: %1 to %2").arg(source.absoluteFilePath()).arg(destination.absoluteFilePath()).toStdString()); - canBeCopiedDirectlyVariable=true; - readThread.fakeOpen(); - writeThread.fakeOpen(); - return; - } - tryOpen(); -} - -void TransferThread::tryOpen() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start source and destination: "+source.absoluteFilePath().toStdString()+" and "+destination.absoluteFilePath().toStdString()); - TransferAlgorithm transferAlgorithm=this->transferAlgorithm; - if(transferAlgorithm==TransferAlgorithm_Automatic) - { - #ifdef Q_OS_LINUX - if(driveManagement.isSameDrive(destination.absoluteFilePath().toStdString(),source.absoluteFilePath().toStdString())) - { - const QByteArray &type=driveManagement.getDriveType(driveManagement.getDrive(source.absoluteFilePath().toStdString())); - if(type=="nfs" || type=="smb") - transferAlgorithm=TransferAlgorithm_Parallel; - else - transferAlgorithm=TransferAlgorithm_Sequential; - } - else - #endif - transferAlgorithm=TransferAlgorithm_Parallel; - } - if(!readIsOpenVariable) - { - if(!readIsOpeningVariable) - { - readError=false; - readThread.open(source.absoluteFilePath(),mode); - readIsOpeningVariable=true; - - if(doRightTransfer) - havePermission=readFilePermissions(QFile(source.absoluteFilePath())); - } - else - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] readIsOpeningVariable is true when try open"); - emit errorOnFile(source,tr("Internal error: Already opening").toStdString()); - readError=true; - return; - } - } - if(!writeIsOpenVariable) - { - if(!writeIsOpeningVariable) - { - if(transferAlgorithm==TransferAlgorithm_Sequential) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] transferAlgorithm==TransferAlgorithm_Sequential"); - else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] transferAlgorithm==TransferAlgorithm_Parallel"); - writeError=false; - if(transferAlgorithm==TransferAlgorithm_Sequential) - writeThread.open(destination.absoluteFilePath(),size,osBuffer && (!osBufferLimited || (osBufferLimited && size<osBufferLimit)),sequentialBuffer,true); - else - writeThread.open(destination.absoluteFilePath(),size,osBuffer && (!osBufferLimited || (osBufferLimited && size<osBufferLimit)),parallelBuffer,false); - writeIsOpeningVariable=true; - } - else - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+"writeIsOpeningVariable is true when try open"); - emit errorOnFile(destination,tr("Internal error: Already opening").toStdString()); - writeError=true; - return; - } - } -} - -bool TransferThread::isSame() -{ - //check if source and destination is not the same - //source.absoluteFilePath()==destination.absoluteFilePath() not work is source don't exists - if(source.absoluteFilePath()==destination.absoluteFilePath()) - { - #ifdef ULTRACOPIER_PLUGIN_DEBUG - if(!source.exists()) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start source: "+source.absoluteFilePath().toStdString()+" not exists"); - if(!source.isSymLink()) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start source: "+source.absoluteFilePath().toStdString()+" isSymLink"); - if(!destination.isSymLink()) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start source: "+destination.absoluteFilePath().toStdString()+" isSymLink"); - #endif - if(fileExistsAction==FileExists_NotSet && alwaysDoFileExistsAction==FileExists_Skip) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] is same but skip"); - transfer_stat=TransferStat_Idle; - emit postOperationStopped(); - //quit - return true; - } - if(checkAlwaysRename()) - return false; - emit fileAlreadyExists(source,destination,true); - return true; - } - return false; -} - -bool TransferThread::destinationExists() -{ - //check if destination exists - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] "+QStringLiteral("overwrite: %1, alwaysDoFileExistsAction: %2, readError: %3, writeError: %4") - .arg(fileExistsAction) - .arg(alwaysDoFileExistsAction) - .arg(readError) - .arg(writeError) - .toStdString() - ); - if(alwaysDoFileExistsAction==FileExists_Overwrite || readError || writeError - #ifdef ULTRACOPIER_PLUGIN_RSYNC - || rsync - #endif - ) - return false; - bool destinationExists; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] time to first FS access"); - destination.refresh(); - destinationExists=destination.exists(); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] finish first FS access"); - if(destinationExists) - { - if(fileExistsAction==FileExists_NotSet && alwaysDoFileExistsAction==FileExists_Skip) - { - transfer_stat=TransferStat_Idle; - emit postOperationStopped(); - //quit - return true; - } - if(checkAlwaysRename()) - return false; - if(source.exists()) - { - if(fileExistsAction==FileExists_OverwriteIfNewer || (fileExistsAction==FileExists_NotSet && alwaysDoFileExistsAction==FileExists_OverwriteIfNewer)) - { - if(destination.lastModified()<source.lastModified()) - return false; - else - { - transfer_stat=TransferStat_Idle; - emit postOperationStopped(); - return true; - } - } - if(fileExistsAction==FileExists_OverwriteIfOlder || (fileExistsAction==FileExists_NotSet && alwaysDoFileExistsAction==FileExists_OverwriteIfOlder)) - { - if(destination.lastModified()>source.lastModified()) - return false; - else - { - transfer_stat=TransferStat_Idle; - emit postOperationStopped(); - return true; - } - } - if(fileExistsAction==FileExists_OverwriteIfNotSame || (fileExistsAction==FileExists_NotSet && alwaysDoFileExistsAction==FileExists_OverwriteIfNotSame)) - { - if(destination.lastModified()!=source.lastModified() || destination.size()!=source.size()) - return false; - else - { - transfer_stat=TransferStat_Idle; - emit postOperationStopped(); - return true; - } - } - } - else - { - if(fileExistsAction!=FileExists_NotSet) - { - transfer_stat=TransferStat_Idle; - emit postOperationStopped(); - return true; - } - } - if(fileExistsAction==FileExists_NotSet) - { - emit fileAlreadyExists(source,destination,false); - return true; - } - } - return false; -} - -std::string TransferThread::resolvedName(const QFileInfo &inode) -{ - QString fileName=inode.fileName(); - if(fileName.isEmpty()) - { - QDir absoluteDir=inode.absoluteDir(); - fileName=absoluteDir.dirName(); - if(fileName.isEmpty()) - { - fileName=absoluteDir.cdUp(); - fileName=absoluteDir.dirName(); - } - } - #ifdef Q_OS_WIN32 - if(fileName.isEmpty()) - { - fileName=inode.absolutePath(); - fileName.replace(QRegularExpression(QStringLiteral("^([a-zA-Z]+):.*$")),QStringLiteral("\\1")); - if(inode.absolutePath().contains(QRegularExpression(QStringLiteral("^[a-zA-Z]+:[/\\\\]?$")))) - fileName=tr("Drive %1").arg(fileName); - else - fileName=tr("Unknown folder"); - } - #else - if(fileName.isEmpty()) - fileName=tr("root"); - #endif - return fileName.toStdString(); -} - -std::string TransferThread::getSourcePath() const -{ - return source.absoluteFilePath().toStdString(); -} - -std::string TransferThread::getDestinationPath() const -{ - return destination.absoluteFilePath().toStdString(); -} - -QFileInfo TransferThread::getSourceInode() const -{ - return source; -} - -QFileInfo TransferThread::getDestinationInode() const -{ - return destination; -} - -Ultracopier::CopyMode TransferThread::getMode() const -{ - return mode; -} - -//return true if has been renamed -bool TransferThread::checkAlwaysRename() -{ - if(alwaysDoFileExistsAction==FileExists_Rename) - { - QFileInfo newDestination=destination; - std::string fileName=resolvedName(newDestination); - std::string suffix; - std::string newFileName; - //resolv the suffix - if(std::regex_match(fileName,renameRegex)) - { - suffix=fileName; - suffix=std::regex_replace(suffix,renameRegex,"$2"); - fileName=std::regex_replace(fileName,renameRegex,"$1"); - } - //resolv the new name - int num=1; - do - { - if(num==1) - { - if(firstRenamingRule.empty()) - newFileName=tr("%name% - copy").toStdString(); - else - newFileName=firstRenamingRule; - } - else - { - if(otherRenamingRule.empty()) - newFileName=tr("%name% - copy (%number%)").toStdString(); - else - newFileName=otherRenamingRule; - stringreplaceAll(newFileName,"%number%",std::to_string(num)); - } - stringreplaceAll(newFileName,"%name%",fileName); - stringreplaceAll(newFileName,"%suffix%",suffix); - newDestination.setFile(newDestination.absolutePath()+CURRENTSEPARATOR+QString::fromStdString(newFileName)); - num++; - } - while(newDestination.exists()); - if(!renameTheOriginalDestination) - destination=newDestination; - else - { - QFile destinationFile(destination.absoluteFilePath()); - if(!destinationFile.rename(newDestination.absoluteFilePath())) - { - if(!destinationFile.exists()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+QStringLiteral("source not exists %1: destination: %2, error: %3").arg(destinationFile.fileName()).arg(destinationFile.fileName()).arg(destinationFile.errorString()).toStdString()); - emit errorOnFile(destinationFile,tr("File not found").toStdString()); - readError=true; - return true; - } - else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+QStringLiteral("unable to do real move %1: %2, error: %3").arg(destinationFile.fileName()).arg(destinationFile.fileName()).arg(destinationFile.errorString()).toStdString()); - readError=true; - emit errorOnFile(destinationFile,destinationFile.errorString().toStdString()); - return true; - } - } - return true; - } - return false; -} - -void TransferThread::tryMoveDirectly() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] "+QStringLiteral("need moved directly: %1 to %2").arg(source.absoluteFilePath()).arg(destination.absoluteFilePath()).toStdString()); - - sended_state_readStopped = false; - sended_state_writeStopped = false; - writeError = false; - readError = false; - readIsFinishVariable = false; - writeIsFinishVariable = false; - readIsClosedVariable = false; - writeIsClosedVariable = false; - //move if on same mount point - QFile sourceFile(source.absoluteFilePath()); - QFile destinationFile(destination.absoluteFilePath()); - #ifndef Q_OS_WIN32 - if(destinationFile.exists() || destination.isSymLink()) - { - if(!sourceFile.exists() && !source.isSymLink()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+destinationFile.fileName().toStdString()+", source not exists"); - readError=true; - emit errorOnFile(destination,tr("The source file doesn't exist").toStdString()); - return; - } - else if(!destinationFile.remove()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+destinationFile.fileName().toStdString()+", error: "+destinationFile.errorString().toStdString()); - readError=true; - emit errorOnFile(destination,destinationFile.errorString().toStdString()); - return; - } - } - #endif - QDir dir(destination.absolutePath()); - { - mkpathTransfer->acquire(); - if(!dir.exists()) - dir.mkpath(destination.absolutePath()); - mkpathTransfer->release(); - } - #ifdef Q_OS_WIN32 - //if(!sourceFile.copy(destinationFile.fileName())) - if(MoveFileEx( - reinterpret_cast<const wchar_t*>(sourceFile.fileName().utf16()), - reinterpret_cast<const wchar_t*>(destinationFile.fileName().utf16()), - MOVEFILE_COPY_ALLOWED|MOVEFILE_REPLACE_EXISTING - )==0) - #else - if(!sourceFile.rename(destinationFile.fileName())) - #endif - { - readError=true; - if(!sourceFile.exists() && !source.isSymLink()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+QStringLiteral("source not exists %1: destination: %2, error: %3").arg(sourceFile.fileName()).arg(destinationFile.fileName()).arg(sourceFile.errorString()).toStdString()); - emit errorOnFile(sourceFile,tr("File not found").toStdString()); - return; - } - else if(!dir.exists()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+QStringLiteral("destination folder not exists %1: %2, error: %3").arg(sourceFile.fileName()).arg(destinationFile.fileName()).arg(sourceFile.errorString()).toStdString()); - emit errorOnFile(destination.absolutePath(),tr("Unable to do the folder").toStdString()); - return; - } - else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+QStringLiteral("unable to do real move %1: %2, error: %3").arg(sourceFile.fileName()).arg(destinationFile.fileName()).arg(sourceFile.errorString()).toStdString()); - emit errorOnFile(sourceFile,sourceFile.errorString().toStdString()); - return; - } - readThread.fakeReadIsStarted(); - writeThread.fakeWriteIsStarted(); - readThread.fakeReadIsStopped(); - writeThread.fakeWriteIsStopped(); -} - -void TransferThread::tryCopyDirectly() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] "+QStringLiteral("need copied directly: %1 to %2").arg(source.absoluteFilePath()).arg(destination.absoluteFilePath()).toStdString()); - - sended_state_readStopped = false; - sended_state_writeStopped = false; - writeError = false; - readError = false; - readIsFinishVariable = false; - writeIsFinishVariable = false; - readIsClosedVariable = false; - writeIsClosedVariable = false; - //move if on same mount point - QFile sourceFile(source.absoluteFilePath()); - QFile destinationFile(destination.absoluteFilePath()); - #ifndef Q_OS_WIN32 - if(destinationFile.exists() || destination.isSymLink()) - { - if(!sourceFile.exists() && !source.isSymLink()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+destinationFile.fileName().toStdString()+", source not exists"); - readError=true; - emit errorOnFile(destination,tr("The source doesn't exist").toStdString()); - return; - } - else if(!destinationFile.remove()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+destinationFile.fileName().toStdString()+", error: "+destinationFile.errorString().toStdString()); - readError=true; - emit errorOnFile(destination,destinationFile.errorString().toStdString()); - return; - } - } - #endif - QDir dir(destination.absolutePath()); - { - mkpathTransfer->acquire(); - if(!dir.exists()) - dir.mkpath(destination.absolutePath()); - mkpathTransfer->release(); - } - /** on windows, symLink is normal file, can be copied - * on unix not, should be created **/ - #ifdef Q_OS_WIN32 - //if(!sourceFile.copy(destinationFile.fileName())) - if(CopyFileEx( - reinterpret_cast<const wchar_t*>(sourceFile.fileName().utf16()), - reinterpret_cast<const wchar_t*>(destinationFile.fileName().utf16()), - NULL, - NULL, - FALSE, - 0 - )==0) - #else - if(!QFile::link(sourceFile.symLinkTarget(),destinationFile.fileName())) - #endif - { - readError=true; - if(!sourceFile.exists() && !source.isSymLink()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+QStringLiteral("source not exists %1 -> %4: %2, error: %3").arg(sourceFile.fileName()).arg(destinationFile.fileName()).arg(sourceFile.errorString()).arg(sourceFile.symLinkTarget()).toStdString()); - emit errorOnFile(sourceFile,tr("The source file doesn't exist").toStdString()); - return; - } - else if(destinationFile.exists() || destination.isSymLink()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+QStringLiteral("destination already exists %1 -> %4: %2, error: %3").arg(sourceFile.fileName()).arg(destinationFile.fileName()).arg(sourceFile.errorString()).arg(sourceFile.symLinkTarget()).toStdString()); - emit errorOnFile(sourceFile,tr("Another file exists at same place").toStdString()); - return; - } - else if(!dir.exists()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+QStringLiteral("destination folder not exists %1 -> %4: %2, error: %3").arg(sourceFile.fileName()).arg(destinationFile.fileName()).arg(sourceFile.errorString()).arg(sourceFile.symLinkTarget()).toStdString()); - emit errorOnFile(sourceFile,tr("Unable to do the folder").toStdString()); - return; - } - else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+QStringLiteral("unable to do sym link copy %1 -> %4: %2, error: %3").arg(sourceFile.fileName()).arg(destinationFile.fileName()).arg(sourceFile.errorString()).arg(sourceFile.symLinkTarget()).toStdString()); - emit errorOnFile(sourceFile,sourceFile.errorString().toStdString()); - return; - } - readThread.fakeReadIsStarted(); - writeThread.fakeWriteIsStarted(); - readThread.fakeReadIsStopped(); - writeThread.fakeWriteIsStopped(); -} - -bool TransferThread::canBeMovedDirectly() const -{ - if(mode!=Ultracopier::Move) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] mode!=Ultracopier::Move"); - return false; - } - return source.isSymLink() || driveManagement.isSameDrive(destination.absoluteFilePath().toStdString(),source.absoluteFilePath().toStdString()); -} - -bool TransferThread::canBeCopiedDirectly() const -{ - return source.isSymLink(); -} - -void TransferThread::readIsReady() -{ - if(readIsReadyVariable) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] double event dropped"); - return; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start"); - readIsReadyVariable=true; - readIsOpenVariable=true; - readIsClosedVariable=false; - readIsOpeningVariable=false; - ifCanStartTransfer(); -} - -void TransferThread::ifCanStartTransfer() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] readIsReadyVariable: "+std::to_string(readIsReadyVariable)+", writeIsReadyVariable: "+std::to_string(writeIsReadyVariable)); - if(readIsReadyVariable && writeIsReadyVariable) - { - transfer_stat=TransferStat_WaitForTheTransfer; - sended_state_readStopped = false; - sended_state_writeStopped = false; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] stat=WaitForTheTransfer"); - if(!sended_state_preOperationStopped) - { - sended_state_preOperationStopped=true; - emit preOperationStopped(); - } - if(canStartTransfer) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] stat=Transfer, "+QStringLiteral("canBeMovedDirectlyVariable: %1, canBeCopiedDirectlyVariable: %2").arg(canBeMovedDirectlyVariable).arg(canBeCopiedDirectlyVariable).toStdString()); - transfer_stat=TransferStat_Transfer; - if(canBeMovedDirectlyVariable) - tryMoveDirectly(); - else if(canBeCopiedDirectlyVariable) - tryCopyDirectly(); - else - { - needRemove=deletePartiallyTransferredFiles; - readThread.startRead(); - } - emit pushStat(transfer_stat,transferId); - } - //else - //emit pushStat(stat,transferId); - } -} - -void TransferThread::writeIsReady() -{ - if(writeIsReadyVariable) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] double event dropped"); - return; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start"); - writeIsReadyVariable=true; - writeIsOpenVariable=true; - writeIsClosedVariable=false; - writeIsOpeningVariable=false; - ifCanStartTransfer(); -} - - -//set the copy info and options before runing -void TransferThread::setRightTransfer(const bool doRightTransfer) -{ - this->doRightTransfer=doRightTransfer; -} - -//set keep date -void TransferThread::setKeepDate(const bool keepDate) -{ - this->keepDate=keepDate; -} - -#ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT -//set the current max speed in KB/s -void TransferThread::setMultiForBigSpeed(const int &multiForBigSpeed) -{ - readThread.setMultiForBigSpeed(multiForBigSpeed); - writeThread.setMultiForBigSpeed(multiForBigSpeed); -} -#endif - -//set block size in Bytes -bool TransferThread::setBlockSize(const unsigned int blockSize) -{ - bool read=readThread.setBlockSize(blockSize); - bool write=writeThread.setBlockSize(blockSize); - return (read && write); -} - -//pause the copy -void TransferThread::pause() -{ - //only pause/resume during the transfer of file data - //from transfer_stat!=TransferStat_Idle because it resume at wrong order - if(transfer_stat!=TransferStat_Transfer && transfer_stat!=TransferStat_PostTransfer && transfer_stat!=TransferStat_Checksum) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] wrong stat to put in pause"); - return; - } - haveStartTime=false; - readThread.pause(); - writeThread.pause(); -} - -//resume the copy -void TransferThread::resume() -{ - //only pause/resume during the transfer of file data - //from transfer_stat!=TransferStat_Idle because it resume at wrong order - if(transfer_stat!=TransferStat_Transfer && transfer_stat!=TransferStat_PostTransfer && transfer_stat!=TransferStat_Checksum) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] wrong stat to put in pause"); - return; - } - readThread.resume(); - writeThread.resume(); -} - -//stop the current copy -void TransferThread::stop() -{ - stopIt=true; - haveStartTime=false; - if(transfer_stat==TransferStat_Idle) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"transfer_stat==TransferStat_Idle"); - return; - } - if(remainSourceOpen()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"remainSourceOpen()"); - readThread.stop(); - } - if(remainDestinationOpen()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"remainDestinationOpen()"); - writeThread.stop(); - } - if(!remainFileOpen()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"transfer_stat==TransferStat_Idle"); - if(needRemove && source.absoluteFilePath()!=destination.absoluteFilePath()) - { - if(source.exists()) - QFile(destination.absoluteFilePath()).remove(); - else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+("] try destroy the destination when the source don't exists")); - } - transfer_stat=TransferStat_PostOperation; - emit internalStartPostOperation(); - } - else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("transfer_stat==%1 && remainFileOpen()").arg(transfer_stat).toStdString()); -} - -bool TransferThread::remainFileOpen() const -{ - return remainSourceOpen() || remainDestinationOpen(); -} - -bool TransferThread::remainSourceOpen() const -{ - return (readIsOpenVariable || readIsOpeningVariable) && !readIsClosedVariable; -} - -bool TransferThread::remainDestinationOpen() const -{ - return (writeIsOpenVariable || writeIsOpeningVariable) && !writeIsClosedVariable; -} - -void TransferThread::readIsFinish() -{ - if(readIsFinishVariable) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+("] double event dropped")); - return; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start"); - readIsFinishVariable=true; - canStartTransfer=false; - //check here if need start checksuming or not - real_doChecksum=doChecksum && (!checksumOnlyOnError || fileContentError) && (!canBeMovedDirectlyVariable && !canBeCopiedDirectlyVariable); - if(real_doChecksum) - { - readIsFinishVariable=false; - transfer_stat=TransferStat_Checksum; - sourceChecksum=QByteArray(); - destinationChecksum=QByteArray(); - readThread.startCheckSum(); - } - else - { - transfer_stat=TransferStat_PostTransfer; - if(!needSkip || (canBeCopiedDirectlyVariable || canBeMovedDirectlyVariable))//if skip, stop call, then readIsClosed() already call - readThread.postOperation(); - else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] in skip, don't start postOperation"); - } - emit pushStat(transfer_stat,transferId); -} - -void TransferThread::writeIsFinish() -{ - if(writeIsFinishVariable) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+"] double event dropped"); - return; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start"); - writeIsFinishVariable=true; - //check here if need start checksuming or not - if(real_doChecksum) - { - writeIsFinishVariable=false; - transfer_stat=TransferStat_Checksum; - writeThread.startCheckSum(); - } - else - { - if(!needSkip || (canBeCopiedDirectlyVariable || canBeMovedDirectlyVariable))//if skip, stop call, then writeIsClosed() already call - writeThread.postOperation(); - else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] in skip, don't start postOperation"); - } -} - -void TransferThread::readChecksumFinish(const QByteArray& checksum) -{ - sourceChecksum=checksum; - compareChecksum(); -} - -void TransferThread::writeChecksumFinish(const QByteArray& checksum) -{ - destinationChecksum=checksum; - compareChecksum(); -} - -void TransferThread::compareChecksum() -{ - if(sourceChecksum.size()==0) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] the checksum of source is missing"); - return; - } - if(destinationChecksum.size()==0) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] the checksum of destination is missing"); - return; - } - if(sourceChecksum==destinationChecksum) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] the checksum match"); - readThread.postOperation(); - writeThread.postOperation(); - transfer_stat=TransferStat_PostTransfer; - emit pushStat(transfer_stat,transferId); - } - else - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+("] the checksum not match")); - //emit error here, and wait to resume - emit errorOnFile(destination,tr("The checksums do not match").toStdString()); - } -} - -void TransferThread::readIsClosed() -{ - if(readIsClosedVariable) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+("] double event dropped")); - return; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start"); - readIsClosedVariable=true; - readIsOpeningVariable=false; - checkIfAllIsClosedAndDoOperations(); -} - -void TransferThread::writeIsClosed() -{ - if(writeIsClosedVariable) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+"] double event dropped"); - return; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start"); - writeIsClosedVariable=true; - writeIsOpeningVariable=false; - if(stopIt && needRemove && source.absoluteFilePath()!=destination.absoluteFilePath()) - { - if(source.exists()) - QFile(destination.absoluteFilePath()).remove(); - else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+("] try destroy the destination when the source don't exists")); - } - checkIfAllIsClosedAndDoOperations(); -} - -// return true if all is closed, and do some operations, don't use into condition to check if is closed! -bool TransferThread::checkIfAllIsClosedAndDoOperations() -{ - if((readError || writeError) && !needSkip && !stopIt) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] resolve error before progress"); - return false; - } - if(!remainFileOpen()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] emit internalStartPostOperation() to do the real post operation"); - transfer_stat=TransferStat_PostOperation; - //emit pushStat(stat,transferId); - emit internalStartPostOperation(); - return true; - } - else - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] "+QStringLiteral("wait self close: readIsReadyVariable: %1, readIsClosedVariable: %2, writeIsReadyVariable: %3, writeIsClosedVariable: %4") - .arg(readIsReadyVariable) - .arg(readIsClosedVariable) - .arg(writeIsReadyVariable) - .arg(writeIsClosedVariable) - .toStdString() - ); - return false; - } -} - -/// \todo found way to retry that's -/// \todo the rights copy -void TransferThread::postOperation() -{ - if(transfer_stat!=TransferStat_PostOperation) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+"] need be in transfer, source: "+source.absoluteFilePath().toStdString()+", destination: "+destination.absoluteFilePath().toStdString()+", stat:"+std::to_string(transfer_stat)); - return; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start"); - //all except closing - if((readError || writeError) && !needSkip && !stopIt)//normally useless by checkIfAllIsFinish() - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] resume after error"); - return; - } - - if(!needSkip && !stopIt) - { - if(!canBeCopiedDirectlyVariable && !canBeMovedDirectlyVariable) - { - if(writeIsOpenVariable && !writeIsClosedVariable) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+("] can't pass in post operation if write is not closed")); - emit errorOnFile(destination,tr("Internal error: The destination is not closed").toStdString()); - needSkip=false; - if(deletePartiallyTransferredFiles) - needRemove=true; - writeError=true; - return; - } - if(readThread.getLastGoodPosition()!=writeThread.getLastGoodPosition()) - { - writeThread.flushBuffer(); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+QString("] readThread.getLastGoodPosition(%1)!=writeThread.getLastGoodPosition(%2)") - .arg(readThread.getLastGoodPosition()) - .arg(writeThread.getLastGoodPosition()) - .toStdString() - ); - emit errorOnFile(destination,tr("Internal error: The size transfered doesn't match").toStdString()); - needSkip=false; - if(deletePartiallyTransferredFiles) - needRemove=true; - writeError=true; - return; - } - if(!writeThread.bufferIsEmpty()) - { - writeThread.flushBuffer(); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+("] buffer is not empty")); - emit errorOnFile(destination,tr("Internal error: The buffer is not empty").toStdString()); - needSkip=false; - if(deletePartiallyTransferredFiles) - needRemove=true; - writeError=true; - return; - } - //in normal mode, without copy/move syscall - if(!doFilePostOperation()) - return; - } - - //remove source in moving mode - if(mode==Ultracopier::Move && !canBeMovedDirectlyVariable) - { - if(destination.exists() && destination.isFile()) - { - QFile sourceFile(source.absoluteFilePath()); - if(!sourceFile.remove()) - { - needSkip=false; - emit errorOnFile(source,sourceFile.errorString().toStdString()); - return; - } - } - else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+("] try remove source but destination not exists!")); - } - } - else//do difference skip a file and skip this error case - { - if(needRemove && destination.exists() && source.exists() && source.absoluteFilePath()!=destination.absoluteFilePath() && destination.isFile()) - { - QFile destinationFile(destination.absoluteFilePath()); - if(!destinationFile.remove()) - { - //emit errorOnFile(source,destinationFile.errorString()); - //return; - } - } - else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] try remove destination but not exists!"); - } - source.setFile(QStringLiteral("")); - destination.setFile(QStringLiteral("")); - //don't need remove because have correctly finish (it's not in: have started) - needRemove=false; - needSkip=false; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] emit postOperationStopped()"); - transfer_stat=TransferStat_Idle; - emit postOperationStopped(); -} - -bool TransferThread::doFilePostOperation() -{ - //do operation needed by copy - //set the time if no write thread used - - destination.refresh(); - if(!destination.exists() && !destination.isSymLink()) - { - if(!stopIt) - if(/*true when the destination have been remove but not the symlink:*/!source.isSymLink()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] Unable to change the date: File not found"); - emit errorOnFile(destination,tr("Unable to change the date").toStdString()+": "+tr("File not found").toStdString()); - return false; - } - } - else - { - if(doTheDateTransfer) - { - if(!writeFileDateTime(destination)) - { - if(!destination.isFile()) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] Unable to change the date (is not a file)"); - else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] Unable to change the date"); - /* error with virtual folder under windows */ - #ifndef Q_OS_WIN32 - if(keepDate) - { - emit errorOnFile(destination,tr("Unable to change the date").toStdString()); - return false; - } - #endif - } - else - { - #ifndef Q_OS_WIN32 - destination.refresh(); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] read the destination time: "+destination.lastModified().toString().toStdString()); - if(destination.lastModified()<minTime) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] read the destination time lower than min time: "+destination.lastModified().toString().toStdString()); - if(keepDate) - { - emit errorOnFile(destination,tr("Unable to change the date").toStdString()); - return false; - } - } - #endif - } - } - if(doRightTransfer) - { - //should be never used but... - /*source.refresh(); - if(source.exists())*/ - if(havePermission) - { - QFile destinationFile(destination.absoluteFilePath()); - if(!writeFilePermissions(destinationFile)) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] Unable to set the destination file permission"); - //emit errorOnFile(destination,tr("Unable to set the destination file permission")); - //return false; - } - } - else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] Try doRightTransfer when source not exists"); - } - } - if(stopIt) - return false; - - return true; -} - -////////////////////////////////////////////////////////////////// -/////////////////////// Error management ///////////////////////// -////////////////////////////////////////////////////////////////// - -void TransferThread::getWriteError() -{ - if(writeError) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] already in write error!"); - return; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start"); - fileContentError = true; - writeError = true; - writeIsReadyVariable = false; - writeError_source_seeked = false; - writeError_destination_reopened = false; - writeIsOpeningVariable=false; - if(!readError)//already display error for the read - emit errorOnFile(destination,writeThread.errorString()); -} - -void TransferThread::getReadError() -{ - if(readError) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] already in read error!"); - return; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start"); - fileContentError = true; - readError = true; - //writeIsReadyVariable = false;//wrong because write can be ready here - readIsReadyVariable = false; - readIsOpeningVariable=false; - if(!writeError)//already display error for the write - emit errorOnFile(source,readThread.errorString()); -} - -//retry after error -void TransferThread::retryAfterError() -{ - /// \warning skip the resetExtraVariable(); to be more exact and resolv some bug - if(transfer_stat==TransferStat_Idle) - { - if(transferId==0) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+("] seam have bug, source: ")+source.absoluteFilePath().toStdString()+", destination: "+destination.absoluteFilePath().toStdString()); - return; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] restart all, source: "+source.absoluteFilePath().toStdString()+", destination: "+destination.absoluteFilePath().toStdString()); - readError=false; - //writeError=false; - emit internalStartPreOperation(); - return; - } - //opening error - if(transfer_stat==TransferStat_PreOperation) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] is not idle, source: "+source.absoluteFilePath().toStdString()+", destination: "+destination.absoluteFilePath().toStdString()+", stat: "+std::to_string(transfer_stat)); - readError=false; - //writeError=false; - emit internalStartPreOperation(); - //tryOpen();-> recheck all, because can be an error into isSame(), rename(), ... - return; - } - //data streaming error - if(transfer_stat!=TransferStat_PostOperation && transfer_stat!=TransferStat_Transfer && transfer_stat!=TransferStat_PostTransfer && transfer_stat!=TransferStat_Checksum) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+("] is not in right stat, source: ")+source.absoluteFilePath().toStdString()+", destination: "+destination.absoluteFilePath().toStdString()+", stat: "+std::to_string(transfer_stat)); - return; - } - if(transfer_stat==TransferStat_PostOperation) - { - if(readError || writeError) - { - readError=false; - //writeError=false; - resumeTransferAfterWriteError(); - writeThread.flushBuffer(); - transfer_stat=TransferStat_PreOperation; - emit internalStartPreOperation(); - return; - } - emit internalStartPostOperation(); - return; - } - if(canBeMovedDirectlyVariable) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] retry the system move"); - tryMoveDirectly(); - return; - } - if(canBeCopiedDirectlyVariable) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] retry the copy directly"); - tryCopyDirectly(); - return; - } - if(transfer_stat==TransferStat_Checksum) - { - if(writeError) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start and resume the write error"); - writeThread.reopen(); - } - else if(readError) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start and resume the read error"); - readThread.reopen(); - } - else //only checksum difference - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] retry all the transfer"); - canStartTransfer=true; - ifCanStartTransfer(); - } - return; - } - //can have error on source and destination at the same time - if(writeError) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start and resume the write error: "+std::to_string(readError)); - if(readError) - readThread.reopen(); - else - { - readIsClosedVariable=false; - readThread.seekToZeroAndWait(); - } - writeThread.reopen(); - } - if(readError) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start and resume the read error"); - readThread.reopen(); - } - if(!writeError && !readError) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] unknow error resume"); -} - -void TransferThread::writeThreadIsReopened() -{ - if(writeError_destination_reopened) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] double event dropped"); - return; - } - writeError_destination_reopened=true; - if(transfer_stat==TransferStat_Checksum) - { - writeThread.startCheckSum(); - return; - } - if(writeError_source_seeked && writeError_destination_reopened) - resumeTransferAfterWriteError(); -} - -void TransferThread::readThreadIsSeekToZeroAndWait() -{ - if(writeError_source_seeked) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] double event dropped"); - return; - } - writeError_source_seeked=true; - if(writeError_source_seeked && writeError_destination_reopened) - resumeTransferAfterWriteError(); -} - -void TransferThread::resumeTransferAfterWriteError() -{ - writeError=false; -/******************************** - if(canStartTransfer) - readThread.startRead(); -useless, because the open destination event -will restart the transfer as normal -*********************************/ -/********************************* -if(!canStartTransfer) - stat=WaitForTheTransfer; -useless because already do at open event -**********************************/ - //if is in wait - if(!canStartTransfer) - emit checkIfItCanBeResumed(); -} - -void TransferThread::readThreadResumeAfterError() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start"); - readError=false; - writeIsReady(); - readIsReady(); -} - -////////////////////////////////////////////////////////////////// -///////////////////////// Normal event /////////////////////////// -////////////////////////////////////////////////////////////////// - -void TransferThread::readIsStopped() -{ - if(!sended_state_readStopped) - { - sended_state_readStopped=true; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] emit readIsStopped()"); - emit readStopped(); - } - else - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] drop dual read stopped"); - return; - } - readIsFinish(); -} - -void TransferThread::writeIsStopped() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start"); - if(!sended_state_writeStopped) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] emit writeStopped()"); - sended_state_writeStopped=true; - emit writeStopped(); - } - else - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] double event dropped"); - return; - } - writeIsFinish(); -} - -#ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT -void TransferThread::timeOfTheBlockCopyFinished() -{ - readThread.timeOfTheBlockCopyFinished(); - writeThread.timeOfTheBlockCopyFinished(); -} -#endif - -bool TransferThread::setParallelBuffer(const int ¶llelBuffer) -{ - if(parallelBuffer<1 || parallelBuffer>ULTRACOPIER_PLUGIN_MAX_PARALLEL_NUMBER_OF_BLOCK) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] wrong parallelBuffer: "+std::to_string(parallelBuffer)); - return false; - } - else - { - this->parallelBuffer=parallelBuffer; - return true; - } -} - -bool TransferThread::setSequentialBuffer(const int &sequentialBuffer) -{ - if(sequentialBuffer<1 || sequentialBuffer>ULTRACOPIER_PLUGIN_MAX_SEQUENTIAL_NUMBER_OF_BLOCK) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] wrong sequentialBuffer: "+std::to_string(sequentialBuffer)); - return false; - } - else - { - this->sequentialBuffer=sequentialBuffer; - return true; - } -} - -void TransferThread::setTransferAlgorithm(const TransferAlgorithm &transferAlgorithm) -{ - this->transferAlgorithm=transferAlgorithm; - if(transferAlgorithm==TransferAlgorithm_Sequential) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] transferAlgorithm==TransferAlgorithm_Sequential"); - else if(transferAlgorithm==TransferAlgorithm_Automatic) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] transferAlgorithm==TransferAlgorithm_Automatic"); - else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] transferAlgorithm==TransferAlgorithm_Parallel"); -} - -//fonction to read the file date time -bool TransferThread::readFileDateTime(const QFileInfo &source) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] readFileDateTime("+source.absoluteFilePath().toStdString()+")"); - if(source.lastModified()<minTime) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] the sources is older to copy the time: "+source.absoluteFilePath().toStdString()+": "+source.lastModified().toString().toStdString()); - return false; - } - /** Why not do it with Qt? Because it not support setModificationTime(), and get the time with Qt, that's mean use local time where in C is UTC time */ - #ifdef Q_OS_UNIX - #ifdef Q_OS_LINUX - struct stat info; - if(stat(source.absoluteFilePath().toLatin1().data(),&info)!=0) - return false; - time_t ctime=info.st_ctim.tv_sec; - time_t actime=info.st_atim.tv_sec; - time_t modtime=info.st_mtim.tv_sec; - //this function avalaible on unix and mingw - butime.actime=actime; - butime.modtime=modtime; - Q_UNUSED(ctime); - return true; - #else //mainly for mac - time_t ctime=source.created().toTime_t(); - time_t actime=source.lastRead().toTime_t(); - time_t modtime=source.lastModified().toTime_t(); - //this function avalaible on unix and mingw - butime.actime=actime; - butime.modtime=modtime; - Q_UNUSED(ctime); - return true; - #endif - #else - #ifdef Q_OS_WIN32 - #ifdef ULTRACOPIER_PLUGIN_SET_TIME_UNIX_WAY - struct stat info; - if(stat(source.toLatin1().data(),&info)!=0) - return false; - time_t ctime=info.st_ctim.tv_sec; - time_t actime=info.st_atim.tv_sec; - time_t modtime=info.st_mtim.tv_sec; - //this function avalaible on unix and mingw - butime.actime=actime; - butime.modtime=modtime; - Q_UNUSED(ctime); - return true; - #else - wchar_t filePath[65535]; - if(std::regex_match(source.absoluteFilePath().toStdString(),regRead)) - filePath[QDir::toNativeSeparators(QStringLiteral("\\\\?\\")+source.absoluteFilePath()).toWCharArray(filePath)]=L'\0'; - else - filePath[QDir::toNativeSeparators(source.absoluteFilePath()).toWCharArray(filePath)]=L'\0'; - HANDLE hFileSouce = CreateFileW(filePath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_READONLY, NULL); - if(hFileSouce == INVALID_HANDLE_VALUE) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] open failed to read: "+QString::fromWCharArray(filePath).toStdString()+", error: "+std::to_string(GetLastError())); - return false; - } - FILETIME ftCreate, ftAccess, ftWrite; - if(!GetFileTime(hFileSouce, &ftCreate, &ftAccess, &ftWrite)) - { - CloseHandle(hFileSouce); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] unable to get the file time"); - return false; - } - this->ftCreateL=ftCreate.dwLowDateTime; - this->ftCreateH=ftCreate.dwHighDateTime; - this->ftAccessL=ftAccess.dwLowDateTime; - this->ftAccessH=ftAccess.dwHighDateTime; - this->ftWriteL=ftWrite.dwLowDateTime; - this->ftWriteH=ftWrite.dwHighDateTime; - CloseHandle(hFileSouce); - return true; - #endif - #else - return false; - #endif - #endif - return false; -} - -bool TransferThread::writeFileDateTime(const QFileInfo &destination) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] writeFileDateTime("+destination.absoluteFilePath().toStdString()+")"); - /** Why not do it with Qt? Because it not support setModificationTime(), and get the time with Qt, that's mean use local time where in C is UTC time */ - #ifdef Q_OS_UNIX - #ifdef Q_OS_LINUX - return utime(destination.absoluteFilePath().toLatin1().data(),&butime)==0; - #else //mainly for mac - return utime(destination.absoluteFilePath().toLatin1().data(),&butime)==0; - #endif - #else - #ifdef Q_OS_WIN32 - #ifdef ULTRACOPIER_PLUGIN_SET_TIME_UNIX_WAY - return utime(destination.toLatin1().data(),&butime)==0; - #else - wchar_t filePath[65535]; - if(std::regex_match(destination.absoluteFilePath().toStdString(),regRead)) - filePath[QDir::toNativeSeparators(QStringLiteral("\\\\?\\")+destination.absoluteFilePath()).toWCharArray(filePath)]=L'\0'; - else - filePath[QDir::toNativeSeparators(destination.absoluteFilePath()).toWCharArray(filePath)]=L'\0'; - HANDLE hFileDestination = CreateFileW(filePath, GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); - if(hFileDestination == INVALID_HANDLE_VALUE) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] open failed to write: "+QString::fromWCharArray(filePath).toStdString()+", error: "+std::to_string(GetLastError())); - return false; - } - FILETIME ftCreate, ftAccess, ftWrite; - ftCreate.dwLowDateTime=this->ftCreateL; - ftCreate.dwHighDateTime=this->ftCreateH; - ftAccess.dwLowDateTime=this->ftAccessL; - ftAccess.dwHighDateTime=this->ftAccessH; - ftWrite.dwLowDateTime=this->ftWriteL; - ftWrite.dwHighDateTime=this->ftWriteH; - if(!SetFileTime(hFileDestination, &ftCreate, &ftAccess, &ftWrite)) - { - CloseHandle(hFileDestination); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] unable to set the file time"); - return false; - } - CloseHandle(hFileDestination); - return true; - #endif - #else - return false; - #endif - #endif - return false; -} - -bool TransferThread::readFilePermissions(const QFile &source) -{ - this->permissions=source.permissions(); - return true; -} - -bool TransferThread::writeFilePermissions(QFile &destination) -{ - return destination.setPermissions(this->permissions); -} - -//skip the copy -void TransferThread::skip() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start with stat: "+std::to_string(transfer_stat)); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] readIsOpeningVariable: "+std::to_string(readIsOpeningVariable)+", readIsOpenVariable: "+std::to_string(readIsOpenVariable)+", readIsReadyVariable: "+std::to_string(readIsReadyVariable)+", readIsFinishVariable: "+std::to_string(readIsFinishVariable)+", readIsClosedVariable: "+std::to_string(readIsClosedVariable)); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] writeIsOpeningVariable: "+std::to_string(writeIsOpeningVariable)+", writeIsOpenVariable: "+std::to_string(writeIsOpenVariable)+", writeIsReadyVariable: "+std::to_string(writeIsReadyVariable)+", writeIsFinishVariable: "+std::to_string(writeIsFinishVariable)+", writeIsClosedVariable: "+std::to_string(writeIsClosedVariable)); - switch(transfer_stat) - { - case TransferStat_WaitForTheTransfer: - //needRemove=true;never put that's here, can product destruction of the file - case TransferStat_PreOperation: - if(needSkip) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] skip already in progress"); - return; - } - needSkip=true; - //check if all is source and destination is closed - if(remainFileOpen()) - { - if(remainSourceOpen()) - readThread.stop(); - if(remainDestinationOpen()) - writeThread.stop(); - } - else // wait nothing, just quit - { - transfer_stat=TransferStat_PostOperation; - emit internalStartPostOperation(); - } - break; - case TransferStat_Transfer: - case TransferStat_PostTransfer: - if(needSkip) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] skip already in progress"); - return; - } - //needRemove=true;never put that's here, can product destruction of the file - needSkip=true; - if(canBeMovedDirectlyVariable || canBeCopiedDirectlyVariable) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] Do the direct FS fake close, canBeMovedDirectlyVariable: "+std::to_string(canBeMovedDirectlyVariable)+", canBeCopiedDirectlyVariable: "+std::to_string(canBeCopiedDirectlyVariable)); - readThread.fakeReadIsStarted(); - writeThread.fakeWriteIsStarted(); - readThread.fakeReadIsStopped(); - writeThread.fakeWriteIsStopped(); - return; - } - writeThread.flushBuffer(); - if(remainFileOpen()) - { - if(remainSourceOpen()) - readThread.stop(); - if(remainDestinationOpen()) - writeThread.stop(); - } - else // wait nothing, just quit - { - transfer_stat=TransferStat_PostOperation; - emit internalStartPostOperation(); - } - break; - case TransferStat_Checksum: - if(needSkip) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] skip already in progress"); - return; - } - //needRemove=true;never put that's here, can product destruction of the file - needSkip=true; - if(remainFileOpen()) - { - if(remainSourceOpen()) - readThread.stop(); - if(remainDestinationOpen()) - writeThread.stop(); - } - else // wait nothing, just quit - { - transfer_stat=TransferStat_PostOperation; - emit internalStartPostOperation(); - } - break; - case TransferStat_PostOperation: - if(needSkip) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] skip already in progress"); - return; - } - //needRemove=true;never put that's here, can product destruction of the file - needSkip=true; - writeThread.flushBuffer(); - emit internalStartPostOperation(); - break; - default: - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] can skip in this state: "+std::to_string(transfer_stat)); - return; - } -} - -//return info about the copied size -int64_t TransferThread::copiedSize() -{ - switch(transfer_stat) - { - case TransferStat_Transfer: - case TransferStat_PostOperation: - case TransferStat_PostTransfer: - return (readThread.getLastGoodPosition()+writeThread.getLastGoodPosition())/2; - case TransferStat_Checksum: - return transferSize; - default: - return 0; - } -} - -//retry after error -void TransferThread::putAtBottom() -{ - emit tryPutAtBottom(); -} - -#ifdef ULTRACOPIER_PLUGIN_RSYNC -/// \brief set rsync -void TransferThread::setRsync(const bool rsync) -{ - this->rsync=rsync; -} -#endif - -void TransferThread::set_osBufferLimit(const unsigned int &osBufferLimit) -{ - this->osBufferLimit=osBufferLimit; -} - -#ifdef ULTRACOPIER_PLUGIN_DEBUG -//to set the id -void TransferThread::setId(int id) -{ - this->id=id; - readThread.setId(id); - writeThread.setId(id); -} - -char TransferThread::readingLetter() const -{ - switch(readThread.stat) - { - case ReadThread::Idle: - return '_'; - break; - case ReadThread::InodeOperation: - return 'I'; - break; - case ReadThread::Read: - return 'R'; - break; - case ReadThread::WaitWritePipe: - return 'W'; - break; - case ReadThread::Checksum: - return 'S'; - break; - default: - return '?'; - } -} - -char TransferThread::writingLetter() const -{ - switch(writeThread.stat) - { - case WriteThread::Idle: - return '_'; - break; - case WriteThread::InodeOperation: - return 'I'; - break; - case WriteThread::Write: - return 'W'; - break; - case WriteThread::Close: - return 'C'; - break; - case WriteThread::Read: - return 'R'; - break; - case WriteThread::Checksum: - return 'S'; - break; - default: - return '?'; - } -} - -#endif - -void TransferThread::setMkpathTransfer(QSemaphore *mkpathTransfer) -{ - this->mkpathTransfer=mkpathTransfer; - writeThread.setMkpathTransfer(mkpathTransfer); -} - -void TransferThread::set_doChecksum(bool doChecksum) -{ - this->doChecksum=doChecksum; -} - -void TransferThread::set_checksumIgnoreIfImpossible(bool checksumIgnoreIfImpossible) -{ - this->checksumIgnoreIfImpossible=checksumIgnoreIfImpossible; -} - -void TransferThread::set_checksumOnlyOnError(bool checksumOnlyOnError) -{ - this->checksumOnlyOnError=checksumOnlyOnError; -} - -void TransferThread::set_osBuffer(bool osBuffer) -{ - this->osBuffer=osBuffer; -} - -void TransferThread::set_osBufferLimited(bool osBufferLimited) -{ - this->osBufferLimited=osBufferLimited; -} - -//not copied size, because that's count to the checksum, ... -uint64_t TransferThread::realByteTransfered() const -{ - switch(transfer_stat) - { - case TransferStat_Transfer: - case TransferStat_Checksum: - return (readThread.getLastGoodPosition()+writeThread.getLastGoodPosition())/2; - case TransferStat_PostTransfer: - return (readThread.getLastGoodPosition()+writeThread.getLastGoodPosition())/2; - case TransferStat_PostOperation: - return transferSize; - default: - return 0; - } -} - -//first is read, second is write -std::pair<uint64_t, uint64_t> TransferThread::progression() const -{ - std::pair<uint64_t,uint64_t> returnVar; - switch(transfer_stat) - { - case TransferStat_Transfer: - returnVar.first=readThread.getLastGoodPosition(); - returnVar.second=writeThread.getLastGoodPosition(); - /*if(returnVar.first<returnVar.second) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+QStringLiteral("] read is smaller than write"));*/ - break; - case TransferStat_Checksum: - returnVar.first=readThread.getLastGoodPosition(); - returnVar.second=writeThread.getLastGoodPosition(); - break; - case TransferStat_PostTransfer: - returnVar.first=transferSize; - returnVar.second=writeThread.getLastGoodPosition(); - /*if(returnVar.first<returnVar.second) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+QStringLiteral("] read is smaller than write"));*/ - break; - case TransferStat_PostOperation: - returnVar.first=transferSize; - returnVar.second=transferSize; - break; - default: - returnVar.first=0; - returnVar.second=0; - } - return returnVar; -} - -void TransferThread::setRenamingRules(const std::string &firstRenamingRule, const std::string &otherRenamingRule) -{ - this->firstRenamingRule=firstRenamingRule; - this->otherRenamingRule=otherRenamingRule; -} - -void TransferThread::setDeletePartiallyTransferredFiles(const bool &deletePartiallyTransferredFiles) -{ - this->deletePartiallyTransferredFiles=deletePartiallyTransferredFiles; -} - -void TransferThread::setRenameTheOriginalDestination(const bool &renameTheOriginalDestination) -{ - this->renameTheOriginalDestination=renameTheOriginalDestination; -} - -void TransferThread::set_updateMount() -{ - driveManagement.tryUpdate(); -} diff --git a/plugins/CopyEngine/Ultracopier/TransferThread.h b/plugins/CopyEngine/Ultracopier/TransferThread.h deleted file mode 100644 index fb64d6a..0000000 --- a/plugins/CopyEngine/Ultracopier/TransferThread.h +++ /dev/null @@ -1,292 +0,0 @@ -/** \file TransferThread.h -\brief Thread changed to manage the inode operation, the signals, canceling, pre and post operations -\author alpha_one_x86 -\licence GPL3, see the file COPYING */ - -#ifndef TRANSFERTHREAD_H -#define TRANSFERTHREAD_H - -#include <QThread> -#include <QFileInfo> -#include <regex> -#include <vector> -#include <string> -#include <QDateTime> -#include <QDir> -#include <utility> - -#ifdef Q_OS_UNIX - #include <utime.h> - #include <time.h> - #include <unistd.h> - #include <sys/stat.h> -#else - #ifdef Q_OS_WIN32 - #ifdef ULTRACOPIER_PLUGIN_SET_TIME_UNIX_WAY - #include <utime.h> - #include <time.h> - #include <unistd.h> - #include <sys/stat.h> - #endif - #endif -#endif - -#include "ReadThread.h" -#include "WriteThread.h" -#include "Environment.h" -#include "DriveManagement.h" -#include "StructEnumDefinition_CopyEngine.h" - -/// \brief Thread changed to manage the inode operation, the signals, canceling, pre and post operations -class TransferThread : public QThread -{ - Q_OBJECT -public: - explicit TransferThread(); - ~TransferThread(); - /// \brief get transfer stat - TransferStat getStat() const; - #ifdef ULTRACOPIER_PLUGIN_DEBUG - /// \brief to set the id - void setId(int id); - /// \brief get the reading letter - char readingLetter() const; - /// \brief get the writing letter - char writingLetter() const; - #endif - /// \brief to have semaphore, and try create just one by one - void setMkpathTransfer(QSemaphore *mkpathTransfer); - /// \brief to store the transfer id - uint64_t transferId; - /// \brief to store the transfer size - uint64_t transferSize; - bool haveStartTime; - QTime startTransferTime; - - void set_doChecksum(bool doChecksum); - void set_checksumIgnoreIfImpossible(bool checksumIgnoreIfImpossible); - void set_checksumOnlyOnError(bool checksumOnlyOnError); - void set_osBuffer(bool osBuffer); - void set_osBufferLimited(bool osBufferLimited); - - //not copied size, because that's count to the checksum, ... - uint64_t realByteTransfered() const; - std::pair<uint64_t, uint64_t> progression() const; - static std::string resolvedName(const QFileInfo &inode); - std::string getSourcePath() const; - std::string getDestinationPath() const; - QFileInfo getSourceInode() const; - QFileInfo getDestinationInode() const; - Ultracopier::CopyMode getMode() const; -protected: - void run(); -signals: - //to send state - void preOperationStopped() const; - void checkIfItCanBeResumed() const; - //void transferStarted();//not sended (and not used then) - void readStopped() const; - void writeStopped() const; - void postOperationStopped() const; - //get dialog - void fileAlreadyExists(const QFileInfo &info,const QFileInfo &info2,const bool &isSame) const; - void errorOnFile(const QFileInfo &info,const std::string &string,const ErrorType &errorType=ErrorType_Normal) const; - //internal signal - void internalStartPostOperation() const; - void internalStartPreOperation() const; - void internalStartResumeAfterErrorAndSeek() const; - /// \brief To debug source - void debugInformation(const Ultracopier::DebugLevel &level,std::string fonction,std::string text,std::string file,int ligne) const; - void tryPutAtBottom() const; - //force into the right thread - void internalTryStartTheTransfer() const; - /// \brief update the transfer stat - void pushStat(const TransferStat &stat,const uint64_t &pos) const; -public slots: - /// \brief to start the transfer of data - void startTheTransfer(); - /// \brief to set files to transfer - bool setFiles(const QFileInfo& source,const int64_t &size,const QFileInfo& destination,const Ultracopier::CopyMode &mode); - /// \brief to set file exists action to do - void setFileExistsAction(const FileExistsAction &action); - /// \brief to set the new name of the destination - void setFileRename(const std::string &nameForRename); - /// \brief to start the transfer of data - void setAlwaysFileExistsAction(const FileExistsAction &action); - /// \brief set the copy info and options before runing - void setRightTransfer(const bool doRightTransfer); - /// \brief set keep date - void setKeepDate(const bool keepDate); - #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT - /// \brief set the current max speed in KB/s - void setMultiForBigSpeed(const int &maxSpeed); - #endif - /// \brief set block size in KB - bool setBlockSize(const unsigned int blockSize); - /// \brief pause the copy - void pause(); - /// \brief resume the copy - void resume(); - /// \brief stop the copy - void stop(); - /// \brief skip the copy - void skip(); - /// \brief retry after error - void retryAfterError(); - /// \brief return info about the copied size - int64_t copiedSize(); - /// \brief put the current file at bottom - void putAtBottom(); - - #ifdef ULTRACOPIER_PLUGIN_RSYNC - void setRsync(const bool rsync); - #endif - - void set_osBufferLimit(const unsigned int &osBufferLimit); - void setRenamingRules(const std::string &firstRenamingRule,const std::string &otherRenamingRule); - #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT - //speed limitation - void timeOfTheBlockCopyFinished(); - #endif - - bool setParallelBuffer(const int ¶llelBuffer); - bool setSequentialBuffer(const int &sequentialBuffer); - void setTransferAlgorithm(const TransferAlgorithm &transferAlgorithm); - void setDeletePartiallyTransferredFiles(const bool &deletePartiallyTransferredFiles); - void setRenameTheOriginalDestination(const bool &renameTheOriginalDestination); - void set_updateMount(); -private slots: - void preOperation(); - void readIsReady(); - void writeIsReady(); - void readIsFinish(); - void writeIsFinish(); - void readIsClosed(); - void writeIsClosed(); - void postOperation(); - void getWriteError(); - void getReadError(); - void readChecksumFinish(const QByteArray&); - void writeChecksumFinish(const QByteArray&); - void compareChecksum(); - //void syncAfterErrorAndReadFinish(); - void readThreadIsSeekToZeroAndWait(); - void writeThreadIsReopened(); - void readThreadResumeAfterError(); - //to filter the emition of signal - void readIsStopped(); - void writeIsStopped(); - //force into the right thread - void internalStartTheTransfer(); -private: - enum MoveReturn - { - MoveReturn_skip=0, - MoveReturn_moved=1, - MoveReturn_error=2 - }; - TransferStat transfer_stat; - ReadThread readThread; - WriteThread writeThread; - /*QString source; - QString destination;*/ - Ultracopier::CopyMode mode; - bool doRightTransfer; - #ifdef ULTRACOPIER_PLUGIN_RSYNC - bool rsync; - #endif - bool keepDate; - //ready = open + ready to operation (no error to resolv) - bool readIsReadyVariable; - bool writeIsReadyVariable; - //can be open but with error - bool readIsOpeningVariable;//after call open() and before the end of internalOpen(), mostly to prevent internal error by open() when another is running - bool writeIsOpeningVariable;//after call open() and before the end of internalOpen(), mostly to prevent internal error by open() when another is running - bool readIsOpenVariable; - bool writeIsOpenVariable; - bool readIsFinishVariable; - bool writeIsFinishVariable; - bool readIsClosedVariable; - bool writeIsClosedVariable; - bool canBeMovedDirectlyVariable,canBeCopiedDirectlyVariable; - DriveManagement driveManagement; - QByteArray sourceChecksum,destinationChecksum; - volatile bool stopIt; - volatile bool canStartTransfer; - bool retry; - QFileInfo source; - QFileInfo destination; - int64_t size; - FileExistsAction fileExistsAction; - FileExistsAction alwaysDoFileExistsAction; - bool needSkip,needRemove; - QDateTime minTime; - int id; - QSemaphore *mkpathTransfer; - bool doChecksum,real_doChecksum; - bool checksumIgnoreIfImpossible; - bool checksumOnlyOnError; - bool deletePartiallyTransferredFiles; - bool osBuffer; - bool osBufferLimited; - unsigned int osBufferLimit; - std::string firstRenamingRule; - std::string otherRenamingRule; - //error management - bool writeError,writeError_source_seeked,writeError_destination_reopened; - bool readError; - bool renameTheOriginalDestination; - bool fileContentError; - bool doTheDateTransfer; - int parallelBuffer; - int sequentialBuffer; - int parallelizeIfSmallerThan; - std::regex renameRegex; - TransferAlgorithm transferAlgorithm; - #ifdef Q_OS_UNIX - utimbuf butime; - #else - #ifdef Q_OS_WIN32 - #ifdef ULTRACOPIER_PLUGIN_SET_TIME_UNIX_WAY - utimbuf butime; - #else - uint32_t ftCreateL, ftAccessL, ftWriteL; - uint32_t ftCreateH, ftAccessH, ftWriteH; - std::regex regRead; - #endif - #endif - #endif - QFileDevice::Permissions permissions; - bool havePermission; - //different pre-operation - bool isSame(); - bool destinationExists(); - bool checkAlwaysRename();///< return true if has been renamed - bool canBeMovedDirectly() const; - bool canBeCopiedDirectly() const; - void tryMoveDirectly(); - void tryCopyDirectly(); - void ifCanStartTransfer(); - //fonction to edit the file date time - bool readFileDateTime(const QFileInfo &source); - bool writeFileDateTime(const QFileInfo &destination); - bool readFilePermissions(const QFile &source); - bool writeFilePermissions(QFile &destination); - void resetExtraVariable(); - //error management function - void resumeTransferAfterWriteError(); - //to send state - bool sended_state_preOperationStopped; - bool sended_state_readStopped; - bool sended_state_writeStopped; - //different post-operation - bool checkIfAllIsClosedAndDoOperations();// return true if all is closed, and do some operations, don't use into condition to check if is closed! - bool doFilePostOperation(); - //different pre-operation - void tryOpen(); - bool remainFileOpen() const; - bool remainSourceOpen() const; - bool remainDestinationOpen() const; -}; - -#endif // TRANSFERTHREAD_H diff --git a/plugins/CopyEngine/Ultracopier/Variable.h b/plugins/CopyEngine/Ultracopier/Variable.h deleted file mode 100644 index 3311483..0000000 --- a/plugins/CopyEngine/Ultracopier/Variable.h +++ /dev/null @@ -1,45 +0,0 @@ -/** \file Variable.h
-\brief Define the environment variable
-\author alpha_one_x86
-\licence GPL3, see the file COPYING */
-
-#ifndef VARIABLE_H
-#define VARIABLE_H
-
-//Un-comment this next line to put ultracopier plugin in debug mode
-#ifndef ULTRACOPIER_NODEBUG
-#define ULTRACOPIER_PLUGIN_DEBUG
-//#define ULTRACOPIER_PLUGIN_DEBUG_SCHEDULER
-#define ULTRACOPIER_PLUGIN_DEBUG_WINDOW
-#define ULTRACOPIER_PLUGIN_DEBUG_WINDOW_TIMER 150
-#endif
-
-#define ULTRACOPIER_PLUGIN_MINTIMERINTERVAL 50
-#define ULTRACOPIER_PLUGIN_MAXTIMERINTERVAL 100
-#define ULTRACOPIER_PLUGIN_NUMSEMSPEEDMANAGEMENT 2
-#define ULTRACOPIER_PLUGIN_MAXPARALLELTRANFER 1
-#define ULTRACOPIER_PLUGIN_MINIMALYEAR 1995
-#define ULTRACOPIER_PLUGIN_DEFAULT_BLOCK_SIZE 256 //in KB
-#define ULTRACOPIER_PLUGIN_DEFAULT_SEQUENTIAL_NUMBER_OF_BLOCK 512
-#define ULTRACOPIER_PLUGIN_DEFAULT_PARALLEL_NUMBER_OF_BLOCK 4 //in KB
-#define ULTRACOPIER_PLUGIN_MAX_BLOCK_SIZE 16*1024 //in KB
-#define ULTRACOPIER_PLUGIN_MAX_SEQUENTIAL_NUMBER_OF_BLOCK 2048
-#define ULTRACOPIER_PLUGIN_MAX_PARALLEL_NUMBER_OF_BLOCK 128 //in KB
-
-//if set, check the inode type at scanFileOrFolder, deprecated into the new algorithm and not used
-#define ULTRACOPIER_PLUGIN_CHECKLISTTYPE
-
-#define ULTRACOPIER_PLUGIN_SPEED_SUPPORT
-//#define ULTRACOPIER_PLUGIN_RIGHTS
-
-/** \brief Need be greater than 2, but greater than 20 to be efficient */
-#define ULTRACOPIER_PLUGIN_TIME_UPDATE_TRASNFER_LIST 40
-#define ULTRACOPIER_PLUGIN_TIME_UPDATE_PROGRESSION 200
-#define ULTRACOPIER_PLUGIN_TIME_UPDATE_MOUNT_MS 60*1000
-
-//#define ULTRACOPIER_PLUGIN_SET_TIME_UNIX_WAY
-
-#endif // VARIABLE_H
-
-
-
diff --git a/plugins/CopyEngine/Ultracopier/WriteThread.cpp b/plugins/CopyEngine/Ultracopier/WriteThread.cpp deleted file mode 100644 index bbb35fa..0000000 --- a/plugins/CopyEngine/Ultracopier/WriteThread.cpp +++ /dev/null @@ -1,976 +0,0 @@ -#include "WriteThread.h" - -#ifdef Q_OS_LINUX -#include <fcntl.h> -#endif -#include <QDir> - -QMultiHash<QString,WriteThread *> WriteThread::writeFileList; -QMutex WriteThread::writeFileListMutex; - -WriteThread::WriteThread() -{ - deletePartiallyTransferredFiles = true; - lastGoodPosition = 0; - stopIt = false; - isOpen.release(); - moveToThread(this); - setObjectName(QStringLiteral("write")); - //this->mkpathTransfer = mkpathTransfer; - #ifdef ULTRACOPIER_PLUGIN_DEBUG - stat = Idle; - #endif - numberOfBlock = ULTRACOPIER_PLUGIN_DEFAULT_PARALLEL_NUMBER_OF_BLOCK; - buffer = false; - putInPause = false; - needRemoveTheFile = false; - blockSize = ULTRACOPIER_PLUGIN_DEFAULT_BLOCK_SIZE*1024; - start(); -} - -WriteThread::~WriteThread() -{ - stopIt=true; - needRemoveTheFile=true; - pauseMutex.release(); - writeFull.release(); - #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT - waitNewClockForSpeed.release(); - waitNewClockForSpeed2.release(); - #endif - writeFull.release(); - pauseMutex.release(); - // useless because stopIt will close all thread, but if thread not runing run it - //endIsDetected(); - emit internalStartClose(); - isOpen.acquire(); - if(!file.fileName().isEmpty()) - resumeNotStarted(); - //disconnect(this);//-> do into ~TransferThread() - quit(); - wait(); -} - -void WriteThread::run() -{ - connect(this,&WriteThread::internalStartOpen, this,&WriteThread::internalOpen, Qt::QueuedConnection); - connect(this,&WriteThread::internalStartReopen, this,&WriteThread::internalReopen, Qt::QueuedConnection); - connect(this,&WriteThread::internalStartWrite, this,&WriteThread::internalWrite, Qt::QueuedConnection); - connect(this,&WriteThread::internalStartClose, this,&WriteThread::internalCloseSlot, Qt::QueuedConnection); - connect(this,&WriteThread::internalStartEndOfFile, this,&WriteThread::internalEndOfFile, Qt::QueuedConnection); - connect(this,&WriteThread::internalStartFlushAndSeekToZero, this,&WriteThread::internalFlushAndSeekToZero, Qt::QueuedConnection); - connect(this,&WriteThread::internalStartChecksum, this,&WriteThread::checkSum, Qt::QueuedConnection); - exec(); -} - -bool WriteThread::internalOpen() -{ - //do a bug - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] internalOpen destination: "+file.fileName().toStdString()); - if(stopIt) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] close because stopIt is at true"); - emit closed(); - return false; - } - if(file.isOpen()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] already open! destination: "+file.fileName().toStdString()); - return false; - } - if(file.fileName().isEmpty()) - { - errorString_internal=tr("Path resolution error (Empty path)").toStdString(); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+QStringLiteral("Unable to open: %1, error: %2").arg(file.fileName()).arg(QString::fromStdString(errorString_internal)).toStdString()); - emit error(); - return false; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] before the mutex"); - //set to LISTBLOCKSIZE - if(sequential) - { - while(writeFull.available()<1) - writeFull.release(); - if(writeFull.available()>1) - writeFull.acquire(writeFull.available()-1); - } - else - { - while(writeFull.available()<numberOfBlock) - writeFull.release(); - if(writeFull.available()>numberOfBlock) - writeFull.acquire(writeFull.available()-numberOfBlock); - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] after the mutex"); - stopIt=false; - endDetected=false; - #ifdef ULTRACOPIER_PLUGIN_DEBUG - stat=InodeOperation; - #endif - //mkpath check if exists and return true if already exists - QFileInfo destinationInfo(file); - QDir destinationFolder; - { - mkpathTransfer->acquire(); - if(!destinationFolder.exists(destinationInfo.absolutePath())) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] Try create the path: "+ - destinationInfo.absolutePath().toStdString()); - if(!destinationFolder.mkpath(destinationInfo.absolutePath())) - { - if(!destinationFolder.exists(destinationInfo.absolutePath())) - { - /// \todo do real folder error here - errorString_internal="mkpath error on destination"; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+QStringLiteral("Unable create the folder: %1, error: %2") - .arg(destinationInfo.absolutePath()) - .arg(QString::fromStdString(errorString_internal)) - .toStdString()); - emit error(); - #ifdef ULTRACOPIER_PLUGIN_DEBUG - stat=Idle; - #endif - mkpathTransfer->release(); - return false; - } - } - } - mkpathTransfer->release(); - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] after the mkpath"); - if(stopIt) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] close because stopIt is at true"); - emit closed(); - return false; - } - //try open it - QIODevice::OpenMode flags=QIODevice::ReadWrite; - if(!buffer) - flags|=QIODevice::Unbuffered; - { - QMutexLocker lock_mutex(&writeFileListMutex); - if(writeFileList.count(file.fileName(),this)==0) - { - writeFileList.insert(file.fileName(),this); - if(writeFileList.count(file.fileName())>1) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] in waiting because same file is found"); - return false; - } - } - } - bool fileWasExists=file.exists(); - if(file.open(flags)) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] after the open"); - { - QMutexLocker lock_mutex(&accessList); - if(!theBlockList.isEmpty()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] General file corruption detected"); - stopIt=true; - file.close(); - resumeNotStarted(); - file.setFileName(QStringLiteral("")); - return false; - } - } - pauseMutex.tryAcquire(pauseMutex.available()); - #ifdef Q_OS_LINUX - const int intfd=file.handle(); - if(intfd!=-1) - posix_fadvise(intfd, 0, 0, POSIX_FADV_SEQUENTIAL); - #endif - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] after the pause mutex"); - if(stopIt) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] close because stopIt is at true"); - file.close(); - resumeNotStarted(); - file.setFileName(QStringLiteral("")); - emit closed(); - return false; - } - if(!file.seek(0)) - { - file.close(); - resumeNotStarted(); - file.setFileName(QStringLiteral("")); - errorString_internal=file.errorString().toStdString(); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+QStringLiteral("Unable to seek after open: %1, error: %2").arg(file.fileName()).arg(QString::fromStdString(errorString_internal)).toStdString()); - emit error(); - #ifdef ULTRACOPIER_PLUGIN_DEBUG - stat=Idle; - #endif - return false; - } - if(stopIt) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] close because stopIt is at true"); - file.close(); - resumeNotStarted(); - file.setFileName(QStringLiteral("")); - emit closed(); - return false; - } - if(!file.resize(startSize)) - { - file.close(); - resumeNotStarted(); - file.setFileName(QStringLiteral("")); - errorString_internal=file.errorString().toStdString(); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+QStringLiteral("Unable to resize to %1 after open: %2, error: %3").arg(startSize).arg(file.fileName()).arg(QString::fromStdString(errorString_internal)).toStdString()); - emit error(); - #ifdef ULTRACOPIER_PLUGIN_DEBUG - stat=Idle; - #endif - return false; - } - if(stopIt) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] close because stopIt is at true"); - file.close(); - resumeNotStarted(); - file.setFileName(QStringLiteral("")); - emit closed(); - return false; - } - isOpen.acquire(); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] emit opened()"); - emit opened(); - #ifdef ULTRACOPIER_PLUGIN_DEBUG - stat=Idle; - #endif - needRemoveTheFile=false; - postOperationRequested=false; - return true; - } - else - { - if(!fileWasExists && file.exists()) - if(!file.remove()) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] file created but can't be removed"); - if(stopIt) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] close because stopIt is at true"); - resumeNotStarted(); - file.setFileName(QStringLiteral("")); - emit closed(); - return false; - } - errorString_internal=file.errorString().toStdString(); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+QStringLiteral("Unable to open: %1, error: %2").arg(file.fileName()).arg(QString::fromStdString(errorString_internal)).toStdString()); - emit error(); - #ifdef ULTRACOPIER_PLUGIN_DEBUG - stat=Idle; - #endif - return false; - } -} - -void WriteThread::open(const QFileInfo &file,const uint64_t &startSize,const bool &buffer,const int &numberOfBlock,const bool &sequential) -{ - if(!isRunning()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] the thread not running to open destination: "+file.absoluteFilePath().toStdString()+", numberOfBlock: "+std::to_string(numberOfBlock)); - errorString_internal=tr("Internal error, please report it!").toStdString(); - emit error(); - return; - } - if(this->file.isOpen()) - { - if(file.absoluteFilePath()==this->file.fileName()) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] Try reopen already opened same file: "+file.absoluteFilePath().toStdString()); - else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+"] previous file is already open: "+file.absoluteFilePath().toStdString()); - emit internalStartClose(); - isOpen.acquire(); - isOpen.release(); - } - if(numberOfBlock<1 || (numberOfBlock>ULTRACOPIER_PLUGIN_MAX_PARALLEL_NUMBER_OF_BLOCK && numberOfBlock>ULTRACOPIER_PLUGIN_MAX_SEQUENTIAL_NUMBER_OF_BLOCK)) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] numberOfBlock wrong, set to default"); - this->numberOfBlock=ULTRACOPIER_PLUGIN_DEFAULT_PARALLEL_NUMBER_OF_BLOCK; - } - else - this->numberOfBlock=numberOfBlock; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] "+QStringLiteral("open destination: %1, sequential: %2").arg(file.absoluteFilePath()).arg(sequential).toStdString()); - stopIt=false; - fakeMode=false; - lastGoodPosition=0; - this->file.setFileName(file.absoluteFilePath()); - this->startSize=startSize; - this->buffer=buffer; - this->sequential=sequential; - endDetected=false; - writeFullBlocked=false; - emit internalStartOpen(); - #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT - numberOfBlockCopied=0; - #endif -} - -void WriteThread::endIsDetected() -{ - if(endDetected) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] double event dropped"); - return; - } - endDetected=true; - pauseMutex.release(); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start"); - emit internalStartEndOfFile(); -} - -std::string WriteThread::errorString() const -{ - return errorString_internal; -} - -void WriteThread::stop() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] stop()"); - needRemoveTheFile=true; - stopIt=true; - if(isOpen.available()>0) - return; - writeFull.release(); - pauseMutex.release(); - pauseMutex.release(); - #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT - waitNewClockForSpeed.release(); - waitNewClockForSpeed2.release(); - #endif - // useless because stopIt will close all thread, but if thread not runing run it - endIsDetected(); - //for the stop for skip: void TransferThread::skip() - emit internalStartClose(); -} - -void WriteThread::flushBuffer() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start"); - writeFull.release(); - writeFull.acquire(); - pauseMutex.release(); - { - QMutexLocker lock_mutex(&accessList); - theBlockList.clear(); - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] stop"); -} - -/// \brief buffer is empty -bool WriteThread::bufferIsEmpty() -{ - bool returnVal; - { - QMutexLocker lock_mutex(&accessList); - returnVal=theBlockList.isEmpty(); - } - return returnVal; -} - -void WriteThread::internalEndOfFile() -{ - if(!bufferIsEmpty()) - { - if(sequential) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start the write"); - emit internalStartWrite(); - } - else - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] buffer is not empty!"); - } - else - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] writeIsStopped"); - emit writeIsStopped(); - } -} - -#ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT -/*! \brief Set the max speed -\param tempMaxSpeed Set the max speed in KB/s, 0 for no limit */ -void WriteThread::setMultiForBigSpeed(const int &multiForBigSpeed) -{ - this->multiForBigSpeed=multiForBigSpeed; - waitNewClockForSpeed.release(); - waitNewClockForSpeed2.release(); -} - -/// \brief For give timer every X ms -void WriteThread::timeOfTheBlockCopyFinished() -{ - /* this is the old way to limit the speed, it product blocking - *if(waitNewClockForSpeed.available()<ULTRACOPIER_PLUGIN_NUMSEMSPEEDMANAGEMENT) - waitNewClockForSpeed.release();*/ - - //try this new way: - /* only if speed limited, else will accumulate waitNewClockForSpeed - * Disabled because: Stop call of this method when no speed limit - if(this->maxSpeed>0)*/ - if(waitNewClockForSpeed.available()<=1) - waitNewClockForSpeed.release(); - if(waitNewClockForSpeed2.available()<=1) - waitNewClockForSpeed2.release(); -} -#endif - -void WriteThread::resumeNotStarted() -{ - QMutexLocker lock_mutex(&writeFileListMutex); - #ifdef ULTRACOPIER_PLUGIN_DEBUG - if(!writeFileList.contains(file.fileName())) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+"] file: \""+file.fileName().toStdString()+"\" for similar inode is not located into the list of "+std::to_string(writeFileList.size())+" items!"); - #endif - writeFileList.remove(file.fileName(),this); - if(writeFileList.contains(file.fileName())) - { - QList<WriteThread *> writeList=writeFileList.values(file.fileName()); - if(!writeList.isEmpty()) - writeList.first()->reemitStartOpen(); - return; - } -} - -void WriteThread::pause() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] try put read thread in pause"); - pauseMutex.tryAcquire(pauseMutex.available()); - putInPause=true; - return; -} - -void WriteThread::resume() -{ - if(putInPause) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start"); - putInPause=false; - stopIt=false; - } - else - return; - if(!file.isOpen()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] file is not open"); - return; - } - pauseMutex.release(); -} - -void WriteThread::reemitStartOpen() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] start"); - emit internalStartOpen(); -} - -void WriteThread::postOperation() -{ - if(postOperationRequested) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+"] double event dropped"); - return; - } - postOperationRequested=true; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start"); - emit internalStartClose(); -} - -void WriteThread::internalCloseSlot() -{ - internalClose(); -} - -void WriteThread::internalClose(bool emitSignal) -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] close for file: "+file.fileName().toStdString()); - /// \note never send signal here, because it's called by the destructor - #ifdef ULTRACOPIER_PLUGIN_DEBUG - stat=Close; - #endif - bool emit_closed=false; - if(!fakeMode) - { - if(file.isOpen()) - { - if(!needRemoveTheFile) - { - if(startSize!=lastGoodPosition) - if(!file.resize(lastGoodPosition)) - { - if(emitSignal) - { - errorString_internal=file.errorString().toStdString(); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+QStringLiteral("Unable to seek after open: %1, error: %2").arg(file.fileName()).arg(QString::fromStdString(errorString_internal)).toStdString()); - emit error(); - } - else - needRemoveTheFile=true; - } - } - file.close(); - if(needRemoveTheFile || stopIt) - { - if(deletePartiallyTransferredFiles) - { - if(!file.remove()) - if(emitSignal) - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] unable to remove the destination file"); - } - } - //here and not after, because the transferThread don't need try close if not open - if(emitSignal) - emit_closed=true; - } - } - else - { - //here and not after, because the transferThread don't need try close if not open - - if(emitSignal) - emit_closed=true; - } - needRemoveTheFile=false; - resumeNotStarted(); - //warning: file.setFileName(""); need be after resumeNotStarted() - file.setFileName(QStringLiteral("")); - if(emit_closed) - emit closed(); - - #ifdef ULTRACOPIER_PLUGIN_DEBUG - stat=Idle; - #endif - - /// \note always the last of this function - if(!fakeMode) - isOpen.release(); -} - -void WriteThread::internalReopen() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start"); - QString tempFile=file.fileName(); - internalClose(false); - flushBuffer(); - stopIt=false; - lastGoodPosition=0; - file.setFileName(tempFile); - if(internalOpen()) - emit reopened(); -} - -void WriteThread::reopen() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start"); - stopIt=true; - endDetected=false; - emit internalStartReopen(); -} - -#ifdef ULTRACOPIER_PLUGIN_DEBUG -//to set the id -void WriteThread::setId(int id) -{ - this->id=id; -} -#endif - -/// \brief do the fake open -void WriteThread::fakeOpen() -{ - fakeMode=true; - postOperationRequested=false; - emit opened(); -} - -/// \brief do the fake writeIsStarted -void WriteThread::fakeWriteIsStarted() -{ - emit writeIsStarted(); -} - -/// \brief do the fake writeIsStopped -void WriteThread::fakeWriteIsStopped() -{ - emit writeIsStopped(); -} - -/// do the checksum -void WriteThread::startCheckSum() -{ - emit internalStartChecksum(); -} - -/** \brief set block size -\param block the new block size in B -\return Return true if succes */ -bool WriteThread::setBlockSize(const int blockSize) -{ - //can be smaller than min block size to do correct speed limitation - if(blockSize>1 && blockSize<ULTRACOPIER_PLUGIN_MAX_BLOCK_SIZE*1024) - { - this->blockSize=blockSize; - return true; - } - else - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"block size out of range: "+std::to_string(blockSize)); - return false; - } -} - -/// \brief get the last good position -int64_t WriteThread::getLastGoodPosition() const -{ - return lastGoodPosition; -} - -void WriteThread::flushAndSeekToZero() -{ - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"flushAndSeekToZero: "+std::to_string(blockSize)); - stopIt=true; - emit internalStartFlushAndSeekToZero(); -} - - -void WriteThread::checkSum() -{ - //QByteArray blockArray; - QCryptographicHash hash(QCryptographicHash::Sha1); - endDetected=false; - lastGoodPosition=0; - #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT - numberOfBlockCopied=0; - #endif - if(!file.seek(0)) - { - errorString_internal=file.errorString().toStdString(); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+QStringLiteral("Unable to seek after open: %1, error: %2").arg(file.fileName()).arg(QString::fromStdString(errorString_internal)).toStdString()); - emit error(); - return; - } - int sizeReaden=0; - do - { - if(putInPause) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"["+std::to_string(id)+"] write put in pause"); - if(stopIt) - return; - pauseMutex.acquire(); - if(stopIt) - return; - } - //read one block - #ifdef ULTRACOPIER_PLUGIN_DEBUG - stat=Read; - #endif - blockArray=file.read(blockSize); - #ifdef ULTRACOPIER_PLUGIN_DEBUG - stat=Idle; - #endif - - if(file.error()!=QFile::NoError) - { - errorString_internal=tr("Unable to read the source file: ").toStdString()+file.errorString().toStdString()+" ("+std::to_string(file.error())+")"; - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+QStringLiteral("file.error()!=QFile::NoError: %1, error: %2").arg(QString::number(file.error())).arg(QString::fromStdString(errorString_internal)).toStdString()); - emit error(); - return; - } - sizeReaden=blockArray.size(); - if(sizeReaden>0) - { - #ifdef ULTRACOPIER_PLUGIN_DEBUG - stat=Checksum; - #endif - hash.addData(blockArray); - #ifdef ULTRACOPIER_PLUGIN_DEBUG - stat=Idle; - #endif - - if(stopIt) - break; - - lastGoodPosition+=blockArray.size(); - } - } - while(sizeReaden>0 && !stopIt); - if(lastGoodPosition>(quint64)file.size()) - { - errorString_internal=tr("File truncated during read, possible data change").toStdString(); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+QStringLiteral("Source truncated during the read: %1 (%2)").arg(file.errorString()).arg(QString::number(file.error())).toStdString()); - emit error(); - return; - } - if(stopIt) - { -/* if(putInPause) - emit isInPause();*/ - stopIt=false; - return; - } - emit checksumFinish(hash.result()); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] stop the read"); -} - -void WriteThread::internalFlushAndSeekToZero() -{ - flushBuffer(); - if(!file.seek(0)) - { - errorString_internal=file.errorString().toStdString(); - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+QStringLiteral("Unable to seek after open: %1, error: %2").arg(file.fileName()).arg(QString::fromStdString(errorString_internal)).toStdString()); - emit error(); - return; - } - stopIt=false; - emit flushedAndSeekedToZero(); -} - -void WriteThread::setMkpathTransfer(QSemaphore *mkpathTransfer) -{ - this->mkpathTransfer=mkpathTransfer; -} - -void WriteThread::setDeletePartiallyTransferredFiles(const bool &deletePartiallyTransferredFiles) -{ - this->deletePartiallyTransferredFiles=deletePartiallyTransferredFiles; -} - -bool WriteThread::write(const QByteArray &data) -{ - if(stopIt) - return false; - bool atMax; - if(sequential) - { - if(stopIt) - return false; - { - QMutexLocker lock_mutex(&accessList); - theBlockList.append(data); - atMax=(theBlockList.size()>=numberOfBlock); - } - if(atMax) - emit internalStartWrite(); - } - else - { - if(stopIt) - return false; - { - QMutexLocker lock_mutex(&accessList); - theBlockList.append(data); - atMax=(theBlockList.size()>=numberOfBlock); - } - emit internalStartWrite(); - } - if(atMax) - { - writeFullBlocked=true; - writeFull.acquire(); - writeFullBlocked=false; - } - if(stopIt) - return false; - #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT - //wait for limitation speed if stop not query - if(multiForBigSpeed>0) - { - if(sequential) - { - numberOfBlockCopied++; - if(numberOfBlockCopied>=(multiForBigSpeed*2)) - { - numberOfBlockCopied=0; - waitNewClockForSpeed.acquire(); - } - } - else - { - numberOfBlockCopied2++; - if(numberOfBlockCopied2>=multiForBigSpeed) - { - numberOfBlockCopied2=0; - waitNewClockForSpeed2.acquire(); - } - } - } - #endif - if(stopIt) - return false; - return true; -} - -void WriteThread::internalWrite() -{ - #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT - if(sequential) - { - multiForBigSpeed=0; - QMutexLocker lock_mutex(&accessList); - if(theBlockList.size()<numberOfBlock && !endDetected) - return; - } - #endif - bool haveBlock; - do - { - if(putInPause) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"["+std::to_string(id)+"] write put in pause"); - if(stopIt) - return; - pauseMutex.acquire(); - if(stopIt) - return; - } - if(stopIt) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] stopIt"); - return; - } - if(stopIt) - return; - //read one block - { - QMutexLocker lock_mutex(&accessList); - if(theBlockList.isEmpty()) - haveBlock=false; - else - { - blockArray=theBlockList.first(); - if(multiForBigSpeed>0) - { - if(blockArray.size()==blockSize) - { - theBlockList.removeFirst(); - //if remove one block - if(!sequential) - writeFull.release(); - } - else - { - blockArray.clear(); - while(blockArray.size()!=blockSize) - { - //if larger - if(theBlockList.first().size()>blockSize) - { - blockArray+=theBlockList.first().mid(0,blockSize); - theBlockList.first().remove(0,blockSize); - if(!sequential) - { - //do write in loop to finish the actual block - emit internalStartWrite(); - } - break; - } - //if smaller - else - { - blockArray+=theBlockList.first(); - theBlockList.removeFirst(); - //if remove one block - if(!sequential) - writeFull.release(); - if(theBlockList.isEmpty()) - break; - } - } - } - //haveBlock=!blockArray.isEmpty(); - } - else - { - theBlockList.removeFirst(); - //if remove one block - if(!sequential) - writeFull.release(); - } - haveBlock=true; - } - } - if(stopIt) - return; - if(!haveBlock) - { - if(sequential) - { - if(endDetected) - internalEndOfFile(); - else - writeFull.release(); - return; - } - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] End detected of the file"); - return; - } - #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT - //wait for limitation speed if stop not query - if(multiForBigSpeed>0) - { - numberOfBlockCopied++; - if(sequential || (!sequential && writeFullBlocked)) - { - if(numberOfBlockCopied>=(multiForBigSpeed*2)) - { - numberOfBlockCopied=0; - waitNewClockForSpeed.acquire(); - if(stopIt) - break; - } - } - else - { - if(numberOfBlockCopied>=multiForBigSpeed) - { - numberOfBlockCopied=0; - waitNewClockForSpeed.acquire(); - if(stopIt) - break; - } - } - } - #endif - if(stopIt) - return; - #ifdef ULTRACOPIER_PLUGIN_DEBUG - stat=Write; - #endif - bytesWriten=file.write(blockArray); - #ifdef ULTRACOPIER_PLUGIN_DEBUG - stat=Idle; - #endif - //mutex for stream this data - if(lastGoodPosition==0) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] emit writeIsStarted()"); - emit writeIsStarted(); - } - if(stopIt) - return; - if(file.error()!=QFile::NoError) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+QStringLiteral("Error in writing: %1 (%2)").arg(file.errorString()).arg(file.error()).toStdString()); - errorString_internal=QStringLiteral("Error in writing: %1 (%2)").arg(file.errorString()).arg(file.error()).toStdString(); - stopIt=true; - emit error(); - return; - } - if(bytesWriten!=blockArray.size()) - { - ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+QStringLiteral("Error in writing, bytesWriten: %1, blockArray.size(): %2").arg(bytesWriten).arg(blockArray.size()).toStdString()); - errorString_internal=QStringLiteral("Error in writing, bytesWriten: %1, blockArray.size(): %2").arg(bytesWriten).arg(blockArray.size()).toStdString(); - stopIt=true; - emit error(); - return; - } - lastGoodPosition+=bytesWriten; - } while(sequential); -} diff --git a/plugins/CopyEngine/Ultracopier/WriteThread.h b/plugins/CopyEngine/Ultracopier/WriteThread.h deleted file mode 100644 index cadd022..0000000 --- a/plugins/CopyEngine/Ultracopier/WriteThread.h +++ /dev/null @@ -1,160 +0,0 @@ -/** \file WriteThread.h -\brief Thread changed to open/close and write the destination file -\author alpha_one_x86 -\licence GPL3, see the file COPYING */ - -#ifndef WRITETHREAD_H -#define WRITETHREAD_H - -#include <QThread> -#include <QByteArray> -#include <QString> -#include <QMutex> -#include <QSemaphore> -#include <QCryptographicHash> - -#include "Environment.h" -#include "StructEnumDefinition_CopyEngine.h" -#include "AvancedQFile.h" - -/// \brief Thread changed to open/close and write the destination file -class WriteThread : public QThread -{ - Q_OBJECT -public: - explicit WriteThread(); - ~WriteThread(); - /// \brief to have semaphore to do mkpath one by one - void setMkpathTransfer(QSemaphore *mkpathTransfer); -protected: - void run(); -public: - /// \brief open the destination to open it - void open(const QFileInfo &file,const uint64_t &startSize,const bool &buffer,const int &numberOfBlock,const bool &sequential); - /// \brief to return the error string - std::string errorString() const; - /// \brief to stop all - void stop(); - /// \brief to write data - bool write(const QByteArray &data); - #ifdef ULTRACOPIER_PLUGIN_DEBUG - /// \brief to set the id - void setId(int id); - /// \brief get the write stat - enum WriteStat - { - Idle=0, - InodeOperation=1, - Write=2, - Close=3, - Read=5, - Checksum=6 - }; - WriteStat stat; - #endif - /// \brief do the fake open - void fakeOpen(); - /// \brief do the fake writeIsStarted - void fakeWriteIsStarted(); - /// \brief do the fake writeIsStopped - void fakeWriteIsStopped(); - /// do the checksum - void startCheckSum(); - /// \brief set block size in KB - bool setBlockSize(const int blockSize); - /// \brief get the last good position - int64_t getLastGoodPosition() const; - /// \brief buffer is empty - bool bufferIsEmpty(); - #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT - /// \brief set the current max speed in KB/s - void setMultiForBigSpeed(const int &multiForBigSpeed); - #endif - void pause(); - void resume(); - void reemitStartOpen(); -public slots: - /// \brief start the operation - void postOperation(); - /// \brief flush buffer - void flushBuffer(); - /// \brief set the end is detected - void endIsDetected(); - /// \brief reopen the file - void reopen(); - /// \brief flush and seek to zero - void flushAndSeekToZero(); - /// do the checksum - void checkSum(); - void setDeletePartiallyTransferredFiles(const bool &deletePartiallyTransferredFiles); - /// \brief executed at regular interval to do a speed throling - void timeOfTheBlockCopyFinished(); - - void resumeNotStarted(); -signals: - void error() const; - void opened() const; - void reopened() const; - void writeIsStarted() const; - void writeIsStopped() const; - void flushedAndSeekedToZero() const; - void closed() const; - void checksumFinish(const QByteArray&) const; - //internal signals - void internalStartOpen() const; - void internalStartChecksum() const; - void internalStartReopen() const; - void internalStartWrite() const; - void internalStartClose() const; - void internalStartEndOfFile() const; - void internalStartFlushAndSeekToZero() const; - /// \brief To debug source - void debugInformation(const Ultracopier::DebugLevel &level,const std::string &fonction,const std::string &text,const std::string &file,const int &ligne) const; -private: - std::string errorString_internal; - AvancedQFile file; - volatile bool stopIt; - volatile bool postOperationRequested; - volatile int blockSize;//only used in checksum - int numberOfBlock; - QMutex accessList; ///< For use the list - static QMultiHash<QString,WriteThread *> writeFileList; - static QMutex writeFileListMutex; - #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT - QSemaphore waitNewClockForSpeed,waitNewClockForSpeed2; - volatile int numberOfBlockCopied,numberOfBlockCopied2; ///< Multiple for count the number of block copied - volatile int multiplicatorForBigSpeed; ///< Multiple for count the number of block needed - volatile int MultiForBigSpeed; - #endif - QSemaphore writeFull; - volatile bool writeFullBlocked; - QSemaphore isOpen; - QSemaphore pauseMutex; - volatile bool putInPause; - QList<QByteArray> theBlockList; ///< Store the block list - uint64_t lastGoodPosition; - QByteArray blockArray; ///< temp data for block writing, the data - int64_t bytesWriten; ///< temp data for block writing, the bytes writen - int id; - volatile bool endDetected; - uint64_t startSize; - QSemaphore *mkpathTransfer; - bool fakeMode; - bool buffer; - bool needRemoveTheFile; - volatile bool sequential; - bool deletePartiallyTransferredFiles; - #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT - volatile int multiForBigSpeed; ///< Multiple for count the number of block needed - #endif -private slots: - bool internalOpen(); - void internalWrite(); - void internalCloseSlot(); - void internalClose(bool emitSignal=true); - void internalReopen(); - void internalEndOfFile(); - void internalFlushAndSeekToZero(); -}; - -#endif // WRITETHREAD_H diff --git a/plugins/CopyEngine/Ultracopier/copyEngineOptions.ui b/plugins/CopyEngine/Ultracopier/copyEngineOptions.ui deleted file mode 100644 index 73e57f9..0000000 --- a/plugins/CopyEngine/Ultracopier/copyEngineOptions.ui +++ /dev/null @@ -1,771 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>copyEngineOptions</class> - <widget class="QWidget" name="copyEngineOptions"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>801</width> - <height>504</height> - </rect> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <property name="spacing"> - <number>0</number> - </property> - <property name="leftMargin"> - <number>0</number> - </property> - <property name="topMargin"> - <number>0</number> - </property> - <property name="rightMargin"> - <number>0</number> - </property> - <property name="bottomMargin"> - <number>0</number> - </property> - <item> - <widget class="QToolBox" name="toolBox"> - <property name="currentIndex"> - <number>3</number> - </property> - <widget class="QWidget" name="page_trasnfer"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>791</width> - <height>349</height> - </rect> - </property> - <attribute name="label"> - <string>Transfer</string> - </attribute> - <layout class="QGridLayout" name="gridLayout_5"> - <item row="3" column="2"> - <widget class="QCheckBox" name="moveTheWholeFolder"/> - </item> - <item row="3" column="0"> - <widget class="QLabel" name="label_18"> - <property name="text"> - <string>Move the whole folder</string> - </property> - </widget> - </item> - <item row="0" column="0"> - <widget class="QLabel" name="label"> - <property name="text"> - <string>Transfer the file rights</string> - </property> - </widget> - </item> - <item row="0" column="2"> - <widget class="QCheckBox" name="doRightTransfer"/> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="label_2"> - <property name="text"> - <string>Keep the file date</string> - </property> - </widget> - </item> - <item row="2" column="2"> - <widget class="QCheckBox" name="autoStart"/> - </item> - <item row="1" column="2"> - <widget class="QCheckBox" name="keepDate"/> - </item> - <item row="2" column="0"> - <widget class="QLabel" name="label_5"> - <property name="text"> - <string>Autostart the transfer</string> - </property> - </widget> - </item> - <item row="4" column="2"> - <widget class="QCheckBox" name="followTheStrictOrder"> - <property name="toolTip"> - <string>Less performance if checked</string> - </property> - </widget> - </item> - <item row="6" column="1"> - <spacer name="verticalSpacer_6"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>278</height> - </size> - </property> - </spacer> - </item> - <item row="4" column="0"> - <widget class="QLabel" name="label_19"> - <property name="toolTip"> - <string>Less performance if checked</string> - </property> - <property name="text"> - <string>Follow the strict order</string> - </property> - </widget> - </item> - <item row="5" column="0"> - <widget class="QLabel" name="label_rsync"> - <property name="text"> - <string notr="true">Rsync</string> - </property> - </widget> - </item> - <item row="5" column="2"> - <widget class="QCheckBox" name="rsync"/> - </item> - </layout> - </widget> - <widget class="QWidget" name="page_error_collision"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>791</width> - <height>349</height> - </rect> - </property> - <attribute name="label"> - <string>Error and collision</string> - </attribute> - <layout class="QGridLayout" name="gridLayout_4"> - <item row="2" column="0"> - <widget class="QLabel" name="label_6"> - <property name="text"> - <string>When folder error</string> - </property> - </widget> - </item> - <item row="4" column="2"> - <widget class="QCheckBox" name="checkBoxDestinationFolderExists"/> - </item> - <item row="0" column="0"> - <widget class="QLabel" name="label_12"> - <property name="text"> - <string>When file error</string> - </property> - </widget> - </item> - <item row="0" column="2"> - <widget class="QComboBox" name="comboBoxFileError"> - <item> - <property name="text"> - <string notr="true">Ask</string> - </property> - </item> - <item> - <property name="text"> - <string notr="true">Skip</string> - </property> - </item> - <item> - <property name="text"> - <string notr="true">Put at the end</string> - </property> - </item> - </widget> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="label_13"> - <property name="text"> - <string>When file collision</string> - </property> - </widget> - </item> - <item row="1" column="2"> - <widget class="QComboBox" name="comboBoxFileCollision"> - <item> - <property name="text"> - <string notr="true">Ask</string> - </property> - </item> - <item> - <property name="text"> - <string notr="true">Skip</string> - </property> - </item> - <item> - <property name="text"> - <string notr="true">Overwrite</string> - </property> - </item> - <item> - <property name="text"> - <string notr="true">Overwrite if different</string> - </property> - </item> - <item> - <property name="text"> - <string notr="true">Overwrite if newer</string> - </property> - </item> - <item> - <property name="text"> - <string notr="true">Overwrite if older</string> - </property> - </item> - <item> - <property name="text"> - <string notr="true">Rename</string> - </property> - </item> - </widget> - </item> - <item row="2" column="2"> - <widget class="QComboBox" name="comboBoxFolderError"> - <item> - <property name="text"> - <string notr="true">Ask</string> - </property> - </item> - <item> - <property name="text"> - <string notr="true">Skip</string> - </property> - </item> - </widget> - </item> - <item row="3" column="0"> - <widget class="QLabel" name="label_7"> - <property name="text"> - <string>When folder collision</string> - </property> - </widget> - </item> - <item row="3" column="2"> - <widget class="QComboBox" name="comboBoxFolderCollision"> - <item> - <property name="text"> - <string notr="true">Ask</string> - </property> - </item> - <item> - <property name="text"> - <string notr="true">Merge</string> - </property> - </item> - <item> - <property name="text"> - <string notr="true">Skip</string> - </property> - </item> - <item> - <property name="text"> - <string notr="true">Rename</string> - </property> - </item> - </widget> - </item> - <item row="4" column="0"> - <widget class="QLabel" name="label_8"> - <property name="text"> - <string>Check if destination folder exists</string> - </property> - </widget> - </item> - <item row="7" column="1"> - <widget class="QPushButton" name="renamingRules"> - <property name="text"> - <string>Renaming rules</string> - </property> - </widget> - </item> - <item row="8" column="1"> - <spacer name="verticalSpacer_5"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>193</height> - </size> - </property> - </spacer> - </item> - <item row="5" column="0"> - <widget class="QLabel" name="label_20"> - <property name="text"> - <string>Delete partially transferred files</string> - </property> - </widget> - </item> - <item row="5" column="2"> - <widget class="QCheckBox" name="deletePartiallyTransferredFiles"/> - </item> - <item row="6" column="2"> - <widget class="QCheckBox" name="renameTheOriginalDestination"/> - </item> - <item row="6" column="0"> - <widget class="QLabel" name="label_22"> - <property name="text"> - <string>Rename the original destination</string> - </property> - </widget> - </item> - </layout> - <zorder>label_12</zorder> - <zorder>label_13</zorder> - <zorder>label_6</zorder> - <zorder>label_7</zorder> - <zorder>label_8</zorder> - <zorder>comboBoxFileError</zorder> - <zorder>comboBoxFileCollision</zorder> - <zorder>comboBoxFolderError</zorder> - <zorder>comboBoxFolderCollision</zorder> - <zorder>checkBoxDestinationFolderExists</zorder> - <zorder>renamingRules</zorder> - <zorder>label_20</zorder> - <zorder>deletePartiallyTransferredFiles</zorder> - <zorder>renameTheOriginalDestination</zorder> - <zorder>label_22</zorder> - </widget> - <widget class="QWidget" name="page_control"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>791</width> - <height>349</height> - </rect> - </property> - <attribute name="label"> - <string>Control</string> - </attribute> - <layout class="QVBoxLayout" name="verticalLayout_2"> - <item> - <widget class="QGroupBox" name="groupBox"> - <property name="title"> - <string>Checksum</string> - </property> - <layout class="QGridLayout" name="gridLayout_2"> - <item row="1" column="1"> - <widget class="QCheckBox" name="checksumOnlyOnError"/> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="label_9"> - <property name="text"> - <string>Only after error</string> - </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QLabel" name="label_10"> - <property name="text"> - <string>Ignore if impossible</string> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QCheckBox" name="checksumIgnoreIfImpossible"/> - </item> - <item row="0" column="1"> - <widget class="QCheckBox" name="doChecksum"> - <property name="checked"> - <bool>true</bool> - </property> - </widget> - </item> - <item row="0" column="0"> - <widget class="QLabel" name="label_11"> - <property name="text"> - <string>Verify checksums</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <spacer name="verticalSpacer_4"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>242</height> - </size> - </property> - </spacer> - </item> - </layout> - </widget> - <widget class="QWidget" name="page_performance"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>791</width> - <height>349</height> - </rect> - </property> - <attribute name="label"> - <string>Performance</string> - </attribute> - <layout class="QGridLayout" name="gridLayout"> - <item row="5" column="0"> - <widget class="QLabel" name="label_16"> - <property name="text"> - <string>Parallel buffer</string> - </property> - </widget> - </item> - <item row="4" column="1"> - <widget class="QSpinBox" name="sequentialBuffer"> - <property name="suffix"> - <string>KB</string> - </property> - <property name="minimum"> - <number>1</number> - </property> - <property name="maximum"> - <number>999999999</number> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QSpinBox" name="blockSize"> - <property name="suffix"> - <string>KB</string> - </property> - <property name="minimum"> - <number>1</number> - </property> - <property name="maximum"> - <number>65536</number> - </property> - </widget> - </item> - <item row="5" column="1"> - <widget class="QSpinBox" name="parallelBuffer"> - <property name="suffix"> - <string>KB</string> - </property> - <property name="minimum"> - <number>1</number> - </property> - <property name="maximum"> - <number>999999999</number> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QCheckBox" name="osBuffer"/> - </item> - <item row="0" column="0"> - <widget class="QLabel" name="label_4"> - <property name="text"> - <string>Block size</string> - </property> - </widget> - </item> - <item row="4" column="0"> - <widget class="QLabel" name="label_15"> - <property name="text"> - <string>Sequential buffer</string> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="label_3"> - <property name="text"> - <string>Enable OS buffer</string> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QSpinBox" name="osBufferLimit"> - <property name="suffix"> - <string>KB</string> - </property> - <property name="minimum"> - <number>1</number> - </property> - <property name="maximum"> - <number>2048</number> - </property> - <property name="value"> - <number>512</number> - </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QCheckBox" name="osBufferLimited"> - <property name="text"> - <string>OS buffer only if smaller than</string> - </property> - </widget> - </item> - <item row="3" column="0"> - <widget class="QLabel" name="label_14"> - <property name="text"> - <string>Transfer algorithm</string> - </property> - </widget> - </item> - <item row="3" column="1"> - <widget class="QComboBox" name="transferAlgorithm"> - <item> - <property name="text"> - <string notr="true">Automatic</string> - </property> - </item> - <item> - <property name="text"> - <string notr="true">Sequential</string> - </property> - </item> - <item> - <property name="text"> - <string notr="true">Parallel</string> - </property> - </item> - </widget> - </item> - <item row="9" column="1"> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>197</height> - </size> - </property> - </spacer> - </item> - <item row="6" column="0"> - <widget class="QLabel" name="label_17"> - <property name="text"> - <string>Parallelize if smaller than</string> - </property> - </widget> - </item> - <item row="6" column="1"> - <widget class="QSpinBox" name="parallelizeIfSmallerThan"> - <property name="suffix"> - <string>KB</string> - </property> - <property name="maximum"> - <number>1024</number> - </property> - </widget> - </item> - <item row="7" column="1"> - <widget class="QSpinBox" name="inodeThreads"> - <property name="minimum"> - <number>1</number> - </property> - <property name="maximum"> - <number>32</number> - </property> - <property name="value"> - <number>16</number> - </property> - </widget> - </item> - <item row="7" column="0"> - <widget class="QLabel" name="label_21"> - <property name="text"> - <string>Inode threads (unsafe > 1)</string> - </property> - </widget> - </item> - <item row="8" column="1"> - <widget class="QCheckBox" name="copyListOrder"> - <property name="toolTip"> - <string>More cpu, but better organisation on the disk</string> - </property> - <property name="text"> - <string/> - </property> - </widget> - </item> - <item row="8" column="0"> - <widget class="QLabel" name="label_25"> - <property name="toolTip"> - <string>More cpu, but better organisation on the disk</string> - </property> - <property name="text"> - <string>Order the list</string> - </property> - </widget> - </item> - </layout> - </widget> - <widget class="QWidget" name="page_misc"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>791</width> - <height>349</height> - </rect> - </property> - <attribute name="label"> - <string>Misc</string> - </attribute> - <layout class="QGridLayout" name="gridLayout_3"> - <item row="0" column="0"> - <widget class="QLabel" name="label_23"> - <property name="text"> - <string>Check the disk space</string> - </property> - </widget> - </item> - <item row="0" column="2"> - <widget class="QCheckBox" name="checkDiskSpace"/> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="label_24"> - <property name="text"> - <string>Use this folder when destination is not set</string> - </property> - </widget> - </item> - <item row="1" column="2"> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <widget class="QLineEdit" name="defaultDestinationFolder"/> - </item> - <item> - <widget class="QPushButton" name="defaultDestinationFolderBrowse"> - <property name="text"> - <string>Browse</string> - </property> - </widget> - </item> - </layout> - </item> - <item row="2" column="0"> - <spacer name="horizontalSpacer"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>353</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item row="2" column="1"> - <widget class="QPushButton" name="filters"> - <property name="text"> - <string>Filters</string> - </property> - </widget> - </item> - <item row="2" column="2"> - <spacer name="horizontalSpacer_2"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>352</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item row="3" column="1"> - <spacer name="verticalSpacer_2"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>159</height> - </size> - </property> - </spacer> - </item> - </layout> - </widget> - </widget> - </item> - </layout> - </widget> - <resources/> - <connections> - <connection> - <sender>doChecksum</sender> - <signal>clicked(bool)</signal> - <receiver>label_9</receiver> - <slot>setEnabled(bool)</slot> - <hints> - <hint type="sourcelabel"> - <x>583</x> - <y>136</y> - </hint> - <hint type="destinationlabel"> - <x>109</x> - <y>161</y> - </hint> - </hints> - </connection> - <connection> - <sender>doChecksum</sender> - <signal>clicked(bool)</signal> - <receiver>checksumOnlyOnError</receiver> - <slot>setEnabled(bool)</slot> - <hints> - <hint type="sourcelabel"> - <x>594</x> - <y>136</y> - </hint> - <hint type="destinationlabel"> - <x>586</x> - <y>161</y> - </hint> - </hints> - </connection> - <connection> - <sender>doChecksum</sender> - <signal>clicked(bool)</signal> - <receiver>label_10</receiver> - <slot>setEnabled(bool)</slot> - <hints> - <hint type="sourcelabel"> - <x>641</x> - <y>136</y> - </hint> - <hint type="destinationlabel"> - <x>132</x> - <y>186</y> - </hint> - </hints> - </connection> - <connection> - <sender>doChecksum</sender> - <signal>clicked(bool)</signal> - <receiver>checksumIgnoreIfImpossible</receiver> - <slot>setEnabled(bool)</slot> - <hints> - <hint type="sourcelabel"> - <x>665</x> - <y>136</y> - </hint> - <hint type="destinationlabel"> - <x>609</x> - <y>186</y> - </hint> - </hints> - </connection> - </connections> -</ui> diff --git a/plugins/CopyEngine/Ultracopier/copyEngineResources.qrc b/plugins/CopyEngine/Ultracopier/copyEngineResources.qrc deleted file mode 100644 index 0228c74..0000000 --- a/plugins/CopyEngine/Ultracopier/copyEngineResources.qrc +++ /dev/null @@ -1,8 +0,0 @@ -<RCC> - <qresource prefix="/CopyEngine/Ultracopier"> - <file>resources/add.png</file> - <file>resources/edit.png</file> - <file>resources/remove.png</file> - <file>resources/filter.png</file> - </qresource> -</RCC> diff --git a/plugins/CopyEngine/Ultracopier/debugDialog.ui b/plugins/CopyEngine/Ultracopier/debugDialog.ui deleted file mode 100644 index 80fde7e..0000000 --- a/plugins/CopyEngine/Ultracopier/debugDialog.ui +++ /dev/null @@ -1,98 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>debugDialog</class> - <widget class="QWidget" name="debugDialog"> - <property name="geometry"> - <rect> - <width>665</width> - <height>392</height> - </rect> - </property> - <property name="windowTitle"> - <string notr="true">Monitor</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_4"> - <item> - <widget class="QGroupBox" name="groupBox"> - <property name="title"> - <string notr="true">Transfer thread</string> - </property> - <layout class="QHBoxLayout" name="horizontalLayout_3"> - <item> - <widget class="QListWidget" name="transferThreadList"> - <property name="uniformItemSizes"> - <bool>true</bool> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="groupBox_2"> - <property name="title"> - <string notr="true">Transfer list</string> - </property> - <layout class="QHBoxLayout" name="horizontalLayout_2"> - <item> - <widget class="QListWidget" name="tranferList"> - <property name="uniformItemSizes"> - <bool>true</bool> - </property> - </widget> - </item> - </layout> - </widget> - </item> - </layout> - </item> - <item> - <widget class="QGroupBox" name="groupBox_3"> - <property name="title"> - <string notr="true">Variables</string> - </property> - <layout class="QGridLayout" name="gridLayout_2"> - <item row="0" column="0"> - <widget class="QLabel" name="label"> - <property name="text"> - <string notr="true">Active transfer:</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QSpinBox" name="spinBoxActiveTransfer"> - <property name="readOnly"> - <bool>true</bool> - </property> - <property name="maximum"> - <number>9999</number> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="label_2"> - <property name="text"> - <string notr="true">Number of inode manipuled:</string> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QSpinBox" name="spinBoxNumberOfInode"> - <property name="readOnly"> - <bool>true</bool> - </property> - <property name="maximum"> - <number>9999</number> - </property> - </widget> - </item> - </layout> - </widget> - </item> - </layout> - </widget> - <resources/> - <connections/> -</ui> diff --git a/plugins/CopyEngine/Ultracopier/documentation.dox b/plugins/CopyEngine/Ultracopier/documentation.dox deleted file mode 100644 index 5a0fbf6..0000000 --- a/plugins/CopyEngine/Ultracopier/documentation.dox +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- mode: C++ ; c-file-style: "stroustrup" -*- **/ - -/* - This file contains NO source code, just some documentation for doxygen to - parse. -*/ - -/*! - \mainpage Copy engine - - \section mainpage_overview Overview - - The default copy engine for Ultracopier. Support file/folder, copy/move, ...\n - More informations on <a href="http://ultracopier-wiki.first-world.info/">the wiki of ultracopier</a>. - - \section mainpage_platforms Platforms - - This plugin might be usable in all environments where you find Qt 5, but Gcc is requiered for some part. You need qtsystem modules for QtSystemInfo\n - This plugin requires Qt 5.0 or newer. Tested on Qt 5.0.\n - - \section mainpage_downloads Downloads - - You can find the link on <a href="http://ultracopier.first-world.info/">Ultracopier</a> project page, via git, snapshot sources, ... - - \section mainpage_algorithm Algorithm - - Like say previously you will have more informations on the wiki.\n - Then file transfer is done via pipe mecamism system:\n - <ul> - <li>push at no blocking into table up to the table is full, after is blocked up to one entry is free</li> - <li>Other thread read the table up to have no more data, then is blocked</li> - </ul> - The transfer thread do listing of the folder, removing folder, make folder is one thread for each.\n - The transfer list, have thread pool to do the inode operation (open, close, set date, ...). Do all inode operation in parallele, but transfer the data as sequential. - - \section license GPL Version 3 - The code source is under GPL3. The image is extacted from Oxygen icon pack of KDE4. - -*/ diff --git a/plugins/CopyEngine/Ultracopier/fileErrorDialog.ui b/plugins/CopyEngine/Ultracopier/fileErrorDialog.ui deleted file mode 100644 index b603924..0000000 --- a/plugins/CopyEngine/Ultracopier/fileErrorDialog.ui +++ /dev/null @@ -1,264 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>fileErrorDialog</class> - <widget class="QWidget" name="fileErrorDialog"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>723</width> - <height>185</height> - </rect> - </property> - <property name="windowTitle"> - <string>Error with file</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_2"> - <item> - <widget class="QGroupBox" name="groupBox"> - <property name="title"> - <string>Error</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <widget class="QLabel" name="label_error"> - <property name="text"> - <string/> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <spacer name="horizontalSpacer_2"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item> - <layout class="QFormLayout" name="formLayout_2"> - <property name="fieldGrowthPolicy"> - <enum>QFormLayout::ExpandingFieldsGrow</enum> - </property> - <item row="0" column="0"> - <widget class="QLabel" name="label_size"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>Size</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QLabel" name="label_content_size"> - <property name="text"> - <string notr="true">0 KiB</string> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="label_modified"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>Modified</string> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QLabel" name="label_content_modified"> - <property name="text"> - <string notr="true">Today</string> - </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QLabel" name="label_file_name"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>File name</string> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QLabel" name="label_content_file_name"> - <property name="text"> - <string notr="true">source.txt</string> - </property> - </widget> - </item> - <item row="4" column="0"> - <widget class="QLabel" name="label_file_destination"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>Destination</string> - </property> - </widget> - </item> - <item row="4" column="1"> - <widget class="QLabel" name="label_content_file_destination"> - <property name="text"> - <string notr="true">../toto.txt</string> - </property> - </widget> - </item> - <item row="3" column="0"> - <widget class="QLabel" name="label_folder"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>Folder</string> - </property> - </widget> - </item> - <item row="3" column="1"> - <widget class="QLabel" name="label_content_folder"> - <property name="text"> - <string notr="true">/folder/</string> - </property> - </widget> - </item> - </layout> - </item> - <item> - <spacer name="horizontalSpacer_3"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - </layout> - </item> - <item> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_4"> - <item> - <widget class="QCheckBox" name="checkBoxAlways"> - <property name="text"> - <string>&Always perform this action</string> - </property> - </widget> - </item> - <item> - <spacer name="horizontalSpacer"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QPushButton" name="Rights"> - <property name="text"> - <string>Try in with elevated privileges</string> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="PutToBottom"> - <property name="text"> - <string>Put to bottom</string> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="Retry"> - <property name="text"> - <string>Retry</string> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="Skip"> - <property name="text"> - <string>&Skip</string> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="Cancel"> - <property name="text"> - <string>&Cancel</string> - </property> - </widget> - </item> - </layout> - </item> - </layout> - </widget> - <resources/> - <connections> - <connection> - <sender>checkBoxAlways</sender> - <signal>toggled(bool)</signal> - <receiver>Cancel</receiver> - <slot>setDisabled(bool)</slot> - <hints> - <hint type="sourcelabel"> - <x>112</x> - <y>131</y> - </hint> - <hint type="destinationlabel"> - <x>438</x> - <y>142</y> - </hint> - </hints> - </connection> - <connection> - <sender>checkBoxAlways</sender> - <signal>toggled(bool)</signal> - <receiver>Retry</receiver> - <slot>setDisabled(bool)</slot> - <hints> - <hint type="sourcelabel"> - <x>155</x> - <y>131</y> - </hint> - <hint type="destinationlabel"> - <x>309</x> - <y>134</y> - </hint> - </hints> - </connection> - </connections> -</ui> diff --git a/plugins/CopyEngine/Ultracopier/fileExistsDialog.ui b/plugins/CopyEngine/Ultracopier/fileExistsDialog.ui deleted file mode 100644 index 0c38a57..0000000 --- a/plugins/CopyEngine/Ultracopier/fileExistsDialog.ui +++ /dev/null @@ -1,412 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>fileExistsDialog</class> - <widget class="QWidget" name="fileExistsDialog"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>469</width> - <height>162</height> - </rect> - </property> - <property name="windowTitle"> - <string>The file exists</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <widget class="QLabel" name="label"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Minimum" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="font"> - <font> - <weight>75</weight> - <bold>true</bold> - </font> - </property> - <property name="text"> - <string>Source</string> - </property> - <property name="alignment"> - <set>Qt::AlignCenter</set> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="label_2"> - <property name="font"> - <font> - <weight>75</weight> - <bold>true</bold> - </font> - </property> - <property name="text"> - <string>Destination</string> - </property> - <property name="alignment"> - <set>Qt::AlignCenter</set> - </property> - </widget> - </item> - </layout> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_2"> - <item> - <spacer name="horizontalSpacer_2"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item> - <layout class="QFormLayout" name="formLayout_2"> - <item row="0" column="0"> - <widget class="QLabel" name="label_source_size"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>Size</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QLabel" name="label_content_source_size"> - <property name="text"> - <string notr="true">0 KiB</string> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="label_source_modified"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>Modified</string> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QLabel" name="label_content_source_modified"> - <property name="text"> - <string notr="true">Today</string> - </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QLabel" name="label_source_file_name"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>File name</string> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QLabel" name="label_content_source_file_name"> - <property name="text"> - <string notr="true">source.txt</string> - </property> - </widget> - </item> - <item row="3" column="0"> - <widget class="QLabel" name="label_3"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>Folder</string> - </property> - </widget> - </item> - <item row="3" column="1"> - <widget class="QLabel" name="label_content_source_folder"> - <property name="text"> - <string notr="true">/source/</string> - </property> - </widget> - </item> - </layout> - </item> - <item> - <spacer name="horizontalSpacer_4"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item> - <layout class="QFormLayout" name="formLayout"> - <property name="fieldGrowthPolicy"> - <enum>QFormLayout::ExpandingFieldsGrow</enum> - </property> - <item row="0" column="0"> - <widget class="QLabel" name="label_destination_size"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>Size</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QLabel" name="label_content_destination_size"> - <property name="text"> - <string notr="true">0 KiB</string> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="label_destination_modified"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>Modified</string> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QLabel" name="label_content_destination_modified"> - <property name="text"> - <string notr="true">Today</string> - </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QLabel" name="label_destination_file_name"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>File name</string> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QLabel" name="label_content_destination_file_name"> - <property name="text"> - <string notr="true">destination.txt</string> - </property> - </widget> - </item> - <item row="3" column="0"> - <widget class="QLabel" name="label_4"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>Folder</string> - </property> - </widget> - </item> - <item row="3" column="1"> - <widget class="QLabel" name="label_content_destination_folder"> - <property name="text"> - <string notr="true">/destination/</string> - </property> - </widget> - </item> - </layout> - </item> - <item> - <spacer name="horizontalSpacer_3"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - </layout> - </item> - <item> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_3"> - <item> - <widget class="QLineEdit" name="lineEditNewName"> - <property name="text"> - <string notr="true"/> - </property> - <property name="placeholderText"> - <string notr="true"/> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="SuggestNewName"> - <property name="text"> - <string>Suggest new &name</string> - </property> - </widget> - </item> - </layout> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_4"> - <item> - <widget class="QCheckBox" name="checkBoxAlways"> - <property name="text"> - <string>&Always perform this action</string> - </property> - </widget> - </item> - <item> - <spacer name="horizontalSpacer"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QPushButton" name="Rename"> - <property name="text"> - <string>&Rename</string> - </property> - </widget> - </item> - <item> - <widget class="QToolButton" name="Overwrite"> - <property name="text"> - <string>&Overwrite</string> - </property> - <property name="popupMode"> - <enum>QToolButton::MenuButtonPopup</enum> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="Skip"> - <property name="text"> - <string>&Skip</string> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="Cancel"> - <property name="text"> - <string>&Cancel</string> - </property> - </widget> - </item> - </layout> - </item> - </layout> - <action name="actionOverwrite_if_newer"> - <property name="text"> - <string>Overwrite if newer</string> - </property> - </action> - <action name="actionOverwrite_if_not_same_modification_date"> - <property name="text"> - <string>Overwrite if modification date differs</string> - </property> - <property name="toolTip"> - <string>Overwrite if modification date differs</string> - </property> - </action> - <action name="actionOverwrite_if_older"> - <property name="text"> - <string>Overwrite if older</string> - </property> - <property name="toolTip"> - <string>Overwrite if older</string> - </property> - </action> - </widget> - <resources/> - <connections> - <connection> - <sender>checkBoxAlways</sender> - <signal>toggled(bool)</signal> - <receiver>Cancel</receiver> - <slot>setDisabled(bool)</slot> - <hints> - <hint type="sourcelabel"> - <x>115</x> - <y>130</y> - </hint> - <hint type="destinationlabel"> - <x>440</x> - <y>129</y> - </hint> - </hints> - </connection> - <connection> - <sender>checkBoxAlways</sender> - <signal>toggled(bool)</signal> - <receiver>lineEditNewName</receiver> - <slot>setDisabled(bool)</slot> - <hints> - <hint type="sourcelabel"> - <x>62</x> - <y>129</y> - </hint> - <hint type="destinationlabel"> - <x>108</x> - <y>93</y> - </hint> - </hints> - </connection> - <connection> - <sender>checkBoxAlways</sender> - <signal>toggled(bool)</signal> - <receiver>SuggestNewName</receiver> - <slot>setDisabled(bool)</slot> - <hints> - <hint type="sourcelabel"> - <x>144</x> - <y>138</y> - </hint> - <hint type="destinationlabel"> - <x>326</x> - <y>98</y> - </hint> - </hints> - </connection> - </connections> -</ui> diff --git a/plugins/CopyEngine/Ultracopier/fileIsSameDialog.ui b/plugins/CopyEngine/Ultracopier/fileIsSameDialog.ui deleted file mode 100644 index c019a63..0000000 --- a/plugins/CopyEngine/Ultracopier/fileIsSameDialog.ui +++ /dev/null @@ -1,214 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>fileIsSameDialog</class> - <widget class="QWidget" name="fileIsSameDialog"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>411</width> - <height>142</height> - </rect> - </property> - <property name="windowTitle"> - <string>The source and destination are same</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <spacer name="horizontalSpacer_3"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item> - <layout class="QFormLayout" name="formLayout_2"> - <item row="0" column="0"> - <widget class="QLabel" name="label_size"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>Size</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QLabel" name="label_content_size"> - <property name="text"> - <string notr="true">0 KiB</string> - </property> - <property name="textFormat"> - <enum>Qt::PlainText</enum> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QLabel" name="label_content_modified"> - <property name="text"> - <string notr="true">Today</string> - </property> - <property name="textFormat"> - <enum>Qt::PlainText</enum> - </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QLabel" name="label_file_name"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>File name</string> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QLabel" name="label_content_file_name"> - <property name="text"> - <string notr="true">source.txt</string> - </property> - <property name="textFormat"> - <enum>Qt::PlainText</enum> - </property> - </widget> - </item> - <item row="3" column="0"> - <widget class="QLabel" name="label_2"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>Folder</string> - </property> - </widget> - </item> - <item row="3" column="1"> - <widget class="QLabel" name="label_content_folder"> - <property name="text"> - <string notr="true">/toto/</string> - </property> - <property name="textFormat"> - <enum>Qt::PlainText</enum> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="label_modified"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>Modified</string> - </property> - </widget> - </item> - </layout> - </item> - <item> - <spacer name="horizontalSpacer_2"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - </layout> - </item> - <item> - <spacer name="verticalSpacer"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_3"> - <item> - <widget class="QLineEdit" name="lineEditNewName"> - <property name="text"> - <string notr="true"/> - </property> - <property name="placeholderText"> - <string notr="true"/> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="SuggestNewName"> - <property name="text"> - <string>Suggest new &name</string> - </property> - </widget> - </item> - </layout> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_4"> - <item> - <widget class="QCheckBox" name="checkBoxAlways"> - <property name="text"> - <string>&Always perform this action</string> - </property> - </widget> - </item> - <item> - <spacer name="horizontalSpacer"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QPushButton" name="Rename"> - <property name="text"> - <string>&Rename</string> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="Skip"> - <property name="text"> - <string>&Skip</string> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="Cancel"> - <property name="text"> - <string>&Cancel</string> - </property> - </widget> - </item> - </layout> - </item> - </layout> - </widget> - <resources/> - <connections/> -</ui> diff --git a/plugins/CopyEngine/Ultracopier/folderExistsDialog.ui b/plugins/CopyEngine/Ultracopier/folderExistsDialog.ui deleted file mode 100644 index 440b5ca..0000000 --- a/plugins/CopyEngine/Ultracopier/folderExistsDialog.ui +++ /dev/null @@ -1,309 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>folderExistsDialog</class> - <widget class="QDialog" name="folderExistsDialog"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>476</width> - <height>140</height> - </rect> - </property> - <property name="windowTitle"> - <string>The source and destination is identical</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <widget class="QLabel" name="label_source"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Minimum" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="font"> - <font> - <weight>75</weight> - <bold>true</bold> - </font> - </property> - <property name="text"> - <string>Source</string> - </property> - <property name="alignment"> - <set>Qt::AlignCenter</set> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="label_destination"> - <property name="font"> - <font> - <weight>75</weight> - <bold>true</bold> - </font> - </property> - <property name="text"> - <string>Destination</string> - </property> - <property name="alignment"> - <set>Qt::AlignCenter</set> - </property> - </widget> - </item> - </layout> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_4"> - <item> - <spacer name="horizontalSpacer"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item> - <layout class="QFormLayout" name="formLayout"> - <item row="0" column="0"> - <widget class="QLabel" name="label_source_modified"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>Modified</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QLabel" name="label_content_source_modified"> - <property name="text"> - <string notr="true">Today</string> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="label_source_folder_name"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>Folder name</string> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QLabel" name="label_content_source_folder_name"> - <property name="text"> - <string notr="true">folder</string> - </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QLabel" name="label_source_folder"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>Folder</string> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QLabel" name="label_content_source_folder"> - <property name="text"> - <string notr="true">/source/</string> - </property> - </widget> - </item> - </layout> - </item> - <item> - <spacer name="horizontalSpacer_2"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item> - <layout class="QFormLayout" name="formLayout_2"> - <item row="0" column="0"> - <widget class="QLabel" name="label_destination_modified"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>Modified</string> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="label_destination_folder_name"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>Folder name</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QLabel" name="label_content_destination_modified"> - <property name="text"> - <string notr="true">Today</string> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QLabel" name="label_content_destination_folder_name"> - <property name="text"> - <string notr="true">folder</string> - </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QLabel" name="label_destination_folder"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>Folder</string> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QLabel" name="label_content_destination_folder"> - <property name="text"> - <string notr="true">/destination/</string> - </property> - </widget> - </item> - </layout> - </item> - <item> - <spacer name="horizontalSpacer_3"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - </layout> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_2"> - <item> - <widget class="QLineEdit" name="lineEditNewName"> - <property name="text"> - <string notr="true"/> - </property> - <property name="placeholderText"> - <string notr="true"/> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="SuggestNewName"> - <property name="text"> - <string>Suggest new &name</string> - </property> - </widget> - </item> - </layout> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_3"> - <item> - <widget class="QCheckBox" name="checkBoxAlways"> - <property name="text"> - <string>&Always perform this action</string> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="Rename"> - <property name="text"> - <string>&Rename</string> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="Merge"> - <property name="text"> - <string>Merge</string> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="Skip"> - <property name="text"> - <string>Skip</string> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="Cancel"> - <property name="text"> - <string>&Cancel</string> - </property> - </widget> - </item> - </layout> - </item> - </layout> - </widget> - <resources/> - <connections> - <connection> - <sender>checkBoxAlways</sender> - <signal>clicked(bool)</signal> - <receiver>lineEditNewName</receiver> - <slot>setDisabled(bool)</slot> - <hints> - <hint type="sourcelabel"> - <x>132</x> - <y>126</y> - </hint> - <hint type="destinationlabel"> - <x>135</x> - <y>101</y> - </hint> - </hints> - </connection> - <connection> - <sender>checkBoxAlways</sender> - <signal>clicked(bool)</signal> - <receiver>SuggestNewName</receiver> - <slot>setDisabled(bool)</slot> - <hints> - <hint type="sourcelabel"> - <x>113</x> - <y>129</y> - </hint> - <hint type="destinationlabel"> - <x>304</x> - <y>100</y> - </hint> - </hints> - </connection> - </connections> -</ui> diff --git a/plugins/CopyEngine/Ultracopier/informations.xml b/plugins/CopyEngine/Ultracopier/informations.xml deleted file mode 100644 index fcb8c8f..0000000 --- a/plugins/CopyEngine/Ultracopier/informations.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<package> - <title xml:lang="en"><![CDATA[Copy engine of Ultracopier]]></title><!-- english is required --> - <title xml:lang="fr"><![CDATA[Moteur de copie d'ultracopier]]></title> - <!-- What kind of plugin this is --> - <category>CopyEngine</category> - <!-- Who wrote this plugin --> - <author><![CDATA[BRULE Herman, alpha_one_x86 (alpha_one_x86@first-world.info)]]></author> - <!-- URL of page or site for this plugin (may provide additional information, bug reports, feature requests). --> - <website xml:lang="en"><![CDATA[http://ultracopier.first-world.info/]]></website><!-- not required --> - <website xml:lang="fr"><![CDATA[http://ultracopier-fr.first-world.info/]]></website><!-- not required --> - <!-- the date-time format should be in timestamps format --> - <pubDate>1287496800</pubDate> - <!-- the architecture code of this plugin, found PlatformMacro.h into ultracopier source --> - <architecture>windows-x86</architecture> - <!-- Detailed description --> - <description xml:lang="en"><![CDATA[Copy engine of Ultracopier, do in Qt for all platform, and copy by stream]]></description> - <description xml:lang="fr"><![CDATA[Moteur de copie d'ultracopier, fait en Qt pour toutes les plateformes, et copie par stream]]></description> - <!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number --> - <version>1.6.1.3</version> - <!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. --> - <name>Ultracopier</name> - <!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. --> - <dependencies><![CDATA[ - ]]></dependencies> -</package>
\ No newline at end of file diff --git a/plugins/CopyEngine/Ultracopier/plugin.json b/plugins/CopyEngine/Ultracopier/plugin.json deleted file mode 100644 index 9e26dfe..0000000 --- a/plugins/CopyEngine/Ultracopier/plugin.json +++ /dev/null @@ -1 +0,0 @@ -{}
\ No newline at end of file diff --git a/plugins/CopyEngine/Ultracopier/resources/add.png b/plugins/CopyEngine/Ultracopier/resources/add.png Binary files differdeleted file mode 100644 index 7932127..0000000 --- a/plugins/CopyEngine/Ultracopier/resources/add.png +++ /dev/null diff --git a/plugins/CopyEngine/Ultracopier/resources/edit.png b/plugins/CopyEngine/Ultracopier/resources/edit.png Binary files differdeleted file mode 100644 index 5464856..0000000 --- a/plugins/CopyEngine/Ultracopier/resources/edit.png +++ /dev/null diff --git a/plugins/CopyEngine/Ultracopier/resources/filter.png b/plugins/CopyEngine/Ultracopier/resources/filter.png Binary files differdeleted file mode 100644 index 9bb3164..0000000 --- a/plugins/CopyEngine/Ultracopier/resources/filter.png +++ /dev/null diff --git a/plugins/CopyEngine/Ultracopier/resources/remove.png b/plugins/CopyEngine/Ultracopier/resources/remove.png Binary files differdeleted file mode 100644 index b711740..0000000 --- a/plugins/CopyEngine/Ultracopier/resources/remove.png +++ /dev/null |