tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

ExtractCallbackConsole.h (3589B)


      1 // ExtractCallbackConsole.h
      2 
      3 #ifndef __EXTRACT_CALLBACK_CONSOLE_H
      4 #define __EXTRACT_CALLBACK_CONSOLE_H
      5 
      6 #include "../../../Common/StdOutStream.h"
      7 
      8 #include "../../IPassword.h"
      9 
     10 #include "../../Archive/IArchive.h"
     11 
     12 #include "../Common/ArchiveExtractCallback.h"
     13 
     14 #include "PercentPrinter.h"
     15 
     16 #include "OpenCallbackConsole.h"
     17 
     18 class CExtractScanConsole: public IDirItemsCallback
     19 {
     20  CStdOutStream *_so;
     21  CStdOutStream *_se;
     22  CPercentPrinter _percent;
     23 
     24  bool NeedPercents() const { return _percent._so != NULL; }
     25  
     26  void ClosePercentsAndFlush()
     27  {
     28    if (NeedPercents())
     29      _percent.ClosePrint(true);
     30    if (_so)
     31      _so->Flush();
     32  }
     33 
     34 public:
     35  void Init(CStdOutStream *outStream, CStdOutStream *errorStream, CStdOutStream *percentStream)
     36  {
     37    _so = outStream;
     38    _se = errorStream;
     39    _percent._so = percentStream;
     40  }
     41  
     42  void SetWindowWidth(unsigned width) { _percent.MaxLen = width - 1; }
     43 
     44  void StartScanning();
     45  
     46  INTERFACE_IDirItemsCallback(;)
     47 
     48  void CloseScanning()
     49  {
     50    if (NeedPercents())
     51      _percent.ClosePrint(true);
     52  }
     53 
     54  void PrintStat(const CDirItemsStat &st);
     55 };
     56 
     57 
     58 
     59 
     60 class CExtractCallbackConsole:
     61  public IExtractCallbackUI,
     62  // public IArchiveExtractCallbackMessage,
     63  public IFolderArchiveExtractCallback2,
     64  #ifndef _NO_CRYPTO
     65  public ICryptoGetTextPassword,
     66  #endif
     67  public COpenCallbackConsole,
     68  public CMyUnknownImp
     69 {
     70  AString _tempA;
     71  UString _tempU;
     72 
     73  UString _currentName;
     74 
     75  void ClosePercents_for_so()
     76  {
     77    if (NeedPercents() && _so == _percent._so)
     78      _percent.ClosePrint(false);
     79  }
     80  
     81  void ClosePercentsAndFlush()
     82  {
     83    if (NeedPercents())
     84      _percent.ClosePrint(true);
     85    if (_so)
     86      _so->Flush();
     87  }
     88 
     89 public:
     90  MY_QUERYINTERFACE_BEGIN2(IFolderArchiveExtractCallback)
     91  // MY_QUERYINTERFACE_ENTRY(IArchiveExtractCallbackMessage)
     92  MY_QUERYINTERFACE_ENTRY(IFolderArchiveExtractCallback2)
     93  #ifndef _NO_CRYPTO
     94  MY_QUERYINTERFACE_ENTRY(ICryptoGetTextPassword)
     95  #endif
     96  MY_QUERYINTERFACE_END
     97  MY_ADDREF_RELEASE
     98 
     99  STDMETHOD(SetTotal)(UInt64 total);
    100  STDMETHOD(SetCompleted)(const UInt64 *completeValue);
    101 
    102  INTERFACE_IFolderArchiveExtractCallback(;)
    103 
    104  INTERFACE_IExtractCallbackUI(;)
    105  // INTERFACE_IArchiveExtractCallbackMessage(;)
    106  INTERFACE_IFolderArchiveExtractCallback2(;)
    107 
    108  #ifndef _NO_CRYPTO
    109 
    110  STDMETHOD(CryptoGetTextPassword)(BSTR *password);
    111 
    112  #endif
    113  
    114  UInt64 NumTryArcs;
    115  
    116  bool ThereIsError_in_Current;
    117  bool ThereIsWarning_in_Current;
    118 
    119  UInt64 NumOkArcs;
    120  UInt64 NumCantOpenArcs;
    121  UInt64 NumArcsWithError;
    122  UInt64 NumArcsWithWarnings;
    123 
    124  UInt64 NumOpenArcErrors;
    125  UInt64 NumOpenArcWarnings;
    126  
    127  UInt64 NumFileErrors;
    128  UInt64 NumFileErrors_in_Current;
    129 
    130  bool NeedFlush;
    131  unsigned PercentsNameLevel;
    132  unsigned LogLevel;
    133 
    134  CExtractCallbackConsole():
    135      NeedFlush(false),
    136      PercentsNameLevel(1),
    137      LogLevel(0)
    138      {}
    139 
    140  void SetWindowWidth(unsigned width) { _percent.MaxLen = width - 1; }
    141 
    142  void Init(CStdOutStream *outStream, CStdOutStream *errorStream, CStdOutStream *percentStream)
    143  {
    144    COpenCallbackConsole::Init(outStream, errorStream, percentStream);
    145 
    146    NumTryArcs = 0;
    147    
    148    ThereIsError_in_Current = false;
    149    ThereIsWarning_in_Current = false;
    150 
    151    NumOkArcs = 0;
    152    NumCantOpenArcs = 0;
    153    NumArcsWithError = 0;
    154    NumArcsWithWarnings = 0;
    155 
    156    NumOpenArcErrors = 0;
    157    NumOpenArcWarnings = 0;
    158    
    159    NumFileErrors = 0;
    160    NumFileErrors_in_Current = 0;
    161  }
    162 };
    163 
    164 #endif