#ifndef OPEN_CALLBACKS_H #define OPEN_CALLBACKS_H #include "7z_includes.h" #include ////////////////////////////////////////////////////////////// // Archive Open callback class class YCArchiveOpenCallback : public IArchiveOpenCallback, public ICryptoGetTextPassword, public CMyUnknownImp { public: MY_UNKNOWN_IMP1(ICryptoGetTextPassword) STDMETHOD(SetTotal) (const UInt64 *files, const UInt64 *bytes); STDMETHOD(SetCompleted) (const UInt64 *files, const UInt64 *bytes); STDMETHOD(CryptoGetTextPassword) (BSTR *password); bool PasswordIsDefined; UString Password; YCArchiveOpenCallback() : PasswordIsDefined(false) { } }; STDMETHODIMP YCArchiveOpenCallback::SetTotal(const UInt64 * /* files */, const UInt64 * /* bytes */) { return S_OK; } STDMETHODIMP YCArchiveOpenCallback::SetCompleted(const UInt64 * /* files */, const UInt64 * /* bytes */) { return S_OK; } STDMETHODIMP YCArchiveOpenCallback::CryptoGetTextPassword(BSTR *password) { if (!PasswordIsDefined) { // You can ask real password here from user // Password = GetPassword(OutStream); // PasswordIsDefined = true; qDebug() << "Password is not defined" << endl; return E_ABORT; } return StringToBstr(Password, password); } #endif