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