1*f6dc9357SAndroid Build Coastguard Worker // UpdateCallbackConsole.h 2*f6dc9357SAndroid Build Coastguard Worker 3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_UPDATE_CALLBACK_CONSOLE_H 4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_UPDATE_CALLBACK_CONSOLE_H 5*f6dc9357SAndroid Build Coastguard Worker 6*f6dc9357SAndroid Build Coastguard Worker #include "../../../Common/StdOutStream.h" 7*f6dc9357SAndroid Build Coastguard Worker 8*f6dc9357SAndroid Build Coastguard Worker #include "../Common/Update.h" 9*f6dc9357SAndroid Build Coastguard Worker 10*f6dc9357SAndroid Build Coastguard Worker #include "PercentPrinter.h" 11*f6dc9357SAndroid Build Coastguard Worker 12*f6dc9357SAndroid Build Coastguard Worker struct CErrorPathCodes 13*f6dc9357SAndroid Build Coastguard Worker { 14*f6dc9357SAndroid Build Coastguard Worker FStringVector Paths; 15*f6dc9357SAndroid Build Coastguard Worker CRecordVector<DWORD> Codes; 16*f6dc9357SAndroid Build Coastguard Worker AddErrorCErrorPathCodes17*f6dc9357SAndroid Build Coastguard Worker void AddError(const FString &path, DWORD systemError) 18*f6dc9357SAndroid Build Coastguard Worker { 19*f6dc9357SAndroid Build Coastguard Worker Paths.Add(path); 20*f6dc9357SAndroid Build Coastguard Worker Codes.Add(systemError); 21*f6dc9357SAndroid Build Coastguard Worker } ClearCErrorPathCodes22*f6dc9357SAndroid Build Coastguard Worker void Clear() 23*f6dc9357SAndroid Build Coastguard Worker { 24*f6dc9357SAndroid Build Coastguard Worker Paths.Clear(); 25*f6dc9357SAndroid Build Coastguard Worker Codes.Clear(); 26*f6dc9357SAndroid Build Coastguard Worker } 27*f6dc9357SAndroid Build Coastguard Worker }; 28*f6dc9357SAndroid Build Coastguard Worker 29*f6dc9357SAndroid Build Coastguard Worker 30*f6dc9357SAndroid Build Coastguard Worker class CCallbackConsoleBase 31*f6dc9357SAndroid Build Coastguard Worker { 32*f6dc9357SAndroid Build Coastguard Worker void CommonError(const FString &path, DWORD systemError, bool isWarning); 33*f6dc9357SAndroid Build Coastguard Worker 34*f6dc9357SAndroid Build Coastguard Worker protected: 35*f6dc9357SAndroid Build Coastguard Worker CStdOutStream *_so; 36*f6dc9357SAndroid Build Coastguard Worker CStdOutStream *_se; 37*f6dc9357SAndroid Build Coastguard Worker 38*f6dc9357SAndroid Build Coastguard Worker HRESULT ScanError_Base(const FString &path, DWORD systemError); 39*f6dc9357SAndroid Build Coastguard Worker HRESULT OpenFileError_Base(const FString &name, DWORD systemError); 40*f6dc9357SAndroid Build Coastguard Worker HRESULT ReadingFileError_Base(const FString &name, DWORD systemError); 41*f6dc9357SAndroid Build Coastguard Worker 42*f6dc9357SAndroid Build Coastguard Worker public: 43*f6dc9357SAndroid Build Coastguard Worker bool StdOutMode; 44*f6dc9357SAndroid Build Coastguard Worker bool NeedFlush; 45*f6dc9357SAndroid Build Coastguard Worker unsigned PercentsNameLevel; 46*f6dc9357SAndroid Build Coastguard Worker unsigned LogLevel; 47*f6dc9357SAndroid Build Coastguard Worker 48*f6dc9357SAndroid Build Coastguard Worker protected: 49*f6dc9357SAndroid Build Coastguard Worker AString _tempA; 50*f6dc9357SAndroid Build Coastguard Worker UString _tempU; 51*f6dc9357SAndroid Build Coastguard Worker CPercentPrinter _percent; 52*f6dc9357SAndroid Build Coastguard Worker 53*f6dc9357SAndroid Build Coastguard Worker public: 54*f6dc9357SAndroid Build Coastguard Worker CErrorPathCodes FailedFiles; 55*f6dc9357SAndroid Build Coastguard Worker CErrorPathCodes ScanErrors; 56*f6dc9357SAndroid Build Coastguard Worker UInt64 NumNonOpenFiles; 57*f6dc9357SAndroid Build Coastguard Worker CCallbackConsoleBase()58*f6dc9357SAndroid Build Coastguard Worker CCallbackConsoleBase(): 59*f6dc9357SAndroid Build Coastguard Worker StdOutMode(false), 60*f6dc9357SAndroid Build Coastguard Worker NeedFlush(false), 61*f6dc9357SAndroid Build Coastguard Worker PercentsNameLevel(1), 62*f6dc9357SAndroid Build Coastguard Worker LogLevel(0), 63*f6dc9357SAndroid Build Coastguard Worker NumNonOpenFiles(0) 64*f6dc9357SAndroid Build Coastguard Worker {} 65*f6dc9357SAndroid Build Coastguard Worker NeedPercents()66*f6dc9357SAndroid Build Coastguard Worker bool NeedPercents() const { return _percent._so != NULL; } SetWindowWidth(unsigned width)67*f6dc9357SAndroid Build Coastguard Worker void SetWindowWidth(unsigned width) { _percent.MaxLen = width - 1; } 68*f6dc9357SAndroid Build Coastguard Worker Init(CStdOutStream * outStream,CStdOutStream * errorStream,CStdOutStream * percentStream,bool disablePercents)69*f6dc9357SAndroid Build Coastguard Worker void Init( 70*f6dc9357SAndroid Build Coastguard Worker CStdOutStream *outStream, 71*f6dc9357SAndroid Build Coastguard Worker CStdOutStream *errorStream, 72*f6dc9357SAndroid Build Coastguard Worker CStdOutStream *percentStream, 73*f6dc9357SAndroid Build Coastguard Worker bool disablePercents) 74*f6dc9357SAndroid Build Coastguard Worker { 75*f6dc9357SAndroid Build Coastguard Worker FailedFiles.Clear(); 76*f6dc9357SAndroid Build Coastguard Worker 77*f6dc9357SAndroid Build Coastguard Worker _so = outStream; 78*f6dc9357SAndroid Build Coastguard Worker _se = errorStream; 79*f6dc9357SAndroid Build Coastguard Worker _percent._so = percentStream; 80*f6dc9357SAndroid Build Coastguard Worker _percent.DisablePrint = disablePercents; 81*f6dc9357SAndroid Build Coastguard Worker } 82*f6dc9357SAndroid Build Coastguard Worker ClosePercents2()83*f6dc9357SAndroid Build Coastguard Worker void ClosePercents2() 84*f6dc9357SAndroid Build Coastguard Worker { 85*f6dc9357SAndroid Build Coastguard Worker if (NeedPercents()) 86*f6dc9357SAndroid Build Coastguard Worker _percent.ClosePrint(true); 87*f6dc9357SAndroid Build Coastguard Worker } 88*f6dc9357SAndroid Build Coastguard Worker ClosePercents_for_so()89*f6dc9357SAndroid Build Coastguard Worker void ClosePercents_for_so() 90*f6dc9357SAndroid Build Coastguard Worker { 91*f6dc9357SAndroid Build Coastguard Worker if (NeedPercents() && _so == _percent._so) 92*f6dc9357SAndroid Build Coastguard Worker _percent.ClosePrint(false); 93*f6dc9357SAndroid Build Coastguard Worker } 94*f6dc9357SAndroid Build Coastguard Worker 95*f6dc9357SAndroid Build Coastguard Worker HRESULT PrintProgress(const wchar_t *name, bool isDir, const char *command, bool showInLog); 96*f6dc9357SAndroid Build Coastguard Worker 97*f6dc9357SAndroid Build Coastguard Worker // void PrintInfoLine(const UString &s); 98*f6dc9357SAndroid Build Coastguard Worker // void PrintPropInfo(UString &s, PROPID propID, const PROPVARIANT *value); 99*f6dc9357SAndroid Build Coastguard Worker }; 100*f6dc9357SAndroid Build Coastguard Worker 101*f6dc9357SAndroid Build Coastguard Worker 102*f6dc9357SAndroid Build Coastguard Worker class CUpdateCallbackConsole Z7_final: 103*f6dc9357SAndroid Build Coastguard Worker public IUpdateCallbackUI2, 104*f6dc9357SAndroid Build Coastguard Worker public CCallbackConsoleBase 105*f6dc9357SAndroid Build Coastguard Worker { 106*f6dc9357SAndroid Build Coastguard Worker // void PrintPropPair(const char *name, const wchar_t *val); 107*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_IMP(IUpdateCallbackUI) 108*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_IMP(IDirItemsCallback) 109*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_IMP(IUpdateCallbackUI2) 110*f6dc9357SAndroid Build Coastguard Worker 111*f6dc9357SAndroid Build Coastguard Worker HRESULT MoveArc_UpdateStatus(); 112*f6dc9357SAndroid Build Coastguard Worker 113*f6dc9357SAndroid Build Coastguard Worker UInt64 _arcMoving_total; 114*f6dc9357SAndroid Build Coastguard Worker UInt64 _arcMoving_current; 115*f6dc9357SAndroid Build Coastguard Worker UInt64 _arcMoving_percents; 116*f6dc9357SAndroid Build Coastguard Worker Int32 _arcMoving_updateMode; 117*f6dc9357SAndroid Build Coastguard Worker 118*f6dc9357SAndroid Build Coastguard Worker public: 119*f6dc9357SAndroid Build Coastguard Worker bool DeleteMessageWasShown; 120*f6dc9357SAndroid Build Coastguard Worker 121*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_NO_CRYPTO 122*f6dc9357SAndroid Build Coastguard Worker bool PasswordIsDefined; 123*f6dc9357SAndroid Build Coastguard Worker bool AskPassword; 124*f6dc9357SAndroid Build Coastguard Worker UString Password; 125*f6dc9357SAndroid Build Coastguard Worker #endif 126*f6dc9357SAndroid Build Coastguard Worker CUpdateCallbackConsole()127*f6dc9357SAndroid Build Coastguard Worker CUpdateCallbackConsole(): 128*f6dc9357SAndroid Build Coastguard Worker _arcMoving_total(0) 129*f6dc9357SAndroid Build Coastguard Worker , _arcMoving_current(0) 130*f6dc9357SAndroid Build Coastguard Worker , _arcMoving_percents(0) 131*f6dc9357SAndroid Build Coastguard Worker , _arcMoving_updateMode(0) 132*f6dc9357SAndroid Build Coastguard Worker , DeleteMessageWasShown(false) 133*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_NO_CRYPTO 134*f6dc9357SAndroid Build Coastguard Worker , PasswordIsDefined(false) 135*f6dc9357SAndroid Build Coastguard Worker , AskPassword(false) 136*f6dc9357SAndroid Build Coastguard Worker #endif 137*f6dc9357SAndroid Build Coastguard Worker {} 138*f6dc9357SAndroid Build Coastguard Worker 139*f6dc9357SAndroid Build Coastguard Worker /* 140*f6dc9357SAndroid Build Coastguard Worker void Init(CStdOutStream *outStream) 141*f6dc9357SAndroid Build Coastguard Worker { 142*f6dc9357SAndroid Build Coastguard Worker CCallbackConsoleBase::Init(outStream); 143*f6dc9357SAndroid Build Coastguard Worker } 144*f6dc9357SAndroid Build Coastguard Worker */ 145*f6dc9357SAndroid Build Coastguard Worker // ~CUpdateCallbackConsole() { if (NeedPercents()) _percent.ClosePrint(); } 146*f6dc9357SAndroid Build Coastguard Worker }; 147*f6dc9357SAndroid Build Coastguard Worker 148*f6dc9357SAndroid Build Coastguard Worker #endif 149