1 // UpdateCallback.h 2 3 #ifndef __UPDATECALLBACK_H 4 #define __UPDATECALLBACK_H 5 6 #include "Common/MyCom.h" 7 #include "Common/MyString.h" 8 9 #include "../../IPassword.h" 10 #include "../../ICoder.h" 11 12 #include "../Common/UpdatePair.h" 13 #include "../Common/UpdateProduce.h" 14 15 #define INTERFACE_IUpdateCallbackUI(x) \ 16 virtual HRESULT SetTotal(UInt64 size) x; \ 17 virtual HRESULT SetCompleted(const UInt64 *completeValue) x; \ 18 virtual HRESULT SetRatioInfo(const UInt64 *inSize, const UInt64 *outSize) x; \ 19 virtual HRESULT CheckBreak() x; \ 20 virtual HRESULT Finilize() x; \ 21 virtual HRESULT SetNumFiles(UInt64 numFiles) x; \ 22 virtual HRESULT GetStream(const wchar_t *name, bool isAnti) x; \ 23 virtual HRESULT OpenFileError(const wchar_t *name, DWORD systemError) x; \ 24 virtual HRESULT SetOperationResult(Int32 operationResult) x; \ 25 virtual HRESULT CryptoGetTextPassword2(Int32 *passwordIsDefined, BSTR *password) x; \ 26 virtual HRESULT CryptoGetTextPassword(BSTR *password) x; \ 27 /* virtual HRESULT ShowDeleteFile(const wchar_t *name) x; */ \ 28 /* virtual HRESULT CloseProgress() { return S_OK; }; */ 29 30 struct IUpdateCallbackUI 31 { 32 INTERFACE_IUpdateCallbackUI(=0) 33 }; 34 35 class CArchiveUpdateCallback: 36 public IArchiveUpdateCallback2, 37 public ICryptoGetTextPassword2, 38 public ICryptoGetTextPassword, 39 public ICompressProgressInfo, 40 public CMyUnknownImp 41 { 42 public: 43 MY_UNKNOWN_IMP4( 44 IArchiveUpdateCallback2, 45 ICryptoGetTextPassword2, 46 ICryptoGetTextPassword, 47 ICompressProgressInfo) 48 49 STDMETHOD(SetRatioInfo)(const UInt64 *inSize, const UInt64 *outSize); 50 51 INTERFACE_IArchiveUpdateCallback2(;) 52 53 STDMETHOD(CryptoGetTextPassword2)(Int32 *passwordIsDefined, BSTR *password); 54 STDMETHOD(CryptoGetTextPassword)(BSTR *password); 55 56 public: 57 CRecordVector<UInt64> VolumesSizes; 58 UString VolName; 59 UString VolExt; 60 61 IUpdateCallbackUI *Callback; 62 63 bool ShareForWrite; 64 bool StdInMode; 65 const CDirItems *DirItems; 66 const CObjectVector<CArcItem> *ArcItems; 67 const CRecordVector<CUpdatePair2> *UpdatePairs; 68 const UStringVector *NewNames; 69 CMyComPtr<IInArchive> Archive; 70 71 CArchiveUpdateCallback(); 72 }; 73 74 #endif 75