Source code

Revision control

Copy as Markdown

Other Tools

// ExtractCallbackConsole.h↩
#ifndef __EXTRACT_CALLBACK_CONSOLE_H↩
#define __EXTRACT_CALLBACK_CONSOLE_H↩
#include "../../../Common/StdOutStream.h"
#include "../../IPassword.h"
#include "../../Archive/IArchive.h"
#include "../Common/ArchiveExtractCallback.h"
#include "PercentPrinter.h"
#include "OpenCallbackConsole.h"
class CExtractScanConsole: public IDirItemsCallback↩
{↩
CStdOutStream *_so;↩
CStdOutStream *_se;↩
CPercentPrinter _percent;↩
bool NeedPercents() const { return _percent._so != NULL; }↩
void ClosePercentsAndFlush()↩
{↩
if (NeedPercents())↩
_percent.ClosePrint(true);↩
if (_so)↩
_so->Flush();↩
}↩
public:↩
void Init(CStdOutStream *outStream, CStdOutStream *errorStream, CStdOutStream *percentStream)↩
{↩
_so = outStream;↩
_se = errorStream;↩
_percent._so = percentStream;↩
}↩
void SetWindowWidth(unsigned width) { _percent.MaxLen = width - 1; }↩
void StartScanning();↩
INTERFACE_IDirItemsCallback(;)↩
void CloseScanning()↩
{↩
if (NeedPercents())↩
_percent.ClosePrint(true);↩
}↩
void PrintStat(const CDirItemsStat &st);↩
};↩
class CExtractCallbackConsole:↩
public IExtractCallbackUI,↩
// public IArchiveExtractCallbackMessage,↩
public IFolderArchiveExtractCallback2,↩
#ifndef _NO_CRYPTO↩
public ICryptoGetTextPassword,↩
#endif
public COpenCallbackConsole,↩
public CMyUnknownImp↩
{↩
AString _tempA;↩
UString _tempU;↩
UString _currentName;↩
void ClosePercents_for_so()↩
{↩
if (NeedPercents() && _so == _percent._so)↩
_percent.ClosePrint(false);↩
}↩
void ClosePercentsAndFlush()↩
{↩
if (NeedPercents())↩
_percent.ClosePrint(true);↩
if (_so)↩
_so->Flush();↩
}↩
public:↩
MY_QUERYINTERFACE_BEGIN2(IFolderArchiveExtractCallback)↩
// MY_QUERYINTERFACE_ENTRY(IArchiveExtractCallbackMessage)↩
MY_QUERYINTERFACE_ENTRY(IFolderArchiveExtractCallback2)↩
#ifndef _NO_CRYPTO↩
MY_QUERYINTERFACE_ENTRY(ICryptoGetTextPassword)↩
#endif
MY_QUERYINTERFACE_END↩
MY_ADDREF_RELEASE↩
STDMETHOD(SetTotal)(UInt64 total);↩
STDMETHOD(SetCompleted)(const UInt64 *completeValue);↩
INTERFACE_IFolderArchiveExtractCallback(;)↩
INTERFACE_IExtractCallbackUI(;)↩
// INTERFACE_IArchiveExtractCallbackMessage(;)↩
INTERFACE_IFolderArchiveExtractCallback2(;)↩
#ifndef _NO_CRYPTO↩
STDMETHOD(CryptoGetTextPassword)(BSTR *password);↩
#endif
UInt64 NumTryArcs;↩
bool ThereIsError_in_Current;↩
bool ThereIsWarning_in_Current;↩
UInt64 NumOkArcs;↩
UInt64 NumCantOpenArcs;↩
UInt64 NumArcsWithError;↩
UInt64 NumArcsWithWarnings;↩
UInt64 NumOpenArcErrors;↩
UInt64 NumOpenArcWarnings;↩
UInt64 NumFileErrors;↩
UInt64 NumFileErrors_in_Current;↩
bool NeedFlush;↩
unsigned PercentsNameLevel;↩
unsigned LogLevel;↩
CExtractCallbackConsole():↩
NeedFlush(false),↩
PercentsNameLevel(1),↩
LogLevel(0)↩
{}↩
void SetWindowWidth(unsigned width) { _percent.MaxLen = width - 1; }↩
void Init(CStdOutStream *outStream, CStdOutStream *errorStream, CStdOutStream *percentStream)↩
{↩
COpenCallbackConsole::Init(outStream, errorStream, percentStream);↩
NumTryArcs = 0;↩
ThereIsError_in_Current = false;↩
ThereIsWarning_in_Current = false;↩
NumOkArcs = 0;↩
NumCantOpenArcs = 0;↩
NumArcsWithError = 0;↩
NumArcsWithWarnings = 0;↩
NumOpenArcErrors = 0;↩
NumOpenArcWarnings = 0;↩
NumFileErrors = 0;↩
NumFileErrors_in_Current = 0;↩
}↩
};↩
#endif