1*f6dc9357SAndroid Build Coastguard Worker // PercentPrinter.h 2*f6dc9357SAndroid Build Coastguard Worker 3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_PERCENT_PRINTER_H 4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_PERCENT_PRINTER_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 struct CPercentPrinterState 9*f6dc9357SAndroid Build Coastguard Worker { 10*f6dc9357SAndroid Build Coastguard Worker UInt64 Completed; 11*f6dc9357SAndroid Build Coastguard Worker UInt64 Total; 12*f6dc9357SAndroid Build Coastguard Worker 13*f6dc9357SAndroid Build Coastguard Worker UInt64 Files; 14*f6dc9357SAndroid Build Coastguard Worker 15*f6dc9357SAndroid Build Coastguard Worker AString Command; 16*f6dc9357SAndroid Build Coastguard Worker UString FileName; 17*f6dc9357SAndroid Build Coastguard Worker 18*f6dc9357SAndroid Build Coastguard Worker void ClearCurState(); 19*f6dc9357SAndroid Build Coastguard Worker CPercentPrinterStateCPercentPrinterState20*f6dc9357SAndroid Build Coastguard Worker CPercentPrinterState(): 21*f6dc9357SAndroid Build Coastguard Worker Completed(0), 22*f6dc9357SAndroid Build Coastguard Worker Total((UInt64)(Int64)-1), 23*f6dc9357SAndroid Build Coastguard Worker Files(0) 24*f6dc9357SAndroid Build Coastguard Worker {} 25*f6dc9357SAndroid Build Coastguard Worker }; 26*f6dc9357SAndroid Build Coastguard Worker 27*f6dc9357SAndroid Build Coastguard Worker class CPercentPrinter: public CPercentPrinterState 28*f6dc9357SAndroid Build Coastguard Worker { 29*f6dc9357SAndroid Build Coastguard Worker public: 30*f6dc9357SAndroid Build Coastguard Worker CStdOutStream *_so; 31*f6dc9357SAndroid Build Coastguard Worker bool DisablePrint; 32*f6dc9357SAndroid Build Coastguard Worker bool NeedFlush; 33*f6dc9357SAndroid Build Coastguard Worker unsigned MaxLen; 34*f6dc9357SAndroid Build Coastguard Worker 35*f6dc9357SAndroid Build Coastguard Worker private: 36*f6dc9357SAndroid Build Coastguard Worker UInt32 _tickStep; 37*f6dc9357SAndroid Build Coastguard Worker DWORD _prevTick; 38*f6dc9357SAndroid Build Coastguard Worker 39*f6dc9357SAndroid Build Coastguard Worker AString _s; 40*f6dc9357SAndroid Build Coastguard Worker 41*f6dc9357SAndroid Build Coastguard Worker AString _printedString; 42*f6dc9357SAndroid Build Coastguard Worker AString _temp; 43*f6dc9357SAndroid Build Coastguard Worker UString _tempU; 44*f6dc9357SAndroid Build Coastguard Worker 45*f6dc9357SAndroid Build Coastguard Worker CPercentPrinterState _printedState; 46*f6dc9357SAndroid Build Coastguard Worker AString _printedPercents; 47*f6dc9357SAndroid Build Coastguard Worker 48*f6dc9357SAndroid Build Coastguard Worker void GetPercents(); 49*f6dc9357SAndroid Build Coastguard Worker 50*f6dc9357SAndroid Build Coastguard Worker public: 51*f6dc9357SAndroid Build Coastguard Worker 52*f6dc9357SAndroid Build Coastguard Worker CPercentPrinter(UInt32 tickStep = 200): DisablePrint(false)53*f6dc9357SAndroid Build Coastguard Worker DisablePrint(false), 54*f6dc9357SAndroid Build Coastguard Worker NeedFlush(true), 55*f6dc9357SAndroid Build Coastguard Worker MaxLen(80 - 1), 56*f6dc9357SAndroid Build Coastguard Worker _tickStep(tickStep), 57*f6dc9357SAndroid Build Coastguard Worker _prevTick(0) 58*f6dc9357SAndroid Build Coastguard Worker {} 59*f6dc9357SAndroid Build Coastguard Worker 60*f6dc9357SAndroid Build Coastguard Worker ~CPercentPrinter(); 61*f6dc9357SAndroid Build Coastguard Worker 62*f6dc9357SAndroid Build Coastguard Worker void ClosePrint(bool needFlush); 63*f6dc9357SAndroid Build Coastguard Worker void Print(); 64*f6dc9357SAndroid Build Coastguard Worker }; 65*f6dc9357SAndroid Build Coastguard Worker 66*f6dc9357SAndroid Build Coastguard Worker #endif 67