xref: /aosp_15_r20/external/lzma/CPP/7zip/UI/Far/ProgressBox.h (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
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