1 // ArchiveOpenCallback.h
\r
3 #ifndef __ARCHIVE_OPEN_CALLBACK_H
\r
4 #define __ARCHIVE_OPEN_CALLBACK_H
\r
6 #include "Common/MyCom.h"
\r
7 #include "Common/MyString.h"
\r
9 #include "Windows/FileFind.h"
\r
12 #include "../../IPassword.h"
\r
14 #include "../../Archive/IArchive.h"
\r
18 #define INTERFACE_IOpenCallbackUI_Crypto(x)
\r
22 #define INTERFACE_IOpenCallbackUI_Crypto(x) \
\r
23 virtual HRESULT Open_CryptoGetTextPassword(BSTR *password) x; \
\r
24 virtual HRESULT Open_GetPasswordIfAny(UString &password) x; \
\r
25 virtual bool Open_WasPasswordAsked() x; \
\r
26 virtual void Open_ClearPasswordWasAskedFlag() x; \
\r
30 #define INTERFACE_IOpenCallbackUI(x) \
\r
31 virtual HRESULT Open_CheckBreak() x; \
\r
32 virtual HRESULT Open_SetTotal(const UInt64 *files, const UInt64 *bytes) x; \
\r
33 virtual HRESULT Open_SetCompleted(const UInt64 *files, const UInt64 *bytes) x; \
\r
34 INTERFACE_IOpenCallbackUI_Crypto(x)
\r
36 struct IOpenCallbackUI
\r
38 INTERFACE_IOpenCallbackUI(=0)
\r
41 class COpenCallbackImp:
\r
42 public IArchiveOpenCallback,
\r
43 public IArchiveOpenVolumeCallback,
\r
44 public IArchiveOpenSetSubArchiveName,
\r
46 public ICryptoGetTextPassword,
\r
48 public CMyUnknownImp
\r
53 IArchiveOpenVolumeCallback,
\r
54 ICryptoGetTextPassword,
\r
55 IArchiveOpenSetSubArchiveName
\r
59 IArchiveOpenVolumeCallback,
\r
60 IArchiveOpenSetSubArchiveName
\r
64 INTERFACE_IArchiveOpenCallback(;)
\r
65 INTERFACE_IArchiveOpenVolumeCallback(;)
\r
68 STDMETHOD(CryptoGetTextPassword)(BSTR *password);
\r
71 STDMETHOD(SetSubArchiveName(const wchar_t *name))
\r
73 _subArchiveMode = true;
\r
74 _subArchiveName = name;
\r
80 UString _folderPrefix;
\r
81 NWindows::NFile::NFind::CFileInfoW _fileInfo;
\r
82 bool _subArchiveMode;
\r
83 UString _subArchiveName;
\r
85 UStringVector FileNames;
\r
86 IOpenCallbackUI *Callback;
\r
87 CMyComPtr<IArchiveOpenCallback> ReOpenCallback;
\r
90 COpenCallbackImp(): Callback(NULL) {}
\r
91 void Init(const UString &folderPrefix, const UString &fileName)
\r
93 _folderPrefix = folderPrefix;
\r
94 if (!_fileInfo.Find(_folderPrefix + fileName))
\r
97 _subArchiveMode = false;
\r
100 int FindName(const UString &name);
\r