]> git.saurik.com Git - apt.git/blame - apt-pkg/contrib/progress.h
More progress updates
[apt.git] / apt-pkg / contrib / progress.h
CommitLineData
404ec98e
AL
1// -*- mode: cpp; mode: fold -*-
2// Description /*{{{*/
8ce4327b 3// $Id: progress.h,v 1.3 1998/08/26 04:52:29 jgg Exp $
404ec98e
AL
4/* ######################################################################
5
6 OpProgress - Operation Progress
7
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.
11
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.
16
17 The UI is expected to subclass this to provide the visuals to the user.
18
19 ##################################################################### */
20 /*}}}*/
21// Header section: pkglib
22#ifndef PKGLIB_PROGRESS_H
23#define PKGLIB_PROGRESS_H
24
25#ifdef __GNUG__
26#pragma interface "apt-pkg/progress.h"
27#endif
28
29#include <string>
30#include <sys/time.h>
31
32class OpProgress
33{
34 unsigned long Current;
35 unsigned long Total;
36 unsigned long Size;
37 unsigned long SubTotal;
38 float LastPercent;
39
40 // Change reduction code
41 struct timeval LastTime;
42 string LastOp;
1a7c9eba 43 string LastSubOp;
404ec98e
AL
44
45 protected:
46
47 string Op;
48 string SubOp;
49 float Percent;
50
51 bool MajorChange;
52
53 bool CheckChange(float Interval = 0.7);
54 virtual void Update() {};
55
56 public:
57
58 void Progress(unsigned long Current);
8ce4327b 59 void SubProgress(unsigned long SubTotal);
404ec98e
AL
60 void SubProgress(unsigned long SubTotal,string Op);
61 void OverallProgress(unsigned long Current,unsigned long Total,
62 unsigned long Size,string Op);
1a7c9eba
AL
63 virtual void Done() {};
64
404ec98e
AL
65 OpProgress();
66 virtual ~OpProgress() {};
67};
68
69class OpTextProgress : public OpProgress
70{
71 protected:
72
73 string OldOp;
74 bool NoUpdate;
75 unsigned long LastLen;
76 virtual void Update();
77 void Write(const char *S);
78
79 public:
80
1a7c9eba 81 virtual void Done();
404ec98e
AL
82
83 OpTextProgress(bool NoUpdate = false) : NoUpdate(NoUpdate), LastLen(0) {};
84 virtual ~OpTextProgress() {Done();};
85};
86
87#endif