1 // IFolderArchive.h 2 3 #ifndef ZIP7_INC_IFOLDER_ARCHIVE_H 4 #define ZIP7_INC_IFOLDER_ARCHIVE_H 5 6 #include "../../../Common/MyString.h" 7 8 #include "../../Archive/IArchive.h" 9 #include "../../UI/Common/LoadCodecs.h" 10 #include "../../UI/FileManager/IFolder.h" 11 12 #include "../Common/ExtractMode.h" 13 #include "../Common/IFileExtractCallback.h" 14 15 Z7_PURE_INTERFACES_BEGIN 16 17 /* ---------- IArchiveFolder ---------- 18 IArchiveFolder is implemented by CAgentFolder (Agent/Agent.h) 19 IArchiveFolder is used by: 20 - FileManager/PanelCopy.cpp 21 CPanel::CopyTo(), if (options->testMode) 22 - FAR/PluginRead.cpp 23 CPlugin::ExtractFiles 24 */ 25 26 #define Z7_IFACEM_IArchiveFolder(x) \ 27 x(Extract(const UInt32 *indices, UInt32 numItems, \ 28 Int32 includeAltStreams, \ 29 Int32 replaceAltStreamCharsMode, \ 30 NExtract::NPathMode::EEnum pathMode, \ 31 NExtract::NOverwriteMode::EEnum overwriteMode, \ 32 const wchar_t *path, Int32 testMode, \ 33 IFolderArchiveExtractCallback *extractCallback2)) \ 34 35 Z7_IFACE_CONSTR_FOLDERARC(IArchiveFolder, 0x0D) 36 37 38 /* ---------- IInFolderArchive ---------- 39 IInFolderArchive is implemented by CAgent (Agent/Agent.h) 40 IInFolderArchive Is used by FAR/Plugin 41 */ 42 43 #define Z7_IFACEM_IInFolderArchive(x) \ 44 x(Open(IInStream *inStream, const wchar_t *filePath, const wchar_t *arcFormat, BSTR *archiveTypeRes, IArchiveOpenCallback *openArchiveCallback)) \ 45 x(ReOpen(IArchiveOpenCallback *openArchiveCallback)) \ 46 x(Close()) \ 47 x(GetNumberOfProperties(UInt32 *numProperties)) \ 48 x(GetPropertyInfo(UInt32 index, BSTR *name, PROPID *propID, VARTYPE *varType)) \ 49 x(BindToRootFolder(IFolderFolder **resultFolder)) \ 50 x(Extract(NExtract::NPathMode::EEnum pathMode, \ 51 NExtract::NOverwriteMode::EEnum overwriteMode, const wchar_t *path, \ 52 Int32 testMode, IFolderArchiveExtractCallback *extractCallback2)) \ 53 54 Z7_IFACE_CONSTR_FOLDERARC(IInFolderArchive, 0x0E) 55 56 #define Z7_IFACEM_IFolderArchiveUpdateCallback(x) \ 57 x(CompressOperation(const wchar_t *name)) \ 58 x(DeleteOperation(const wchar_t *name)) \ 59 x(OperationResult(Int32 opRes)) \ 60 x(UpdateErrorMessage(const wchar_t *message)) \ 61 x(SetNumFiles(UInt64 numFiles)) \ 62 63 Z7_IFACE_CONSTR_FOLDERARC_SUB(IFolderArchiveUpdateCallback, IProgress, 0x0B) 64 65 #define Z7_IFACEM_IOutFolderArchive(x) \ 66 x(SetFolder(IFolderFolder *folder)) \ 67 x(SetFiles(const wchar_t *folderPrefix, const wchar_t * const *names, UInt32 numNames)) \ 68 x(DeleteItems(ISequentialOutStream *outArchiveStream, \ 69 const UInt32 *indices, UInt32 numItems, IFolderArchiveUpdateCallback *updateCallback)) \ 70 x(DoOperation( \ 71 FStringVector *requestedPaths, \ 72 FStringVector *processedPaths, \ 73 CCodecs *codecs, int index, \ 74 ISequentialOutStream *outArchiveStream, const Byte *stateActions, const wchar_t *sfxModule, \ 75 IFolderArchiveUpdateCallback *updateCallback)) \ 76 x(DoOperation2( \ 77 FStringVector *requestedPaths, \ 78 FStringVector *processedPaths, \ 79 ISequentialOutStream *outArchiveStream, const Byte *stateActions, const wchar_t *sfxModule, \ 80 IFolderArchiveUpdateCallback *updateCallback)) \ 81 82 Z7_IFACE_CONSTR_FOLDERARC(IOutFolderArchive, 0x0F) 83 84 85 #define Z7_IFACEM_IFolderArchiveUpdateCallback2(x) \ 86 x(OpenFileError(const wchar_t *path, HRESULT errorCode)) \ 87 x(ReadingFileError(const wchar_t *path, HRESULT errorCode)) \ 88 x(ReportExtractResult(Int32 opRes, Int32 isEncrypted, const wchar_t *path)) \ 89 x(ReportUpdateOperation(UInt32 notifyOp, const wchar_t *path, Int32 isDir)) \ 90 91 Z7_IFACE_CONSTR_FOLDERARC(IFolderArchiveUpdateCallback2, 0x10) 92 93 94 #define Z7_IFACEM_IFolderScanProgress(x) \ 95 x(ScanError(const wchar_t *path, HRESULT errorCode)) \ 96 x(ScanProgress(UInt64 numFolders, UInt64 numFiles, UInt64 totalSize, const wchar_t *path, Int32 isDir)) \ 97 98 Z7_IFACE_CONSTR_FOLDERARC(IFolderScanProgress, 0x11) 99 100 101 #define Z7_IFACEM_IFolderSetZoneIdMode(x) \ 102 x(SetZoneIdMode(NExtract::NZoneIdMode::EEnum zoneMode)) \ 103 104 Z7_IFACE_CONSTR_FOLDERARC(IFolderSetZoneIdMode, 0x12) 105 106 #define Z7_IFACEM_IFolderSetZoneIdFile(x) \ 107 x(SetZoneIdFile(const Byte *data, UInt32 size)) \ 108 109 Z7_IFACE_CONSTR_FOLDERARC(IFolderSetZoneIdFile, 0x13) 110 111 112 // if the caller calls Before_ArcReopen(), the callee must 113 // clear user break status, because the caller want to open archive still. 114 #define Z7_IFACEM_IFolderArchiveUpdateCallback_MoveArc(x) \ 115 x(MoveArc_Start(const wchar_t *srcTempPath, const wchar_t *destFinalPath, UInt64 size, Int32 updateMode)) \ 116 x(MoveArc_Progress(UInt64 totalSize, UInt64 currentSize)) \ 117 x(MoveArc_Finish()) \ 118 x(Before_ArcReopen()) \ 119 120 Z7_IFACE_CONSTR_FOLDERARC(IFolderArchiveUpdateCallback_MoveArc, 0x14) 121 122 Z7_PURE_INTERFACES_END 123 #endif 124