Home | History | Annotate | Download | only in Common
      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 namespace NOverwriteAnswer
     11 {
     12   enum EEnum
     13   {
     14     kYes,
     15     kYesToAll,
     16     kNo,
     17     kNoToAll,
     18     kAutoRename,
     19     kCancel
     20   };
     21 }
     22 
     23 DECL_INTERFACE_SUB(IFolderArchiveExtractCallback, IProgress, 0x01, 0x07)
     24 {
     25 public:
     26   STDMETHOD(AskOverwrite)(
     27       const wchar_t *existName, const FILETIME *existTime, const UInt64 *existSize,
     28       const wchar_t *newName, const FILETIME *newTime, const UInt64 *newSize,
     29       Int32 *answer) PURE;
     30   STDMETHOD(PrepareOperation)(const wchar_t *name, bool isFolder, Int32 askExtractMode, const UInt64 *position) PURE;
     31   STDMETHOD(MessageError)(const wchar_t *message) PURE;
     32   STDMETHOD(SetOperationResult)(Int32 operationResult, bool encrypted) PURE;
     33 };
     34 
     35 struct IExtractCallbackUI: IFolderArchiveExtractCallback
     36 {
     37   virtual HRESULT BeforeOpen(const wchar_t *name) = 0;
     38   virtual HRESULT OpenResult(const wchar_t *name, HRESULT result, bool encrypted) = 0;
     39   virtual HRESULT SetError(int level, const wchar_t *name,
     40       UInt32 errorFlags, const wchar_t *errors,
     41       UInt32 warningFlags, const wchar_t *warnings) = 0;
     42   virtual HRESULT ThereAreNoFiles() = 0;
     43   virtual HRESULT ExtractResult(HRESULT result) = 0;
     44   virtual HRESULT OpenTypeWarning(const wchar_t *name, const wchar_t *okType, const wchar_t *errorType) = 0;
     45 
     46   #ifndef _NO_CRYPTO
     47   virtual HRESULT SetPassword(const UString &password) = 0;
     48   #endif
     49 };
     50 
     51 
     52 #define INTERFACE_IGetProp(x) \
     53   STDMETHOD(GetProp)(PROPID propID, PROPVARIANT *value) x; \
     54 
     55 DECL_INTERFACE_SUB(IGetProp, IUnknown, 0x01, 0x20)
     56 {
     57   INTERFACE_IGetProp(PURE)
     58 };
     59 
     60 #define INTERFACE_IFolderExtractToStreamCallback(x) \
     61   STDMETHOD(UseExtractToStream)(Int32 *res) x; \
     62   STDMETHOD(GetStream7)(const wchar_t *name, Int32 isDir, ISequentialOutStream **outStream, Int32 askExtractMode, IGetProp *getProp) x; \
     63   STDMETHOD(PrepareOperation7)(Int32 askExtractMode) x; \
     64   STDMETHOD(SetOperationResult7)(Int32 resultEOperationResult, bool encrypted) x; \
     65 
     66 DECL_INTERFACE_SUB(IFolderExtractToStreamCallback, IUnknown, 0x01, 0x30)
     67 {
     68   INTERFACE_IFolderExtractToStreamCallback(PURE)
     69 };
     70 
     71 
     72 #endif
     73