1*f6dc9357SAndroid Build Coastguard Worker // ProgressBox.h 2*f6dc9357SAndroid Build Coastguard Worker 3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_PROGRESS_BOX_H 4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_PROGRESS_BOX_H 5*f6dc9357SAndroid Build Coastguard Worker 6*f6dc9357SAndroid Build Coastguard Worker #include "../../../Common/MyString.h" 7*f6dc9357SAndroid Build Coastguard Worker #include "../../../Common/MyTypes.h" 8*f6dc9357SAndroid Build Coastguard Worker 9*f6dc9357SAndroid Build Coastguard Worker struct CPercentPrinterState 10*f6dc9357SAndroid Build Coastguard Worker { 11*f6dc9357SAndroid Build Coastguard Worker UInt64 Completed; 12*f6dc9357SAndroid Build Coastguard Worker UInt64 Total; 13*f6dc9357SAndroid Build Coastguard Worker 14*f6dc9357SAndroid Build Coastguard Worker UInt64 Files; 15*f6dc9357SAndroid Build Coastguard Worker UInt64 FilesTotal; 16*f6dc9357SAndroid Build Coastguard Worker 17*f6dc9357SAndroid Build Coastguard Worker AString Command; 18*f6dc9357SAndroid Build Coastguard Worker UString FileName; 19*f6dc9357SAndroid Build Coastguard Worker 20*f6dc9357SAndroid Build Coastguard Worker void ClearCurState(); 21*f6dc9357SAndroid Build Coastguard Worker IsEqualToCPercentPrinterState22*f6dc9357SAndroid Build Coastguard Worker bool IsEqualTo(const CPercentPrinterState &s) const 23*f6dc9357SAndroid Build Coastguard Worker { 24*f6dc9357SAndroid Build Coastguard Worker return 25*f6dc9357SAndroid Build Coastguard Worker Completed == s.Completed 26*f6dc9357SAndroid Build Coastguard Worker && Total == s.Total 27*f6dc9357SAndroid Build Coastguard Worker && Files == s.Files 28*f6dc9357SAndroid Build Coastguard Worker && FilesTotal == s.FilesTotal 29*f6dc9357SAndroid Build Coastguard Worker && Command == s.Command 30*f6dc9357SAndroid Build Coastguard Worker && FileName == s.FileName; 31*f6dc9357SAndroid Build Coastguard Worker } 32*f6dc9357SAndroid Build Coastguard Worker CPercentPrinterStateCPercentPrinterState33*f6dc9357SAndroid Build Coastguard Worker CPercentPrinterState(): 34*f6dc9357SAndroid Build Coastguard Worker Completed(0), 35*f6dc9357SAndroid Build Coastguard Worker Total((UInt64)(Int64)-1), 36*f6dc9357SAndroid Build Coastguard Worker Files(0), 37*f6dc9357SAndroid Build Coastguard Worker FilesTotal(0) 38*f6dc9357SAndroid Build Coastguard Worker {} 39*f6dc9357SAndroid Build Coastguard Worker }; 40*f6dc9357SAndroid Build Coastguard Worker 41*f6dc9357SAndroid Build Coastguard Worker class CProgressBox: public CPercentPrinterState 42*f6dc9357SAndroid Build Coastguard Worker { 43*f6dc9357SAndroid Build Coastguard Worker UInt32 _tickStep; 44*f6dc9357SAndroid Build Coastguard Worker DWORD _prevTick; 45*f6dc9357SAndroid Build Coastguard Worker DWORD _prevElapsedSec; 46*f6dc9357SAndroid Build Coastguard Worker 47*f6dc9357SAndroid Build Coastguard Worker bool _wasPrinted; 48*f6dc9357SAndroid Build Coastguard Worker public: 49*f6dc9357SAndroid Build Coastguard Worker bool UseBytesForPercents; 50*f6dc9357SAndroid Build Coastguard Worker DWORD StartTick; 51*f6dc9357SAndroid Build Coastguard Worker unsigned MaxLen; 52*f6dc9357SAndroid Build Coastguard Worker 53*f6dc9357SAndroid Build Coastguard Worker private: 54*f6dc9357SAndroid Build Coastguard Worker UString _tempU; 55*f6dc9357SAndroid Build Coastguard Worker UString _name1U; 56*f6dc9357SAndroid Build Coastguard Worker UString _name2U; 57*f6dc9357SAndroid Build Coastguard Worker 58*f6dc9357SAndroid Build Coastguard Worker CPercentPrinterState _printedState; 59*f6dc9357SAndroid Build Coastguard Worker 60*f6dc9357SAndroid Build Coastguard Worker AString _title; 61*f6dc9357SAndroid Build Coastguard Worker 62*f6dc9357SAndroid Build Coastguard Worker AString _timeStr; 63*f6dc9357SAndroid Build Coastguard Worker AString _files; 64*f6dc9357SAndroid Build Coastguard Worker AString _sizesStr; 65*f6dc9357SAndroid Build Coastguard Worker AString _name1; 66*f6dc9357SAndroid Build Coastguard Worker AString _name2; 67*f6dc9357SAndroid Build Coastguard Worker AString _perc; 68*f6dc9357SAndroid Build Coastguard Worker 69*f6dc9357SAndroid Build Coastguard Worker void ReduceString(const UString &src, AString &dest); 70*f6dc9357SAndroid Build Coastguard Worker 71*f6dc9357SAndroid Build Coastguard Worker public: 72*f6dc9357SAndroid Build Coastguard Worker 73*f6dc9357SAndroid Build Coastguard Worker CProgressBox(UInt32 tickStep = 200): _tickStep(tickStep)74*f6dc9357SAndroid Build Coastguard Worker _tickStep(tickStep), 75*f6dc9357SAndroid Build Coastguard Worker _prevTick(0), 76*f6dc9357SAndroid Build Coastguard Worker UseBytesForPercents(true), 77*f6dc9357SAndroid Build Coastguard Worker StartTick(0), 78*f6dc9357SAndroid Build Coastguard Worker MaxLen(60) 79*f6dc9357SAndroid Build Coastguard Worker {} 80*f6dc9357SAndroid Build Coastguard Worker 81*f6dc9357SAndroid Build Coastguard Worker void Init(const char *title); 82*f6dc9357SAndroid Build Coastguard Worker void Print(); 83*f6dc9357SAndroid Build Coastguard Worker }; 84*f6dc9357SAndroid Build Coastguard Worker 85*f6dc9357SAndroid Build Coastguard Worker #endif 86