Imported Upstream version 9.20
[platform/upstream/7zip.git] / CPP / 7zip / UI / FileManager / OpenCallback.h
1 // OpenCallback.h\r
2 \r
3 #ifndef __OPENCALLBACK_H\r
4 #define __OPENCALLBACK_H\r
5 \r
6 #include "Common/MyCom.h"\r
7 #include "Common/MyString.h"\r
8 \r
9 #include "Windows/FileFind.h"\r
10 \r
11 #include "../../IPassword.h"\r
12 \r
13 #include "../../Archive/IArchive.h"\r
14 \r
15 #ifdef _SFX\r
16 #include "ProgressDialog.h"\r
17 #else\r
18 #include "ProgressDialog2.h"\r
19 #endif\r
20 \r
21 \r
22 class COpenArchiveCallback:\r
23   public IArchiveOpenCallback,\r
24   public IArchiveOpenVolumeCallback,\r
25   public IArchiveOpenSetSubArchiveName,\r
26   public IProgress,\r
27   public ICryptoGetTextPassword,\r
28   public CMyUnknownImp\r
29 {\r
30   UString _folderPrefix;\r
31   NWindows::NFile::NFind::CFileInfoW _fileInfo;\r
32   NWindows::NSynchronization::CCriticalSection _criticalSection;\r
33   bool _subArchiveMode;\r
34   UString _subArchiveName;\r
35 \r
36 public:\r
37   bool PasswordIsDefined;\r
38   bool PasswordWasAsked;\r
39   UString Password;\r
40   HWND ParentWindow;\r
41   CProgressDialog ProgressDialog;\r
42 \r
43   MY_UNKNOWN_IMP5(\r
44     IArchiveOpenCallback,\r
45     IArchiveOpenVolumeCallback,\r
46     IArchiveOpenSetSubArchiveName,\r
47     IProgress,\r
48     ICryptoGetTextPassword)\r
49 \r
50   INTERFACE_IProgress(;)\r
51   INTERFACE_IArchiveOpenCallback(;)\r
52   INTERFACE_IArchiveOpenVolumeCallback(;)\r
53 \r
54   // ICryptoGetTextPassword\r
55   STDMETHOD(CryptoGetTextPassword)(BSTR *password);\r
56 \r
57   STDMETHOD(SetSubArchiveName(const wchar_t *name))\r
58   {\r
59     _subArchiveMode = true;\r
60     _subArchiveName = name;\r
61     return  S_OK;\r
62   }\r
63 \r
64   COpenArchiveCallback():\r
65     ParentWindow(0)\r
66   {\r
67     _subArchiveMode = false;\r
68     PasswordIsDefined = false;\r
69     PasswordWasAsked = false;\r
70   }\r
71   /*\r
72   void Init()\r
73   {\r
74     PasswordIsDefined = false;\r
75     _subArchiveMode = false;\r
76   }\r
77   */\r
78   void LoadFileInfo(const UString &folderPrefix, const UString &fileName)\r
79   {\r
80     _folderPrefix = folderPrefix;\r
81     if (!_fileInfo.Find(_folderPrefix + fileName))\r
82       throw 1;\r
83   }\r
84   void ShowMessage(const UInt64 *completed);\r
85 \r
86   INT_PTR StartProgressDialog(const UString &title, NWindows::CThread &thread)\r
87   {\r
88     return ProgressDialog.Create(title, thread, ParentWindow);\r
89   }\r
90 };\r
91 \r
92 #endif\r