1*f6dc9357SAndroid Build Coastguard Worker // OpenCallback.cpp 2*f6dc9357SAndroid Build Coastguard Worker 3*f6dc9357SAndroid Build Coastguard Worker #include "StdAfx.h" 4*f6dc9357SAndroid Build Coastguard Worker 5*f6dc9357SAndroid Build Coastguard Worker #include "../../../Common/ComTry.h" 6*f6dc9357SAndroid Build Coastguard Worker #include "../../../Common/StringConvert.h" 7*f6dc9357SAndroid Build Coastguard Worker 8*f6dc9357SAndroid Build Coastguard Worker #include "../../../Windows/FileName.h" 9*f6dc9357SAndroid Build Coastguard Worker #include "../../../Windows/PropVariant.h" 10*f6dc9357SAndroid Build Coastguard Worker 11*f6dc9357SAndroid Build Coastguard Worker #include "../../Common/FileStreams.h" 12*f6dc9357SAndroid Build Coastguard Worker 13*f6dc9357SAndroid Build Coastguard Worker #include "../Common/ZipRegistry.h" 14*f6dc9357SAndroid Build Coastguard Worker 15*f6dc9357SAndroid Build Coastguard Worker #include "OpenCallback.h" 16*f6dc9357SAndroid Build Coastguard Worker #include "PasswordDialog.h" 17*f6dc9357SAndroid Build Coastguard Worker 18*f6dc9357SAndroid Build Coastguard Worker using namespace NWindows; 19*f6dc9357SAndroid Build Coastguard Worker Open_SetTotal(const UInt64 * numFiles,const UInt64 * numBytes)20*f6dc9357SAndroid Build Coastguard WorkerHRESULT COpenArchiveCallback::Open_SetTotal(const UInt64 *numFiles, const UInt64 *numBytes) 21*f6dc9357SAndroid Build Coastguard Worker // Z7_COM7F_IMF(COpenArchiveCallback::SetTotal(const UInt64 *numFiles, const UInt64 *numBytes)) 22*f6dc9357SAndroid Build Coastguard Worker { 23*f6dc9357SAndroid Build Coastguard Worker // COM_TRY_BEGIN 24*f6dc9357SAndroid Build Coastguard Worker RINOK(ProgressDialog.Sync.CheckStop()) 25*f6dc9357SAndroid Build Coastguard Worker { 26*f6dc9357SAndroid Build Coastguard Worker // NSynchronization::CCriticalSectionLock lock(_criticalSection); 27*f6dc9357SAndroid Build Coastguard Worker ProgressDialog.Sync.Set_NumFilesTotal(numFiles ? *numFiles : (UInt64)(Int64)-1); 28*f6dc9357SAndroid Build Coastguard Worker // if (numFiles) 29*f6dc9357SAndroid Build Coastguard Worker { 30*f6dc9357SAndroid Build Coastguard Worker ProgressDialog.Sync.Set_FilesProgressMode(numFiles != NULL); 31*f6dc9357SAndroid Build Coastguard Worker } 32*f6dc9357SAndroid Build Coastguard Worker if (numBytes) 33*f6dc9357SAndroid Build Coastguard Worker ProgressDialog.Sync.Set_NumBytesTotal(*numBytes); 34*f6dc9357SAndroid Build Coastguard Worker } 35*f6dc9357SAndroid Build Coastguard Worker return S_OK; 36*f6dc9357SAndroid Build Coastguard Worker // COM_TRY_END 37*f6dc9357SAndroid Build Coastguard Worker } 38*f6dc9357SAndroid Build Coastguard Worker Open_SetCompleted(const UInt64 * numFiles,const UInt64 * numBytes)39*f6dc9357SAndroid Build Coastguard WorkerHRESULT COpenArchiveCallback::Open_SetCompleted(const UInt64 *numFiles, const UInt64 *numBytes) 40*f6dc9357SAndroid Build Coastguard Worker // Z7_COM7F_IMF(COpenArchiveCallback::SetCompleted(const UInt64 *numFiles, const UInt64 *numBytes)) 41*f6dc9357SAndroid Build Coastguard Worker { 42*f6dc9357SAndroid Build Coastguard Worker // COM_TRY_BEGIN 43*f6dc9357SAndroid Build Coastguard Worker // NSynchronization::CCriticalSectionLock lock(_criticalSection); 44*f6dc9357SAndroid Build Coastguard Worker if (numFiles) 45*f6dc9357SAndroid Build Coastguard Worker ProgressDialog.Sync.Set_NumFilesCur(*numFiles); 46*f6dc9357SAndroid Build Coastguard Worker if (numBytes) 47*f6dc9357SAndroid Build Coastguard Worker ProgressDialog.Sync.Set_NumBytesCur(*numBytes); 48*f6dc9357SAndroid Build Coastguard Worker return ProgressDialog.Sync.CheckStop(); 49*f6dc9357SAndroid Build Coastguard Worker // COM_TRY_END 50*f6dc9357SAndroid Build Coastguard Worker } 51*f6dc9357SAndroid Build Coastguard Worker Open_CheckBreak()52*f6dc9357SAndroid Build Coastguard WorkerHRESULT COpenArchiveCallback::Open_CheckBreak() 53*f6dc9357SAndroid Build Coastguard Worker { 54*f6dc9357SAndroid Build Coastguard Worker return ProgressDialog.Sync.CheckStop(); 55*f6dc9357SAndroid Build Coastguard Worker } 56*f6dc9357SAndroid Build Coastguard Worker Open_Finished()57*f6dc9357SAndroid Build Coastguard WorkerHRESULT COpenArchiveCallback::Open_Finished() 58*f6dc9357SAndroid Build Coastguard Worker { 59*f6dc9357SAndroid Build Coastguard Worker return ProgressDialog.Sync.CheckStop(); 60*f6dc9357SAndroid Build Coastguard Worker } 61*f6dc9357SAndroid Build Coastguard Worker 62*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_NO_CRYPTO Open_CryptoGetTextPassword(BSTR * password)63*f6dc9357SAndroid Build Coastguard WorkerHRESULT COpenArchiveCallback::Open_CryptoGetTextPassword(BSTR *password) 64*f6dc9357SAndroid Build Coastguard Worker // Z7_COM7F_IMF(COpenArchiveCallback::CryptoGetTextPassword(BSTR *password)) 65*f6dc9357SAndroid Build Coastguard Worker { 66*f6dc9357SAndroid Build Coastguard Worker // COM_TRY_BEGIN 67*f6dc9357SAndroid Build Coastguard Worker PasswordWasAsked = true; 68*f6dc9357SAndroid Build Coastguard Worker if (!PasswordIsDefined) 69*f6dc9357SAndroid Build Coastguard Worker { 70*f6dc9357SAndroid Build Coastguard Worker CPasswordDialog dialog; 71*f6dc9357SAndroid Build Coastguard Worker bool showPassword = NExtract::Read_ShowPassword(); 72*f6dc9357SAndroid Build Coastguard Worker dialog.ShowPassword = showPassword; 73*f6dc9357SAndroid Build Coastguard Worker 74*f6dc9357SAndroid Build Coastguard Worker ProgressDialog.WaitCreating(); 75*f6dc9357SAndroid Build Coastguard Worker if (dialog.Create(ProgressDialog) != IDOK) 76*f6dc9357SAndroid Build Coastguard Worker return E_ABORT; 77*f6dc9357SAndroid Build Coastguard Worker 78*f6dc9357SAndroid Build Coastguard Worker Password = dialog.Password; 79*f6dc9357SAndroid Build Coastguard Worker PasswordIsDefined = true; 80*f6dc9357SAndroid Build Coastguard Worker if (dialog.ShowPassword != showPassword) 81*f6dc9357SAndroid Build Coastguard Worker NExtract::Save_ShowPassword(dialog.ShowPassword); 82*f6dc9357SAndroid Build Coastguard Worker } 83*f6dc9357SAndroid Build Coastguard Worker return StringToBstr(Password, password); 84*f6dc9357SAndroid Build Coastguard Worker // COM_TRY_END 85*f6dc9357SAndroid Build Coastguard Worker } 86*f6dc9357SAndroid Build Coastguard Worker #endif 87