1 // IFileExtractCallback.h 2 3 #ifndef ZIP7_INC_I_FILE_EXTRACT_CALLBACK_H 4 #define ZIP7_INC_I_FILE_EXTRACT_CALLBACK_H 5 6 #include "../../../Common/MyString.h" 7 8 #include "../../IDecl.h" 9 10 #include "LoadCodecs.h" 11 #include "OpenArchive.h" 12 13 Z7_PURE_INTERFACES_BEGIN 14 15 #define Z7_IFACE_CONSTR_FOLDERARC_SUB(i, base, n) \ 16 Z7_DECL_IFACE_7ZIP_SUB(i, base, 1, n) \ 17 { Z7_IFACE_COM7_PURE(i) }; 18 19 #define Z7_IFACE_CONSTR_FOLDERARC(i, n) \ 20 Z7_IFACE_CONSTR_FOLDERARC_SUB(i, IUnknown, n) 21 22 namespace NOverwriteAnswer 23 { 24 enum EEnum 25 { 26 kYes, 27 kYesToAll, 28 kNo, 29 kNoToAll, 30 kAutoRename, 31 kCancel 32 }; 33 } 34 35 36 /* ---------- IFolderArchiveExtractCallback ---------- 37 is implemented by 38 Console/ExtractCallbackConsole.h CExtractCallbackConsole 39 FileManager/ExtractCallback.h CExtractCallbackImp 40 FAR/ExtractEngine.cpp CExtractCallBackImp: (QueryInterface is not supported) 41 42 IID_IFolderArchiveExtractCallback is requested by: 43 - Agent/ArchiveFolder.cpp 44 CAgentFolder::CopyTo(..., IFolderOperationsExtractCallback *callback) 45 is sent to IArchiveFolder::Extract() 46 47 - FileManager/PanelCopy.cpp 48 CPanel::CopyTo(), if (options->testMode) 49 is sent to IArchiveFolder::Extract() 50 51 IFolderArchiveExtractCallback is used by Common/ArchiveExtractCallback.cpp 52 */ 53 54 #define Z7_IFACEM_IFolderArchiveExtractCallback(x) \ 55 x(AskOverwrite( \ 56 const wchar_t *existName, const FILETIME *existTime, const UInt64 *existSize, \ 57 const wchar_t *newName, const FILETIME *newTime, const UInt64 *newSize, \ 58 Int32 *answer)) \ 59 x(PrepareOperation(const wchar_t *name, Int32 isFolder, Int32 askExtractMode, const UInt64 *position)) \ 60 x(MessageError(const wchar_t *message)) \ 61 x(SetOperationResult(Int32 opRes, Int32 encrypted)) \ 62 63 Z7_IFACE_CONSTR_FOLDERARC_SUB(IFolderArchiveExtractCallback, IProgress, 0x07) 64 65 #define Z7_IFACEM_IFolderArchiveExtractCallback2(x) \ 66 x(ReportExtractResult(Int32 opRes, Int32 encrypted, const wchar_t *name)) \ 67 68 Z7_IFACE_CONSTR_FOLDERARC(IFolderArchiveExtractCallback2, 0x08) 69 70 /* ---------- IExtractCallbackUI ---------- 71 is implemented by 72 Console/ExtractCallbackConsole.h CExtractCallbackConsole 73 FileManager/ExtractCallback.h CExtractCallbackImp 74 */ 75 76 #ifdef Z7_NO_CRYPTO 77 #define Z7_IFACEM_IExtractCallbackUI_Crypto(px) 78 #else 79 #define Z7_IFACEM_IExtractCallbackUI_Crypto(px) \ 80 virtual HRESULT SetPassword(const UString &password) px 81 #endif 82 83 #define Z7_IFACEN_IExtractCallbackUI(px) \ 84 virtual HRESULT BeforeOpen(const wchar_t *name, bool testMode) px \ 85 virtual HRESULT OpenResult(const CCodecs *codecs, const CArchiveLink &arcLink, const wchar_t *name, HRESULT result) px \ 86 virtual HRESULT ThereAreNoFiles() px \ 87 virtual HRESULT ExtractResult(HRESULT result) px \ 88 Z7_IFACEM_IExtractCallbackUI_Crypto(px) 89 90 // IExtractCallbackUI - is non-COM interface 91 // IFolderArchiveExtractCallback - is COM interface 92 // Z7_IFACE_DECL_PURE_(IExtractCallbackUI, IFolderArchiveExtractCallback) 93 Z7_IFACE_DECL_PURE(IExtractCallbackUI) 94 95 96 97 #define Z7_IFACEM_IGetProp(x) \ 98 x(GetProp(PROPID propID, PROPVARIANT *value)) \ 99 100 Z7_IFACE_CONSTR_FOLDERARC(IGetProp, 0x20) 101 102 #define Z7_IFACEM_IFolderExtractToStreamCallback(x) \ 103 x(UseExtractToStream(Int32 *res)) \ 104 x(GetStream7(const wchar_t *name, Int32 isDir, ISequentialOutStream **outStream, Int32 askExtractMode, IGetProp *getProp)) \ 105 x(PrepareOperation7(Int32 askExtractMode)) \ 106 x(SetOperationResult8(Int32 resultEOperationResult, Int32 encrypted, UInt64 size)) \ 107 108 Z7_IFACE_CONSTR_FOLDERARC(IFolderExtractToStreamCallback, 0x31) 109 110 Z7_PURE_INTERFACES_END 111 112 #endif 113