// UpdateCallbackConsole.h | |
#ifndef __UPDATE_CALLBACK_CONSOLE_H | |
#define __UPDATE_CALLBACK_CONSOLE_H | |
#include "../../../Common/StdOutStream.h" | |
#include "../Common/Update.h" | |
#include "PercentPrinter.h" | |
struct CErrorPathCodes | |
{ | |
FStringVector Paths; | |
CRecordVector<DWORD> Codes; | |
void AddError(const FString &path, DWORD systemError) | |
{ | |
Paths.Add(path); | |
Codes.Add(systemError); | |
} | |
void Clear() | |
{ | |
Paths.Clear(); | |
Codes.Clear(); | |
} | |
}; | |
class CCallbackConsoleBase | |
{ | |
protected: | |
CPercentPrinter _percent; | |
CStdOutStream *_so; | |
CStdOutStream *_se; | |
void CommonError(const FString &path, DWORD systemError, bool isWarning); | |
HRESULT ScanError_Base(const FString &path, DWORD systemError); | |
HRESULT OpenFileError_Base(const FString &name, DWORD systemError); | |
HRESULT ReadingFileError_Base(const FString &name, DWORD systemError); | |
public: | |
bool NeedPercents() const { return _percent._so != NULL; }; | |
bool StdOutMode; | |
bool NeedFlush; | |
unsigned PercentsNameLevel; | |
unsigned LogLevel; | |
AString _tempA; | |
UString _tempU; | |
CCallbackConsoleBase(): | |
StdOutMode(false), | |
NeedFlush(false), | |
PercentsNameLevel(1), | |
LogLevel(0) | |
{} | |
void SetWindowWidth(unsigned width) { _percent.MaxLen = width - 1; } | |
void Init(CStdOutStream *outStream, CStdOutStream *errorStream, CStdOutStream *percentStream) | |
{ | |
FailedFiles.Clear(); | |
_so = outStream; | |
_se = errorStream; | |
_percent._so = percentStream; | |
} | |
void ClosePercents2() | |
{ | |
if (NeedPercents()) | |
_percent.ClosePrint(true); | |
} | |
void ClosePercents_for_so() | |
{ | |
if (NeedPercents() && _so == _percent._so) | |
_percent.ClosePrint(false); | |
} | |
CErrorPathCodes FailedFiles; | |
CErrorPathCodes ScanErrors; | |
HRESULT PrintProgress(const wchar_t *name, const char *command, bool showInLog); | |
}; | |
class CUpdateCallbackConsole: public IUpdateCallbackUI2, public CCallbackConsoleBase | |
{ | |
// void PrintPropPair(const char *name, const wchar_t *val); | |
public: | |
#ifndef _NO_CRYPTO | |
bool PasswordIsDefined; | |
UString Password; | |
bool AskPassword; | |
#endif | |
bool DeleteMessageWasShown; | |
CUpdateCallbackConsole() | |
: DeleteMessageWasShown(false) | |
#ifndef _NO_CRYPTO | |
, PasswordIsDefined(false) | |
, AskPassword(false) | |
#endif | |
{} | |
/* | |
void Init(CStdOutStream *outStream) | |
{ | |
CCallbackConsoleBase::Init(outStream); | |
} | |
*/ | |
// ~CUpdateCallbackConsole() { if (NeedPercents()) _percent.ClosePrint(); } | |
INTERFACE_IUpdateCallbackUI2(;) | |
}; | |
#endif |