summaryrefslogtreecommitdiff
path: root/plugins/CopyEngine/Ultracopier
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/CopyEngine/Ultracopier')
-rw-r--r--plugins/CopyEngine/Ultracopier/AvancedQFile.cpp208
-rw-r--r--plugins/CopyEngine/Ultracopier/AvancedQFile.h45
-rw-r--r--plugins/CopyEngine/Ultracopier/CompilerInfo.h1
-rw-r--r--plugins/CopyEngine/Ultracopier/CopyEngine-collision-and-error.cpp568
-rw-r--r--plugins/CopyEngine/Ultracopier/CopyEngine.cpp1253
-rw-r--r--plugins/CopyEngine/Ultracopier/CopyEngine.h382
-rw-r--r--plugins/CopyEngine/Ultracopier/CopyEngine.pro106
-rw-r--r--plugins/CopyEngine/Ultracopier/CopyEngineFactory.cpp709
-rw-r--r--plugins/CopyEngine/Ultracopier/CopyEngineFactory.h133
-rw-r--r--plugins/CopyEngine/Ultracopier/DebugDialog.cpp54
-rw-r--r--plugins/CopyEngine/Ultracopier/DebugDialog.h39
-rw-r--r--plugins/CopyEngine/Ultracopier/DebugEngineMacro.h28
-rw-r--r--plugins/CopyEngine/Ultracopier/DiskSpace.cpp53
-rw-r--r--plugins/CopyEngine/Ultracopier/DiskSpace.h29
-rw-r--r--plugins/CopyEngine/Ultracopier/DiskSpace.ui68
-rw-r--r--plugins/CopyEngine/Ultracopier/DriveManagement.cpp105
-rw-r--r--plugins/CopyEngine/Ultracopier/DriveManagement.h34
-rw-r--r--plugins/CopyEngine/Ultracopier/Environment.h11
-rw-r--r--plugins/CopyEngine/Ultracopier/FileErrorDialog.cpp163
-rw-r--r--plugins/CopyEngine/Ultracopier/FileErrorDialog.h51
-rw-r--r--plugins/CopyEngine/Ultracopier/FileExistsDialog.cpp240
-rw-r--r--plugins/CopyEngine/Ultracopier/FileExistsDialog.h60
-rw-r--r--plugins/CopyEngine/Ultracopier/FileIsSameDialog.cpp190
-rw-r--r--plugins/CopyEngine/Ultracopier/FileIsSameDialog.h57
-rw-r--r--plugins/CopyEngine/Ultracopier/FilterRules.cpp193
-rw-r--r--plugins/CopyEngine/Ultracopier/FilterRules.h46
-rw-r--r--plugins/CopyEngine/Ultracopier/FilterRules.ui162
-rw-r--r--plugins/CopyEngine/Ultracopier/Filters.cpp460
-rw-r--r--plugins/CopyEngine/Ultracopier/Filters.h45
-rw-r--r--plugins/CopyEngine/Ultracopier/Filters.ui194
-rw-r--r--plugins/CopyEngine/Ultracopier/FolderExistsDialog.cpp202
-rw-r--r--plugins/CopyEngine/Ultracopier/FolderExistsDialog.h57
-rw-r--r--plugins/CopyEngine/Ultracopier/Languages/ar/translation.ts1291
-rw-r--r--plugins/CopyEngine/Ultracopier/Languages/de/translation.ts1292
-rw-r--r--plugins/CopyEngine/Ultracopier/Languages/el/translation.ts1291
-rw-r--r--plugins/CopyEngine/Ultracopier/Languages/en/translation.ts1291
-rw-r--r--plugins/CopyEngine/Ultracopier/Languages/es/translation.ts1291
-rw-r--r--plugins/CopyEngine/Ultracopier/Languages/fr/translation.ts1292
-rw-r--r--plugins/CopyEngine/Ultracopier/Languages/hi/translation.ts1291
-rw-r--r--plugins/CopyEngine/Ultracopier/Languages/hu/translation.ts1291
-rw-r--r--plugins/CopyEngine/Ultracopier/Languages/id/translation.ts1291
-rw-r--r--plugins/CopyEngine/Ultracopier/Languages/it/translation.ts1297
-rw-r--r--plugins/CopyEngine/Ultracopier/Languages/ja/translation.ts1291
-rw-r--r--plugins/CopyEngine/Ultracopier/Languages/ko/translation.ts1291
-rw-r--r--plugins/CopyEngine/Ultracopier/Languages/nl/translation.ts1291
-rw-r--r--plugins/CopyEngine/Ultracopier/Languages/no/translation.ts1291
-rw-r--r--plugins/CopyEngine/Ultracopier/Languages/pl/translation.ts1291
-rw-r--r--plugins/CopyEngine/Ultracopier/Languages/pt/translation.ts1291
-rw-r--r--plugins/CopyEngine/Ultracopier/Languages/ru/translation.ts1291
-rw-r--r--plugins/CopyEngine/Ultracopier/Languages/th/translation.ts1291
-rw-r--r--plugins/CopyEngine/Ultracopier/Languages/tr/translation.ts1291
-rw-r--r--plugins/CopyEngine/Ultracopier/Languages/zh/translation.ts1291
-rw-r--r--plugins/CopyEngine/Ultracopier/ListThread.cpp2429
-rw-r--r--plugins/CopyEngine/Ultracopier/ListThread.h432
-rw-r--r--plugins/CopyEngine/Ultracopier/ListThread_InodeAction.cpp64
-rw-r--r--plugins/CopyEngine/Ultracopier/MkPath.cpp517
-rw-r--r--plugins/CopyEngine/Ultracopier/MkPath.h106
-rw-r--r--plugins/CopyEngine/Ultracopier/README.md3
-rw-r--r--plugins/CopyEngine/Ultracopier/ReadThread.cpp699
-rw-r--r--plugins/CopyEngine/Ultracopier/ReadThread.h147
-rw-r--r--plugins/CopyEngine/Ultracopier/RenamingRules.cpp85
-rw-r--r--plugins/CopyEngine/Ultracopier/RenamingRules.h34
-rw-r--r--plugins/CopyEngine/Ultracopier/RenamingRules.ui134
-rw-r--r--plugins/CopyEngine/Ultracopier/ScanFileOrFolder.cpp680
-rw-r--r--plugins/CopyEngine/Ultracopier/ScanFileOrFolder.h108
-rw-r--r--plugins/CopyEngine/Ultracopier/StructEnumDefinition.h1
-rw-r--r--plugins/CopyEngine/Ultracopier/StructEnumDefinition_CopyEngine.h124
-rw-r--r--plugins/CopyEngine/Ultracopier/TransferThread.cpp2101
-rw-r--r--plugins/CopyEngine/Ultracopier/TransferThread.h292
-rw-r--r--plugins/CopyEngine/Ultracopier/Variable.h45
-rw-r--r--plugins/CopyEngine/Ultracopier/WriteThread.cpp976
-rw-r--r--plugins/CopyEngine/Ultracopier/WriteThread.h160
-rw-r--r--plugins/CopyEngine/Ultracopier/copyEngineOptions.ui771
-rw-r--r--plugins/CopyEngine/Ultracopier/copyEngineResources.qrc8
-rw-r--r--plugins/CopyEngine/Ultracopier/debugDialog.ui98
-rw-r--r--plugins/CopyEngine/Ultracopier/documentation.dox39
-rw-r--r--plugins/CopyEngine/Ultracopier/fileErrorDialog.ui264
-rw-r--r--plugins/CopyEngine/Ultracopier/fileExistsDialog.ui412
-rw-r--r--plugins/CopyEngine/Ultracopier/fileIsSameDialog.ui214
-rw-r--r--plugins/CopyEngine/Ultracopier/folderExistsDialog.ui309
-rw-r--r--plugins/CopyEngine/Ultracopier/informations.xml26
-rw-r--r--plugins/CopyEngine/Ultracopier/plugin.json1
-rw-r--r--plugins/CopyEngine/Ultracopier/resources/add.pngbin552 -> 0 bytes
-rw-r--r--plugins/CopyEngine/Ultracopier/resources/edit.pngbin623 -> 0 bytes
-rw-r--r--plugins/CopyEngine/Ultracopier/resources/filter.pngbin685 -> 0 bytes
-rw-r--r--plugins/CopyEngine/Ultracopier/resources/remove.pngbin683 -> 0 bytes
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 &parallelBuffer) const;
- void send_sequentialBuffer(const int &sequentialBuffer) const;
- void send_parallelizeIfSmallerThan(const int &parallelizeIfSmallerThan) 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&apos;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&apos;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 &quot;%1&quot;?</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&apos;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&apos;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&apos;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: &quot;%1&quot;</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&apos;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>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</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&apos;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&apos;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&apos;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 &gt; 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>&amp;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>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="221"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="288"/>
- <source>&amp;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>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="315"/>
- <source>&amp;Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="325"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="332"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="170"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="190"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="197"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="204"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="238"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="245"/>
- <source>&amp;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>&amp;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&apos;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&apos;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 &quot;%1&quot;?</source>
- <translation>Aktuelles Ziel: &quot;%1&quot; 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&apos;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&apos;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&apos;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: &quot;%1&quot;</source>
- <translation>Falscher Header: &quot;%1&quot;</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&apos;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>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</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&apos;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&apos;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&apos;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 &gt; 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>&amp;Always perform this action</source>
- <translation>&amp;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>&amp;Skip</source>
- <translation>Über&amp;springen</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="221"/>
- <source>&amp;Cancel</source>
- <translation>Abbrechen (&amp;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 &amp;name</source>
- <translation>Neuen &amp;Namen vorschlagen</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="288"/>
- <source>&amp;Always perform this action</source>
- <translation>&amp;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>&amp;Rename</source>
- <translation>Umbenennen (&amp;R)</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="315"/>
- <source>&amp;Overwrite</source>
- <translation>Überschreiben (&amp;O)</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="325"/>
- <source>&amp;Skip</source>
- <translation>Über&amp;springen</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="332"/>
- <source>&amp;Cancel</source>
- <translation>Abbrechen (&amp;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 &amp;name</source>
- <translation>Neuen &amp;Namen vorschlagen</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="170"/>
- <source>&amp;Always perform this action</source>
- <translation>&amp;Aktion immer ausführen</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="190"/>
- <source>&amp;Rename</source>
- <translation>Umbenennen (&amp;R)</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="197"/>
- <source>&amp;Skip</source>
- <translation>Über&amp;springen</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="204"/>
- <source>&amp;Cancel</source>
- <translation>Abbrechen (&amp;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 &amp;name</source>
- <translation>Neuen &amp;Namen vorschlagen</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="238"/>
- <source>&amp;Always perform this action</source>
- <translation>&amp;Aktion immer ausführen</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="245"/>
- <source>&amp;Rename</source>
- <translation>Umbenennen (&amp;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>&amp;Cancel</source>
- <translation>Abbrechen (&amp;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&apos;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&apos;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 &quot;%1&quot;?</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&apos;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&apos;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&apos;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: &quot;%1&quot;</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&apos;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>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</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&apos;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&apos;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&apos;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 &gt; 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>&amp;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>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="221"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="288"/>
- <source>&amp;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>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="315"/>
- <source>&amp;Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="325"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="332"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="170"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="190"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="197"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="204"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="238"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="245"/>
- <source>&amp;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>&amp;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&apos;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&apos;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 &quot;%1&quot;?</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&apos;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&apos;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&apos;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: &quot;%1&quot;</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&apos;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>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</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&apos;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&apos;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&apos;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 &gt; 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>&amp;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>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="221"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="288"/>
- <source>&amp;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>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="315"/>
- <source>&amp;Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="325"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="332"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="170"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="190"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="197"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="204"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="238"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="245"/>
- <source>&amp;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>&amp;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&apos;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&apos;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 &quot;%1&quot;?</source>
- <translation>Utilice el destino &quot;%1&quot; 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&apos;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&apos;s regex</source>
- <translation>Perl&apos;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&apos;s regex</source>
- <translation>Perl&apos;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: &quot;%1&quot;</source>
- <translation>Encabezado incorrecto: &quot;%1&quot;</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&apos;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>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</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&apos;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&apos;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&apos;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 &gt; 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>&amp;Always perform this action</source>
- <translation>&amp;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>&amp;Skip</source>
- <translation>&amp;Omitir</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="221"/>
- <source>&amp;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 &amp;name</source>
- <translation>Sugerir nuevo &amp;nombre</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="288"/>
- <source>&amp;Always perform this action</source>
- <translation>&amp;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>&amp;Rename</source>
- <translation>&amp;Cambiar el nombre</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="315"/>
- <source>&amp;Overwrite</source>
- <translation>&amp;Sobrescribir</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="325"/>
- <source>&amp;Skip</source>
- <translation>&amp;Omitir</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="332"/>
- <source>&amp;Cancel</source>
- <translation>Ca&amp;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 &amp;name</source>
- <translation>Sugerir nuevo nombre</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="170"/>
- <source>&amp;Always perform this action</source>
- <translation>&amp;Siempre realice esta acción</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="190"/>
- <source>&amp;Rename</source>
- <translation>Cambiar el nombre</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="197"/>
- <source>&amp;Skip</source>
- <translation>Omitir</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="204"/>
- <source>&amp;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 &amp;name</source>
- <translation>Sugerir nuevo nombre</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="238"/>
- <source>&amp;Always perform this action</source>
- <translation>&amp;Siempre realice esta acción</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="245"/>
- <source>&amp;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>&amp;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&apos;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&apos;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 &quot;%1&quot;?</source>
- <translation>Utiliser la destination actuelle &quot;%1&quot;?</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&apos;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&apos;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&apos;options n&apos;est pas chargé. Impossible d&apos;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&apos;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&apos;options n&apos;est pas chargé. Impossible d&apos;accédé aux filtres</translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</source>
- <translation>Moteur d&apos;options non chargé, impossible d&apos;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&apos;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&apos;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&apos;exclusion</translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="93"/>
- <source>Inclusion filters</source>
- <translation>Filtres d&apos;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&apos;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: &quot;%1&quot;</source>
- <translation>Mauvais en-tête: &quot;%1&quot;</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&apos;instance n&apos;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&apos;instance n&apos;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&apos;instance n&apos;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&apos;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&apos;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&apos;t exists</source>
- <translation>Le dossier source n&apos;é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 -&gt; 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>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</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&apos;est pas un dossier</translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="446"/>
- <source>The folder does exists</source>
- <translation>Le répertoire n&apos;existe pas</translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="448"/>
- <source>The folder is not readable</source>
- <translation>Le répertoire n&apos;est pas lisible</translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="459"/>
- <source>Problem with name encoding</source>
- <translation>Problém d&apos;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&apos;t exist</source>
- <translation>La source n&apos;existe pas</translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="711"/>
- <location filename="../../TransferThread.cpp" line="826"/>
- <source>The source file doesn&apos;t exist</source>
- <translation>Le fichier source n&apos;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&apos;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&apos;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&apos;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&apos;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&apos;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&apos;erreur de répertoire</translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="155"/>
- <source>When file error</source>
- <translation>En cas d&apos;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&apos;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&apos;OS</translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="506"/>
- <source>OS buffer only if smaller than</source>
- <translation>Tampon de l&apos;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 &gt; 1)</source>
- <translation>Inode threads (non sécurisé&gt; 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&apos;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&apos;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>&amp;Always perform this action</source>
- <translation>&amp;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>&amp;Skip</source>
- <translation>&amp;Passer</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="221"/>
- <source>&amp;Cancel</source>
- <translation>&amp;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 &amp;name</source>
- <translation>Suggérer un &amp;nouveau nom</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="288"/>
- <source>&amp;Always perform this action</source>
- <translation>&amp;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>&amp;Rename</source>
- <translation>&amp;Renommer</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="315"/>
- <source>&amp;Overwrite</source>
- <translation>&amp;Écraser</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="325"/>
- <source>&amp;Skip</source>
- <translation>&amp;Passer</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="332"/>
- <source>&amp;Cancel</source>
- <translation>&amp;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 &amp;name</source>
- <translation>Suggérer un &amp;nouveau nom</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="170"/>
- <source>&amp;Always perform this action</source>
- <translation>&amp;Toujours faire cette action</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="190"/>
- <source>&amp;Rename</source>
- <translation>&amp;Renommer</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="197"/>
- <source>&amp;Skip</source>
- <translation>&amp;Passer</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="204"/>
- <source>&amp;Cancel</source>
- <translation>&amp;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 &amp;name</source>
- <translation>Suggérer un &amp;nouveau nom</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="238"/>
- <source>&amp;Always perform this action</source>
- <translation>&amp;Toujours faire cette action</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="245"/>
- <source>&amp;Rename</source>
- <translation>&amp;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>&amp;Cancel</source>
- <translation>&amp;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&apos;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&apos;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 &quot;%1&quot;?</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&apos;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&apos;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&apos;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: &quot;%1&quot;</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&apos;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>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</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&apos;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&apos;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&apos;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 &gt; 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>&amp;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>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="221"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="288"/>
- <source>&amp;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>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="315"/>
- <source>&amp;Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="325"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="332"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="170"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="190"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="197"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="204"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="238"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="245"/>
- <source>&amp;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>&amp;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&apos;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&apos;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 &quot;%1&quot;?</source>
- <translation>Használja a jelenlegi célt: &quot;%1&quot;?</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&apos;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&apos;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&apos;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: &quot;%1&quot;</source>
- <translation>Hibás fejléc: &quot;%1&quot;</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&apos;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>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</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&apos;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&apos;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&apos;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 &gt; 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>&amp;Always perform this action</source>
- <translation>&amp;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>&amp;Skip</source>
- <translation>&amp;Kihagy</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="221"/>
- <source>&amp;Cancel</source>
- <translation>M&amp;é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 &amp;name</source>
- <translation>Új &amp;név ajánlása</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="288"/>
- <source>&amp;Always perform this action</source>
- <translation>&amp;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>&amp;Rename</source>
- <translation>&amp;Átnevez</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="315"/>
- <source>&amp;Overwrite</source>
- <translation>&amp;Felülír</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="325"/>
- <source>&amp;Skip</source>
- <translation>&amp;Kihagy</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="332"/>
- <source>&amp;Cancel</source>
- <translation>&amp;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 &amp;name</source>
- <translation>Új &amp;név javasolása</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="170"/>
- <source>&amp;Always perform this action</source>
- <translation>&amp;Mindig hajtsa végre ezt a műveletet</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="190"/>
- <source>&amp;Rename</source>
- <translation>&amp;Átnevez</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="197"/>
- <source>&amp;Skip</source>
- <translation>&amp;Kihagy</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="204"/>
- <source>&amp;Cancel</source>
- <translation>M&amp;é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 &amp;name</source>
- <translation>Új &amp;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>&amp;Always perform this action</source>
- <translation>&amp;Mindig hajtsa végre ezt a műveletet</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="245"/>
- <source>&amp;Rename</source>
- <translation>&amp;Á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>&amp;Cancel</source>
- <translation>M&amp;é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&apos;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&apos;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 &quot;%1&quot;?</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&apos;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&apos;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&apos;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: &quot;%1&quot;</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&apos;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>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</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&apos;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&apos;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&apos;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 &gt; 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>&amp;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>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="221"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="288"/>
- <source>&amp;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>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="315"/>
- <source>&amp;Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="325"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="332"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="170"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="190"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="197"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="204"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="238"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="245"/>
- <source>&amp;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>&amp;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&apos;ultima modifica è errata</translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="71"/>
- <source>Last access date is wrong</source>
- <translation>La data dell&apos;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&apos;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&apos;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&apos;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 &quot;%1&quot;?</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&apos;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&apos;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&apos;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&apos;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&apos;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: &quot;%1&quot;</source>
- <translatorcomment>Header si riferisce all&apos;intestazione?</translatorcomment>
- <translation>Intestazione sbagliata: &quot;%1&quot;</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&apos;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>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</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&apos;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&apos;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&apos;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&apos;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&apos;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&apos;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&apos;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 &gt; 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>&amp;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>&amp;Skip</source>
- <translation>&amp;Salta</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="221"/>
- <source>&amp;Cancel</source>
- <translation>&amp;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 &amp;name</source>
- <translation>Suggerisci un nuovo &amp;nome</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="288"/>
- <source>&amp;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>&amp;Rename</source>
- <translation>&amp;Rinomina</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="315"/>
- <source>&amp;Overwrite</source>
- <translation>&amp;Sovrascrivi</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="325"/>
- <source>&amp;Skip</source>
- <translation>&amp;Salta</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="332"/>
- <source>&amp;Cancel</source>
- <translation>&amp;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 &amp;name</source>
- <translation>Suggerisci nuovo &amp;nome</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="170"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="190"/>
- <source>&amp;Rename</source>
- <translation>&amp;Rinomina</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="197"/>
- <source>&amp;Skip</source>
- <translation>&amp;Salta</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="204"/>
- <source>&amp;Cancel</source>
- <translation>&amp;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 &amp;name</source>
- <translation>Suggerisci nuovo &amp;nome</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="238"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="245"/>
- <source>&amp;Rename</source>
- <translation>&amp;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>&amp;Cancel</source>
- <translation>&amp;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&apos;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&apos;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 &quot;%1&quot;?</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&apos;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&apos;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&apos;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: &quot;%1&quot;</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&apos;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>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</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&apos;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&apos;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&apos;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 &gt; 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>&amp;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>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="221"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="288"/>
- <source>&amp;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>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="315"/>
- <source>&amp;Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="325"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="332"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="170"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="190"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="197"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="204"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="238"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="245"/>
- <source>&amp;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>&amp;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&apos;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&apos;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 &quot;%1&quot;?</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&apos;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&apos;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&apos;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: &quot;%1&quot;</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&apos;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>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</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&apos;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&apos;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&apos;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 &gt; 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>&amp;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>&amp;Skip</source>
- <translation>&amp;건너뛰기</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="221"/>
- <source>&amp;Cancel</source>
- <translation>&amp;취소</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 &amp;name</source>
- <translation>새 &amp;이름 제안</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="288"/>
- <source>&amp;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>&amp;Rename</source>
- <translation>&amp;이름 바꾸기</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="315"/>
- <source>&amp;Overwrite</source>
- <translation>&amp;덮어씌우기</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="325"/>
- <source>&amp;Skip</source>
- <translation>&amp;건너뛰기</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="332"/>
- <source>&amp;Cancel</source>
- <translation>&amp;취소</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 &amp;name</source>
- <translation>새 &amp;이름 제안</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="170"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="190"/>
- <source>&amp;Rename</source>
- <translation>&amp;이름 바꾸기</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="197"/>
- <source>&amp;Skip</source>
- <translation>&amp;건너뛰기</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="204"/>
- <source>&amp;Cancel</source>
- <translation>&amp;취소</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 &amp;name</source>
- <translation>새 &amp;이름 제안</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="238"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="245"/>
- <source>&amp;Rename</source>
- <translation>&amp;이름 바꾸기</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>&amp;Cancel</source>
- <translation>&amp;취소</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&apos;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&apos;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 &quot;%1&quot;?</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&apos;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&apos;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&apos;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: &quot;%1&quot;</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&apos;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>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</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&apos;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&apos;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&apos;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 &gt; 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>&amp;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>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="221"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="288"/>
- <source>&amp;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>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="315"/>
- <source>&amp;Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="325"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="332"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="170"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="190"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="197"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="204"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="238"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="245"/>
- <source>&amp;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>&amp;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&apos;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&apos;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 &quot;%1&quot;?</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&apos;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&apos;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&apos;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: &quot;%1&quot;</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&apos;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>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</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&apos;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&apos;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&apos;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 &gt; 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>&amp;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>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="221"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="288"/>
- <source>&amp;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>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="315"/>
- <source>&amp;Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="325"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="332"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="170"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="190"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="197"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="204"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="238"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="245"/>
- <source>&amp;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>&amp;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&apos;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&apos;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 &quot;%1&quot;?</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&apos;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&apos;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&apos;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: &quot;%1&quot;</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&apos;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>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</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&apos;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&apos;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&apos;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 &gt; 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>&amp;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>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="221"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="288"/>
- <source>&amp;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>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="315"/>
- <source>&amp;Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="325"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="332"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="170"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="190"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="197"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="204"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="238"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="245"/>
- <source>&amp;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>&amp;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&apos;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&apos;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 &quot;%1&quot;?</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&apos;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&apos;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&apos;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: &quot;%1&quot;</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&apos;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>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</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&apos;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&apos;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&apos;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 &gt; 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>&amp;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>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="221"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="288"/>
- <source>&amp;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>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="315"/>
- <source>&amp;Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="325"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="332"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="170"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="190"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="197"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="204"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="238"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="245"/>
- <source>&amp;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>&amp;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&apos;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&apos;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 &quot;%1&quot;?</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&apos;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&apos;s regex</source>
- <translation>Perl&apos;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&apos;s regex</source>
- <translation>Perl&apos;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: &quot;%1&quot;</source>
- <translation>Неправильный заголовок: &quot;%1&quot;</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&apos;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>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</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&apos;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&apos;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&apos;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 &gt; 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>&amp;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>&amp;Skip</source>
- <translation>пропускать</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="221"/>
- <source>&amp;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 &amp;name</source>
- <translation>Предложить новое имя</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="288"/>
- <source>&amp;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>&amp;Rename</source>
- <translation>переименовать</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="315"/>
- <source>&amp;Overwrite</source>
- <translation>переписывать</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="325"/>
- <source>&amp;Skip</source>
- <translation>пропускать</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="332"/>
- <source>&amp;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 &amp;name</source>
- <translation>Предложить новое имя</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="170"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="190"/>
- <source>&amp;Rename</source>
- <translation>переименовать</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="197"/>
- <source>&amp;Skip</source>
- <translation>пропускать</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="204"/>
- <source>&amp;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 &amp;name</source>
- <translation>Предложить новое имя</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="238"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="245"/>
- <source>&amp;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>&amp;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&apos;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&apos;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 &quot;%1&quot;?</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&apos;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&apos;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&apos;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: &quot;%1&quot;</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&apos;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>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</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&apos;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&apos;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&apos;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 &gt; 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>&amp;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>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="221"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="288"/>
- <source>&amp;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>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="315"/>
- <source>&amp;Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="325"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="332"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="170"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="190"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="197"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="204"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="238"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="245"/>
- <source>&amp;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>&amp;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&apos;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&apos;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 &quot;%1&quot;?</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&apos;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&apos;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&apos;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: &quot;%1&quot;</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&apos;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>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</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&apos;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&apos;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&apos;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 &gt; 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>&amp;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>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="221"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="288"/>
- <source>&amp;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>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="315"/>
- <source>&amp;Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="325"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="332"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="170"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="190"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="197"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="204"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="238"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="245"/>
- <source>&amp;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>&amp;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&apos;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&apos;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 &quot;%1&quot;?</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&apos;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&apos;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&apos;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: &quot;%1&quot;</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&apos;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>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</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&apos;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&apos;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&apos;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 &gt; 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>&amp;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>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="221"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="288"/>
- <source>&amp;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>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="315"/>
- <source>&amp;Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="325"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="332"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="170"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="190"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="197"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="204"/>
- <source>&amp;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 &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="238"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="245"/>
- <source>&amp;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>&amp;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 &parallelizeIfSmallerThan)
-{
- 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 &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 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 &parallelBuffer) const;
- void send_sequentialBuffer(const int &sequentialBuffer) const;
- void send_parallelizeIfSmallerThan(const int &parallelizeIfSmallerThan) 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">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</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 &parallelBuffer)
-{
- 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 &parallelBuffer);
- 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 &gt; 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>&amp;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>&amp;Skip</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="Cancel">
- <property name="text">
- <string>&amp;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 &amp;name</string>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout_4">
- <item>
- <widget class="QCheckBox" name="checkBoxAlways">
- <property name="text">
- <string>&amp;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>&amp;Rename</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="Overwrite">
- <property name="text">
- <string>&amp;Overwrite</string>
- </property>
- <property name="popupMode">
- <enum>QToolButton::MenuButtonPopup</enum>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="Skip">
- <property name="text">
- <string>&amp;Skip</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="Cancel">
- <property name="text">
- <string>&amp;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 &amp;name</string>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout_4">
- <item>
- <widget class="QCheckBox" name="checkBoxAlways">
- <property name="text">
- <string>&amp;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>&amp;Rename</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="Skip">
- <property name="text">
- <string>&amp;Skip</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="Cancel">
- <property name="text">
- <string>&amp;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 &amp;name</string>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout_3">
- <item>
- <widget class="QCheckBox" name="checkBoxAlways">
- <property name="text">
- <string>&amp;Always perform this action</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="Rename">
- <property name="text">
- <string>&amp;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>&amp;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
deleted file mode 100644
index 7932127..0000000
--- a/plugins/CopyEngine/Ultracopier/resources/add.png
+++ /dev/null
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier/resources/edit.png b/plugins/CopyEngine/Ultracopier/resources/edit.png
deleted file mode 100644
index 5464856..0000000
--- a/plugins/CopyEngine/Ultracopier/resources/edit.png
+++ /dev/null
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier/resources/filter.png b/plugins/CopyEngine/Ultracopier/resources/filter.png
deleted file mode 100644
index 9bb3164..0000000
--- a/plugins/CopyEngine/Ultracopier/resources/filter.png
+++ /dev/null
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier/resources/remove.png b/plugins/CopyEngine/Ultracopier/resources/remove.png
deleted file mode 100644
index b711740..0000000
--- a/plugins/CopyEngine/Ultracopier/resources/remove.png
+++ /dev/null
Binary files differ