/** \file StructEnumDefinition.h \brief Define the structure and enumeration used in ultracopier or into the plugin \author alpha_one_x86 \licence GPL3, see the file COPYING */ #include #include #ifndef STRUCTDEF_H #define STRUCTDEF_H namespace Ultracopier { /// \brief Define the mode of the copy window/request, if need be copy or move enum CopyMode : uint8_t { Copy=0x00, Move=0x01 }; enum RemainingTimeAlgo : uint8_t { RemainingTimeAlgo_Traditional=0x00, RemainingTimeAlgo_Logarithmic=0x01 }; /// \brief Define the catching state, if the copy is totally catch of the explorer, partially or nothing enum CatchState : uint8_t { Uncaught=0x00, Semiuncaught=0x01, Caught=0x02 }; /// \brief Define the listening state enum ListeningState : uint8_t { NotListening=0x00,///< 0 listener is listening SemiListening=0x01,///< only part of listeners are listening FullListening=0x02///< all the listeners are listening }; /// \brief Define the copy type, if folder, file or both enum CopyType : uint8_t { File = 0x01, FileAndFolder = 0x02 }; /// \brief transfer list operation, can define nothing, the import/export or both enum TransferListOperation : uint8_t { TransferListOperation_None = 0x00, TransferListOperation_Import = 0x01, TransferListOperation_Export = 0x02, TransferListOperation_ImportExport = TransferListOperation_Import | TransferListOperation_Export }; enum EngineActionInProgress : uint8_t { Idle = 0x00, Listing = 0x01, Copying = 0x02, CopyingAndListing = Listing | Copying }; /// \brief the level of information enum DebugLevel : uint8_t { DebugLevel_Information=0x01, ///< Information like the compiler, OS, Qt version, all to know in witch condition ultracopier is launched DebugLevel_Critical=0x02, ///< Critical error, where it don't know how skip it DebugLevel_Warning=0x03, ///< Error, but have way to skip it DebugLevel_Notice=0x04 ///< General information to debug, what file is open, what event is received, ... }; enum SizeUnit : uint8_t { SizeUnit_byte=0x00, SizeUnit_KiloByte=0x01, SizeUnit_MegaByte=0x02, SizeUnit_GigaByte=0x03, SizeUnit_TeraByte=0x04, SizeUnit_PetaByte=0x05, SizeUnit_ExaByte=0x06, SizeUnit_ZettaByte=0x07, SizeUnit_YottaByte=0x08 }; /// \brief structure for decompossed time struct TimeDecomposition { uint16_t second; uint16_t minute; uint16_t hour; }; //////////////////////////// Return list ////////////////////////////// enum ActionTypeCopyList : uint8_t { //playlist action MoveItem=0x00, RemoveItem=0x01, AddingItem=0x02, //Item action, to inform the stat of one entry PreOperation=0x03, Transfer=0x04,//need send PreOperation before PostOperation=0x05, CustomOperation=0x06 /// \note this need be used after preoperation and before postoperation }; /// \brief structure for progression item struct ProgressionItem { uint64_t id; uint64_t currentRead; uint64_t currentWrite; uint64_t total; }; /// \brief item to insert item in the interface struct ItemOfCopyList { uint64_t id; // if type == CustomOperation, then is the translated name of the operation std::string sourceFullPath;///< full path with file name: /foo/foo.txt std::string sourceFileName;///< full path with file name: foo.txt std::string destinationFullPath;///< full path with file name: /foo/foo.txt std::string destinationFileName;///< full path with file name: foo.txt // if type == CustomOperation, then 0 = without progression, 1 = with progression uint64_t size; CopyMode mode; }; /// \brief The definition of no removing action on transfer list struct ActionOnCopyList { int position; // if type == MoveItem // if type == RemoveItem, then 0 = normal remove, 1 = skip int moveAt; }; /// \brief action normal or due to interface query on copy list struct ReturnActionOnCopyList { ActionTypeCopyList type; ///< used if type == AddingItem || type == PreOperation (for interface without transfer list) || type == CustomOperation ItemOfCopyList addAction; ///< used if type != AddingItem ActionOnCopyList userAction; }; } #endif // STRUCTDEF_H