]>
git.saurik.com Git - apt.git/blob - apt-pkg/contrib/progress.h
1 // -*- mode: cpp; mode: fold -*-
3 // $Id: progress.h,v 1.6 2001/05/07 05:06:52 jgg Exp $
4 /* ######################################################################
6 OpProgress - Operation Progress
8 This class allows lengthy operations to communicate their progress
9 to the GUI. The progress model is simple and is not designed to handle
10 the complex case of the multi-activity aquire class.
12 The model is based on the concept of an overall operation consisting
13 of a series of small sub operations. Each sub operation has it's own
14 completion status and the overall operation has it's completion status.
15 The units of the two are not mixed and are completely independent.
17 The UI is expected to subclass this to provide the visuals to the user.
19 ##################################################################### */
21 #ifndef PKGLIB_PROGRESS_H
22 #define PKGLIB_PROGRESS_H
33 unsigned long Current
;
36 unsigned long SubTotal
;
39 // Change reduction code
40 struct timeval LastTime
;
52 bool CheckChange(float Interval
= 0.7);
53 virtual void Update() {};
57 void Progress(unsigned long Current
);
58 void SubProgress(unsigned long SubTotal
, const string
&Op
= "", float const Percent
= -1);
59 void OverallProgress(unsigned long Current
,unsigned long Total
,
60 unsigned long Size
,const string
&Op
);
61 virtual void Done() {};
64 virtual ~OpProgress() {};
67 class OpTextProgress
: public OpProgress
74 unsigned long LastLen
;
75 virtual void Update();
76 void Write(const char *S
);
82 OpTextProgress(bool NoUpdate
= false) : NoUpdate(NoUpdate
),
83 NoDisplay(false), LastLen(0) {};
84 OpTextProgress(Configuration
&Config
);
85 virtual ~OpTextProgress() {Done();};