xref: /aosp_15_r20/external/lzma/CPP/7zip/UI/FileManager/OpenCallback.cpp (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
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 Worker HRESULT 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 Worker HRESULT 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 Worker HRESULT 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 Worker HRESULT 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 Worker HRESULT 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