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