summaryrefslogtreecommitdiff
path: root/plugins/CopyEngine/Ultracopier/CopyEngine.h
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/CopyEngine/Ultracopier/CopyEngine.h')
-rw-r--r--plugins/CopyEngine/Ultracopier/CopyEngine.h382
1 files changed, 0 insertions, 382 deletions
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