Files
easy7zip/CPP/7zip/UI/FileManager/OpenCallback.cpp
Igor Pavlov a36c48cece 23.01
2023-12-22 17:17:05 +00:00

87 lines
2.3 KiB
C++
Executable File

// OpenCallback.cpp
#include "StdAfx.h"
#include "../../../Common/ComTry.h"
#include "../../../Common/StringConvert.h"
#include "../../../Windows/FileName.h"
#include "../../../Windows/PropVariant.h"
#include "../../Common/FileStreams.h"
#include "../Common/ZipRegistry.h"
#include "OpenCallback.h"
#include "PasswordDialog.h"
using namespace NWindows;
HRESULT COpenArchiveCallback::Open_SetTotal(const UInt64 *numFiles, const UInt64 *numBytes)
// Z7_COM7F_IMF(COpenArchiveCallback::SetTotal(const UInt64 *numFiles, const UInt64 *numBytes))
{
// COM_TRY_BEGIN
RINOK(ProgressDialog.Sync.CheckStop())
{
// NSynchronization::CCriticalSectionLock lock(_criticalSection);
ProgressDialog.Sync.Set_NumFilesTotal(numFiles ? *numFiles : (UInt64)(Int64)-1);
// if (numFiles)
{
ProgressDialog.Sync.Set_BytesProgressMode(numFiles == NULL);
}
if (numBytes)
ProgressDialog.Sync.Set_NumBytesTotal(*numBytes);
}
return S_OK;
// COM_TRY_END
}
HRESULT COpenArchiveCallback::Open_SetCompleted(const UInt64 *numFiles, const UInt64 *numBytes)
// Z7_COM7F_IMF(COpenArchiveCallback::SetCompleted(const UInt64 *numFiles, const UInt64 *numBytes))
{
// COM_TRY_BEGIN
// NSynchronization::CCriticalSectionLock lock(_criticalSection);
if (numFiles)
ProgressDialog.Sync.Set_NumFilesCur(*numFiles);
if (numBytes)
ProgressDialog.Sync.Set_NumBytesCur(*numBytes);
return ProgressDialog.Sync.CheckStop();
// COM_TRY_END
}
HRESULT COpenArchiveCallback::Open_CheckBreak()
{
return ProgressDialog.Sync.CheckStop();
}
HRESULT COpenArchiveCallback::Open_Finished()
{
return ProgressDialog.Sync.CheckStop();
}
#ifndef Z7_NO_CRYPTO
HRESULT COpenArchiveCallback::Open_CryptoGetTextPassword(BSTR *password)
// Z7_COM7F_IMF(COpenArchiveCallback::CryptoGetTextPassword(BSTR *password))
{
// COM_TRY_BEGIN
PasswordWasAsked = true;
if (!PasswordIsDefined)
{
CPasswordDialog dialog;
bool showPassword = NExtract::Read_ShowPassword();
dialog.ShowPassword = showPassword;
ProgressDialog.WaitCreating();
if (dialog.Create(ProgressDialog) != IDOK)
return E_ABORT;
Password = dialog.Password;
PasswordIsDefined = true;
if (dialog.ShowPassword != showPassword)
NExtract::Save_ShowPassword(dialog.ShowPassword);
}
return StringToBstr(Password, password);
// COM_TRY_END
}
#endif