summaryrefslogtreecommitdiff
path: root/plugins/CopyEngine/Ultracopier-0.3/copyEngine-collision-and-error.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/CopyEngine/Ultracopier-0.3/copyEngine-collision-and-error.cpp')
-rw-r--r--plugins/CopyEngine/Ultracopier-0.3/copyEngine-collision-and-error.cpp565
1 files changed, 0 insertions, 565 deletions
diff --git a/plugins/CopyEngine/Ultracopier-0.3/copyEngine-collision-and-error.cpp b/plugins/CopyEngine/Ultracopier-0.3/copyEngine-collision-and-error.cpp
deleted file mode 100644
index 7ec07c2..0000000
--- a/plugins/CopyEngine/Ultracopier-0.3/copyEngine-collision-and-error.cpp
+++ /dev/null
@@ -1,565 +0,0 @@
-/** \file copyEngine.cpp
-\brief Define the copy engine
-\author alpha_one_x86
-\version 0.3
-\date 2010 */
-
-#include <QtCore>
-#include <QFileDialog>
-#include <QMessageBox>
-
-#include "copyEngine.h"
-#include "folderExistsDialog.h"
-
-/// \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(DebugLevel_Critical,"unable to locate the thread");
- return;
- }
- //load the action
- if(isSame)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"file is same: "+source.absoluteFilePath());
- tempFileExistsAction=alwaysDoThisActionForFileExists;
- if(tempFileExistsAction==FileExists_Overwrite || tempFileExistsAction==FileExists_OverwriteIfNewer || tempFileExistsAction==FileExists_OverwriteIfNotSameModificationDate)
- 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 << newItem;
- return;
- }
- dialogIsOpen=true;
- ULTRACOPIER_DEBUGCONSOLE(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(DebugLevel_Notice,"close dialog: "+QString::number(newAction));
- if(newAction==FileExists_Cancel)
- {
- emit cancelAll();
- return;
- }
- if(dialog.getAlways() && newAction!=alwaysDoThisActionForFileExists)
- {
- alwaysDoThisActionForFileExists=newAction;
- listThread->setAlwaysFileExistsAction(alwaysDoThisActionForFileExists);
- switch(newAction)
- {
- default:
- case FileExists_Skip:
- emit newCollisionAction("skip");
- break;
- case FileExists_Rename:
- emit newCollisionAction("rename");
- 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(DebugLevel_Notice,"file already exists: "+source.absoluteFilePath()+", destination: "+destination.absoluteFilePath());
- tempFileExistsAction=alwaysDoThisActionForFileExists;
- switch(tempFileExistsAction)
- {
- case FileExists_Skip:
- case FileExists_Rename:
- case FileExists_Overwrite:
- case FileExists_OverwriteIfNewer:
- case FileExists_OverwriteIfNotSameModificationDate:
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"always do this action: "+QString::number(tempFileExistsAction));
- thread->setFileExistsAction(tempFileExistsAction);
- break;
- default:
- if(dialogIsOpen)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("dialog open, put in queue: %1 %2")
- .arg(source.absoluteFilePath())
- .arg(destination.absoluteFilePath())
- );
- alreadyExistsQueueItem newItem;
- newItem.source=source;
- newItem.destination=destination;
- newItem.isSame=isSame;
- newItem.transfer=thread;
- newItem.scan=NULL;
- alreadyExistsQueue << newItem;
- return;
- }
- dialogIsOpen=true;
- ULTRACOPIER_DEBUGCONSOLE(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(DebugLevel_Notice,"close dialog: "+QString::number(newAction));
- if(newAction==FileExists_Cancel)
- {
- emit cancelAll();
- return;
- }
- if(dialog.getAlways() && newAction!=alwaysDoThisActionForFileExists)
- {
- alwaysDoThisActionForFileExists=newAction;
- listThread->setAlwaysFileExistsAction(alwaysDoThisActionForFileExists);
- switch(newAction)
- {
- default:
- case FileExists_Skip:
- emit newCollisionAction("skip");
- break;
- case FileExists_Rename:
- emit newCollisionAction("rename");
- break;
- case FileExists_Overwrite:
- emit newCollisionAction("overwrite");
- break;
- case FileExists_OverwriteIfNewer:
- emit newCollisionAction("overwriteIfNewer");
- break;
- case FileExists_OverwriteIfNotSameModificationDate:
- emit newCollisionAction("overwriteIfNotSameModificationDate");
- break;
- }
- }
- if(dialog.getAlways() || newAction!=FileExists_Rename)
- thread->setFileExistsAction(newAction);
- else
- thread->setFileRename(dialog.getNewName());
- dialogIsOpen=false;
- if(!isCalledByShowOneNewDialog)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"emit queryOneNewDialog()");
- emit queryOneNewDialog();
- }
- return;
- break;
- }
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"stop");
-}
-
-/// \note Can be call without queue because all call will be serialized
-void copyEngine::errorOnFile(QFileInfo fileInfo,QString errorString,TransferThread * thread,bool isCalledByShowOneNewDialog)
-{
- if(stopIt)
- return;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"file have error: "+fileInfo.absoluteFilePath()+", error: "+errorString);
- if(thread==NULL)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to locate the thread");
- return;
- }
- //load the action
- tempFileErrorAction=alwaysDoThisActionForFileError;
- switch(tempFileErrorAction)
- {
- case FileError_Skip:
- thread->skip();
- return;
- case FileError_Retry:
- thread->retryAfterError();
- return;
- case FileError_PutToEndOfTheList:
- /// \todo do the read transfer locator and put at the end
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"todo list item not found");
- return;
- default:
- if(dialogIsOpen)
- {
- errorQueueItem newItem;
- newItem.errorString=errorString;
- newItem.inode=fileInfo;
- newItem.mkPath=false;
- newItem.rmPath=false;
- newItem.scan=NULL;
- newItem.transfer=thread;
- errorQueue << newItem;
- return;
- }
- dialogIsOpen=true;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"show dialog");
- emit error(fileInfo.absoluteFilePath(),fileInfo.size(),fileInfo.lastModified(),errorString);
- fileErrorDialog dialog(interface,fileInfo,errorString);
- emit isInPause(true);
- dialog.exec();/// \bug crash when external close
- FileErrorAction newAction=dialog.getAction();
- emit isInPause(false);
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"close dialog: "+QString::number(newAction));
- if(newAction==FileError_Cancel)
- {
- emit cancelAll();
- return;
- }
- if(dialog.getAlways() && newAction!=alwaysDoThisActionForFileError)
- {
- alwaysDoThisActionForFileError=newAction;
- switch(newAction)
- {
- default:
- case FileError_Skip:
- emit newErrorAction("skip");
- break;
- case FileError_PutToEndOfTheList:
- emit newErrorAction("putToEndOfTheList");
- break;
- }
- }
- switch(newAction)
- {
- case FileError_Skip:
- thread->skip();
- break;
- case FileError_Retry:
- thread->retryAfterError();
- break;
- case FileError_PutToEndOfTheList:
- thread->putAtBottom();
- /// \todo do the read transfer locator and put at the end
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"todo");
- break;
- default:
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"file error action wrong");
- break;
- }
- dialogIsOpen=false;
- if(!isCalledByShowOneNewDialog)
- emit queryOneNewDialog();
- else
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"isCalledByShowOneNewDialog==true then not show other dial");
- return;
- break;
- }
- ULTRACOPIER_DEBUGCONSOLE(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(DebugLevel_Notice,"folder already exists: "+source.absoluteFilePath()+", destination: "+destination.absoluteFilePath());
- if(thread==NULL)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to locate the thread");
- return;
- }
- //load the always action
- 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 << newItem;
- return;
- }
- dialogIsOpen=true;
- ULTRACOPIER_DEBUGCONSOLE(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(DebugLevel_Notice,"close dialog: "+QString::number(newAction));
- if(newAction==FolderExists_Cancel)
- {
- emit cancelAll();
- return;
- }
- if(dialog.getAlways() && newAction!=alwaysDoThisActionForFolderExists)
- setComboBoxFolderColision(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,QString errorString,scanFileOrFolder * thread,bool isCalledByShowOneNewDialog)
-{
- if(stopIt)
- return;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"file have error: "+fileInfo.absoluteFilePath()+", error: "+errorString);
- if(thread==NULL)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to locate the thread");
- return;
- }
- //load the always action
- 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;
- errorQueue << newItem;
- return;
- }
- dialogIsOpen=true;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"show dialog");
- emit error(fileInfo.absoluteFilePath(),fileInfo.size(),fileInfo.lastModified(),errorString);
- fileErrorDialog dialog(interface,fileInfo,errorString);
- dialog.exec();/// \bug crash when external close
- FileErrorAction newAction=dialog.getAction();
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"close dialog: "+QString::number(newAction));
- if(newAction==FileError_Cancel)
- {
- emit cancelAll();
- return;
- }
- if(dialog.getAlways() && newAction!=alwaysDoThisActionForFileError)
- setComboBoxFolderError(newAction);
- dialogIsOpen=false;
- thread->setFolderErrorAction(newAction);
- if(!isCalledByShowOneNewDialog)
- emit queryOneNewDialog();
- return;
- break;
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"stop");
-}
-
-// -----------------------------------------------------
-
-//mkpath event
-void copyEngine::mkPathErrorOnFolder(QFileInfo folder,QString errorString,bool isCalledByShowOneNewDialog)
-{
- if(stopIt)
- return;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"file have error: "+folder.absoluteFilePath()+", error: "+errorString);
- //load the always action
- tempFileErrorAction=alwaysDoThisActionForFolderError;
- error_index=0;
- 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;
- errorQueue << newItem;
- return;
- }
- dialogIsOpen=true;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"show dialog");
- emit error(folder.absoluteFilePath(),folder.size(),folder.lastModified(),errorString);
- fileErrorDialog dialog(interface,folder,errorString,false);
- dialog.exec();/// \bug crash when external close
- FileErrorAction newAction=dialog.getAction();
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"close dialog: "+QString::number(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(DebugLevel_Warning,"Unknow switch case: "+QString::number(newAction));
- break;
- }
- if(!isCalledByShowOneNewDialog)
- emit queryOneNewDialog();
- return;
- break;
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"stop");
-}
-
-//rmpath event
-void copyEngine::rmPathErrorOnFolder(QFileInfo folder,QString errorString,bool isCalledByShowOneNewDialog)
-{
- if(stopIt)
- return;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"file have error: "+folder.absoluteFilePath()+", error: "+errorString);
- //load the always action
- tempFileErrorAction=alwaysDoThisActionForFolderError;
- error_index=0;
- switch(tempFileErrorAction)
- {
- case FileError_Skip:
- listThread->rmPathQueue.skip();
- return;
- case FileError_Retry:
- listThread->rmPathQueue.retry();
- return;
- default:
- if(dialogIsOpen)
- {
- errorQueueItem newItem;
- newItem.errorString=errorString;
- newItem.inode=folder;
- newItem.mkPath=false;
- newItem.rmPath=true;
- newItem.scan=NULL;
- newItem.transfer=NULL;
- errorQueue << newItem;
- return;
- }
- dialogIsOpen=true;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"show dialog");
- emit error(folder.absoluteFilePath(),folder.size(),folder.lastModified(),errorString);
- fileErrorDialog dialog(interface,folder,errorString,false);
- dialog.exec();/// \bug crash when external close
- FileErrorAction newAction=dialog.getAction();
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"close dialog: "+QString::number(newAction));
- if(newAction==FileError_Cancel)
- {
- emit cancelAll();
- return;
- }
- if(dialog.getAlways() && newAction!=alwaysDoThisActionForFileError)
- {
- setComboBoxFolderError(newAction);
- alwaysDoThisActionForFolderError=newAction;
- }
- dialogIsOpen=false;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"do the action");
- switch(newAction)
- {
- case FileError_Skip:
- listThread->rmPathQueue.skip();
- break;
- case FileError_Retry:
- listThread->rmPathQueue.retry();
- break;
- default:
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"Unknow switch case: "+QString::number(newAction));
- break;
- }
- if(!isCalledByShowOneNewDialog)
- emit queryOneNewDialog();
- return;
- break;
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"stop");
-}
-
-//show one new dialog if needed
-void copyEngine::showOneNewDialog()
-{
- if(stopIt)
- return;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"alreadyExistsQueue.size(): "+QString::number(alreadyExistsQueue.size()));
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"errorQueue.size(): "+QString::number(errorQueue.size()));
- loop_size=alreadyExistsQueue.size();
- while(loop_size>0)
- {
- if(alreadyExistsQueue.first().transfer!=NULL)
- {
- fileAlreadyExists(alreadyExistsQueue.first().source,
- alreadyExistsQueue.first().destination,
- alreadyExistsQueue.first().isSame,
- alreadyExistsQueue.first().transfer,
- true);
- }
- else if(alreadyExistsQueue.first().scan!=NULL)
- folderAlreadyExists(alreadyExistsQueue.first().source,
- alreadyExistsQueue.first().destination,
- alreadyExistsQueue.first().isSame,
- alreadyExistsQueue.first().scan,
- true);
- else
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"bug, no thread actived");
- alreadyExistsQueue.removeFirst();
- loop_size--;
- }
- loop_size=errorQueue.size();
- while(errorQueue.size()>0)
- {
- if(errorQueue.first().transfer!=NULL)
- errorOnFile(errorQueue.first().inode,errorQueue.first().errorString,errorQueue.first().transfer,true);
- else if(errorQueue.first().scan!=NULL)
- errorOnFolder(errorQueue.first().inode,errorQueue.first().errorString,errorQueue.first().scan,true);
- else if(errorQueue.first().mkPath)
- mkPathErrorOnFolder(errorQueue.first().inode,errorQueue.first().errorString,true);
- else if(errorQueue.first().rmPath)
- rmPathErrorOnFolder(errorQueue.first().inode,errorQueue.first().errorString,true);
- else
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"bug, no thread actived");
- errorQueue.removeFirst();
- loop_size--;
- }
-}