1*f6dc9357SAndroid Build Coastguard Worker // ExtractCallbackSfx.h 2*f6dc9357SAndroid Build Coastguard Worker 3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_EXTRACT_CALLBACK_SFX_H 4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_EXTRACT_CALLBACK_SFX_H 5*f6dc9357SAndroid Build Coastguard Worker 6*f6dc9357SAndroid Build Coastguard Worker #include "resource.h" 7*f6dc9357SAndroid Build Coastguard Worker 8*f6dc9357SAndroid Build Coastguard Worker #include "../../../Windows/ResourceString.h" 9*f6dc9357SAndroid Build Coastguard Worker 10*f6dc9357SAndroid Build Coastguard Worker #include "../../Archive/IArchive.h" 11*f6dc9357SAndroid Build Coastguard Worker 12*f6dc9357SAndroid Build Coastguard Worker #include "../../Common/FileStreams.h" 13*f6dc9357SAndroid Build Coastguard Worker #include "../../ICoder.h" 14*f6dc9357SAndroid Build Coastguard Worker 15*f6dc9357SAndroid Build Coastguard Worker #include "../../UI/FileManager/LangUtils.h" 16*f6dc9357SAndroid Build Coastguard Worker 17*f6dc9357SAndroid Build Coastguard Worker #ifndef _NO_PROGRESS 18*f6dc9357SAndroid Build Coastguard Worker #include "../../UI/FileManager/ProgressDialog.h" 19*f6dc9357SAndroid Build Coastguard Worker #endif 20*f6dc9357SAndroid Build Coastguard Worker #include "../../UI/Common/ArchiveOpenCallback.h" 21*f6dc9357SAndroid Build Coastguard Worker 22*f6dc9357SAndroid Build Coastguard Worker class CExtractCallbackImp Z7_final: 23*f6dc9357SAndroid Build Coastguard Worker public IArchiveExtractCallback, 24*f6dc9357SAndroid Build Coastguard Worker public IOpenCallbackUI, 25*f6dc9357SAndroid Build Coastguard Worker public CMyUnknownImp 26*f6dc9357SAndroid Build Coastguard Worker { 27*f6dc9357SAndroid Build Coastguard Worker Z7_COM_UNKNOWN_IMP_0 28*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_COM7_IMP(IProgress) 29*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_COM7_IMP(IArchiveExtractCallback) 30*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_IMP(IOpenCallbackUI) 31*f6dc9357SAndroid Build Coastguard Worker 32*f6dc9357SAndroid Build Coastguard Worker CMyComPtr<IInArchive> _archiveHandler; 33*f6dc9357SAndroid Build Coastguard Worker FString _directoryPath; 34*f6dc9357SAndroid Build Coastguard Worker UString _filePath; 35*f6dc9357SAndroid Build Coastguard Worker FString _diskFilePath; 36*f6dc9357SAndroid Build Coastguard Worker 37*f6dc9357SAndroid Build Coastguard Worker bool _extractMode; 38*f6dc9357SAndroid Build Coastguard Worker struct CProcessedFileInfo 39*f6dc9357SAndroid Build Coastguard Worker { 40*f6dc9357SAndroid Build Coastguard Worker FILETIME MTime; 41*f6dc9357SAndroid Build Coastguard Worker bool IsDir; 42*f6dc9357SAndroid Build Coastguard Worker UInt32 Attributes; 43*f6dc9357SAndroid Build Coastguard Worker } _processedFileInfo; 44*f6dc9357SAndroid Build Coastguard Worker 45*f6dc9357SAndroid Build Coastguard Worker COutFileStream *_outFileStreamSpec; 46*f6dc9357SAndroid Build Coastguard Worker CMyComPtr<ISequentialOutStream> _outFileStream; 47*f6dc9357SAndroid Build Coastguard Worker 48*f6dc9357SAndroid Build Coastguard Worker UString _itemDefaultName; 49*f6dc9357SAndroid Build Coastguard Worker FILETIME _defaultMTime; 50*f6dc9357SAndroid Build Coastguard Worker UInt32 _defaultAttributes; 51*f6dc9357SAndroid Build Coastguard Worker 52*f6dc9357SAndroid Build Coastguard Worker void CreateComplexDirectory(const UStringVector &dirPathParts); 53*f6dc9357SAndroid Build Coastguard Worker public: 54*f6dc9357SAndroid Build Coastguard Worker #ifndef _NO_PROGRESS 55*f6dc9357SAndroid Build Coastguard Worker CProgressDialog ProgressDialog; 56*f6dc9357SAndroid Build Coastguard Worker #endif 57*f6dc9357SAndroid Build Coastguard Worker 58*f6dc9357SAndroid Build Coastguard Worker bool _isCorrupt; 59*f6dc9357SAndroid Build Coastguard Worker UString _message; 60*f6dc9357SAndroid Build Coastguard Worker 61*f6dc9357SAndroid Build Coastguard Worker void Init(IInArchive *archiveHandler, 62*f6dc9357SAndroid Build Coastguard Worker const FString &directoryPath, 63*f6dc9357SAndroid Build Coastguard Worker const UString &itemDefaultName, 64*f6dc9357SAndroid Build Coastguard Worker const FILETIME &defaultMTime, 65*f6dc9357SAndroid Build Coastguard Worker UInt32 defaultAttributes); 66*f6dc9357SAndroid Build Coastguard Worker 67*f6dc9357SAndroid Build Coastguard Worker #ifndef _NO_PROGRESS StartProgressDialog(const UString & title,NWindows::CThread & thread)68*f6dc9357SAndroid Build Coastguard Worker HRESULT StartProgressDialog(const UString &title, NWindows::CThread &thread) 69*f6dc9357SAndroid Build Coastguard Worker { 70*f6dc9357SAndroid Build Coastguard Worker ProgressDialog.Create(title, thread, NULL); 71*f6dc9357SAndroid Build Coastguard Worker { 72*f6dc9357SAndroid Build Coastguard Worker ProgressDialog.SetText(LangString(IDS_PROGRESS_EXTRACTING)); 73*f6dc9357SAndroid Build Coastguard Worker } 74*f6dc9357SAndroid Build Coastguard Worker 75*f6dc9357SAndroid Build Coastguard Worker ProgressDialog.Show(SW_SHOWNORMAL); 76*f6dc9357SAndroid Build Coastguard Worker return S_OK; 77*f6dc9357SAndroid Build Coastguard Worker } ~CExtractCallbackImp()78*f6dc9357SAndroid Build Coastguard Worker ~CExtractCallbackImp() { ProgressDialog.Destroy(); } 79*f6dc9357SAndroid Build Coastguard Worker #endif 80*f6dc9357SAndroid Build Coastguard Worker 81*f6dc9357SAndroid Build Coastguard Worker }; 82*f6dc9357SAndroid Build Coastguard Worker 83*f6dc9357SAndroid Build Coastguard Worker #endif 84