1// ExtractCallbackConsole.h
2
3#ifndef __EXTRACTCALLBACKCONSOLE_H
4#define __EXTRACTCALLBACKCONSOLE_H
5
6#include "Common/MyString.h"
7#include "Common/StdOutStream.h"
8#include "../../Common/FileStreams.h"
9#include "../../IPassword.h"
10#include "../../Archive/IArchive.h"
11#include "../Common/ArchiveExtractCallback.h"
12
13class CExtractCallbackConsole:
14  public IExtractCallbackUI,
15  #ifndef _NO_CRYPTO
16  public ICryptoGetTextPassword,
17  #endif
18  public CMyUnknownImp
19{
20public:
21  MY_QUERYINTERFACE_BEGIN2(IFolderArchiveExtractCallback)
22  #ifndef _NO_CRYPTO
23  MY_QUERYINTERFACE_ENTRY(ICryptoGetTextPassword)
24  #endif
25  MY_QUERYINTERFACE_END
26  MY_ADDREF_RELEASE
27
28  STDMETHOD(SetTotal)(UInt64 total);
29  STDMETHOD(SetCompleted)(const UInt64 *completeValue);
30
31  // IFolderArchiveExtractCallback
32  STDMETHOD(AskOverwrite)(
33      const wchar_t *existName, const FILETIME *existTime, const UInt64 *existSize,
34      const wchar_t *newName, const FILETIME *newTime, const UInt64 *newSize,
35      Int32 *answer);
36  STDMETHOD (PrepareOperation)(const wchar_t *name, bool isFolder, Int32 askExtractMode, const UInt64 *position);
37
38  STDMETHOD(MessageError)(const wchar_t *message);
39  STDMETHOD(SetOperationResult)(Int32 operationResult, bool encrypted);
40
41  HRESULT BeforeOpen(const wchar_t *name);
42  HRESULT OpenResult(const wchar_t *name, HRESULT result, bool encrypted);
43  HRESULT ThereAreNoFiles();
44  HRESULT ExtractResult(HRESULT result);
45
46
47  #ifndef _NO_CRYPTO
48  HRESULT SetPassword(const UString &password);
49  STDMETHOD(CryptoGetTextPassword)(BSTR *password);
50
51  bool PasswordIsDefined;
52  UString Password;
53
54  #endif
55
56  UInt64 NumArchives;
57  UInt64 NumArchiveErrors;
58  UInt64 NumFileErrors;
59  UInt64 NumFileErrorsInCurrentArchive;
60
61  CStdOutStream *OutStream;
62
63  void Init()
64  {
65    NumArchives = 0;
66    NumArchiveErrors = 0;
67    NumFileErrors = 0;
68    NumFileErrorsInCurrentArchive = 0;
69  }
70
71};
72
73#endif
74