xref: /aosp_15_r20/external/lzma/CPP/7zip/UI/FileManager/OpenCallback.cpp (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
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)20 HRESULT 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)39 HRESULT 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()52 HRESULT COpenArchiveCallback::Open_CheckBreak()
53 {
54   return ProgressDialog.Sync.CheckStop();
55 }
56 
Open_Finished()57 HRESULT COpenArchiveCallback::Open_Finished()
58 {
59   return ProgressDialog.Sync.CheckStop();
60 }
61 
62 #ifndef Z7_NO_CRYPTO
Open_CryptoGetTextPassword(BSTR * password)63 HRESULT 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