1370b324cSopenharmony_ci// PercentPrinter.h 2370b324cSopenharmony_ci 3370b324cSopenharmony_ci#ifndef ZIP7_INC_PERCENT_PRINTER_H 4370b324cSopenharmony_ci#define ZIP7_INC_PERCENT_PRINTER_H 5370b324cSopenharmony_ci 6370b324cSopenharmony_ci#include "../../../Common/StdOutStream.h" 7370b324cSopenharmony_ci 8370b324cSopenharmony_cistruct CPercentPrinterState 9370b324cSopenharmony_ci{ 10370b324cSopenharmony_ci UInt64 Completed; 11370b324cSopenharmony_ci UInt64 Total; 12370b324cSopenharmony_ci 13370b324cSopenharmony_ci UInt64 Files; 14370b324cSopenharmony_ci 15370b324cSopenharmony_ci AString Command; 16370b324cSopenharmony_ci UString FileName; 17370b324cSopenharmony_ci 18370b324cSopenharmony_ci void ClearCurState(); 19370b324cSopenharmony_ci 20370b324cSopenharmony_ci CPercentPrinterState(): 21370b324cSopenharmony_ci Completed(0), 22370b324cSopenharmony_ci Total((UInt64)(Int64)-1), 23370b324cSopenharmony_ci Files(0) 24370b324cSopenharmony_ci {} 25370b324cSopenharmony_ci}; 26370b324cSopenharmony_ci 27370b324cSopenharmony_ciclass CPercentPrinter: public CPercentPrinterState 28370b324cSopenharmony_ci{ 29370b324cSopenharmony_ci UInt32 _tickStep; 30370b324cSopenharmony_ci DWORD _prevTick; 31370b324cSopenharmony_ci 32370b324cSopenharmony_ci AString _s; 33370b324cSopenharmony_ci 34370b324cSopenharmony_ci AString _printedString; 35370b324cSopenharmony_ci AString _temp; 36370b324cSopenharmony_ci UString _tempU; 37370b324cSopenharmony_ci 38370b324cSopenharmony_ci CPercentPrinterState _printedState; 39370b324cSopenharmony_ci AString _printedPercents; 40370b324cSopenharmony_ci 41370b324cSopenharmony_ci void GetPercents(); 42370b324cSopenharmony_ci 43370b324cSopenharmony_cipublic: 44370b324cSopenharmony_ci CStdOutStream *_so; 45370b324cSopenharmony_ci 46370b324cSopenharmony_ci bool NeedFlush; 47370b324cSopenharmony_ci unsigned MaxLen; 48370b324cSopenharmony_ci 49370b324cSopenharmony_ci CPercentPrinter(UInt32 tickStep = 200): 50370b324cSopenharmony_ci _tickStep(tickStep), 51370b324cSopenharmony_ci _prevTick(0), 52370b324cSopenharmony_ci NeedFlush(true), 53370b324cSopenharmony_ci MaxLen(80 - 1) 54370b324cSopenharmony_ci {} 55370b324cSopenharmony_ci 56370b324cSopenharmony_ci ~CPercentPrinter(); 57370b324cSopenharmony_ci 58370b324cSopenharmony_ci void ClosePrint(bool needFlush); 59370b324cSopenharmony_ci void Print(); 60370b324cSopenharmony_ci}; 61370b324cSopenharmony_ci 62370b324cSopenharmony_ci#endif 63