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 Z7_PURE_INTERFACES_END 107 #endif 108