]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/install-progress.h
move install-progress.{cc,h} to apt-pkg
[apt.git] / apt-pkg / install-progress.h
diff --git a/apt-pkg/install-progress.h b/apt-pkg/install-progress.h
new file mode 100644 (file)
index 0000000..9c31eac
--- /dev/null
@@ -0,0 +1,137 @@
+#ifndef PKGLIB_IPROGRESS_H
+#define PKGLIB_IPROGRESS_H
+
+#include <string>
+#include <unistd.h>
+
+
+namespace APT {
+namespace Progress {
+
+ class PackageManager
+ {
+ private:
+    /** \brief dpointer placeholder */
+    void *d;
+
+ protected:
+    std::string progress_str;
+    float percentage;
+    int last_reported_progress;
+
+ public:
+    PackageManager() 
+       : percentage(0.0), last_reported_progress(-1) {};
+    virtual ~PackageManager() {};
+
+    virtual void Start() {};
+    virtual void Stop() {};
+
+    virtual pid_t fork() {return fork(); };
+
+    virtual void Pulse() {};
+    virtual long GetPulseInterval() {
+         return 500000;
+    };
+
+    virtual bool StatusChanged(std::string PackageName, 
+                               unsigned int StepsDone,
+                               unsigned int TotalSteps,
+                               std::string HumanReadableAction) ;
+    virtual void Error(std::string PackageName,                                
+                       unsigned int StepsDone,
+                       unsigned int TotalSteps,
+                       std::string ErrorMessage) {};
+    virtual void ConffilePrompt(std::string PackageName,
+                                unsigned int StepsDone,
+                                unsigned int TotalSteps,
+                                std::string ConfMessage) {};
+ };
+
+ class PackageManagerProgressFd : public PackageManager
+ {
+ protected:
+    int OutStatusFd;
+    int StepsDone;
+    int StepsTotal;
+    void WriteToStatusFd(std::string msg);
+
+ public:
+    PackageManagerProgressFd(int progress_fd);
+
+    virtual void Start();
+    virtual void Stop();
+
+    virtual bool StatusChanged(std::string PackageName, 
+                               unsigned int StepsDone,
+                               unsigned int TotalSteps,
+                               std::string HumanReadableAction);
+    virtual void Error(std::string PackageName,                                
+                       unsigned int StepsDone,
+                       unsigned int TotalSteps,
+                          std::string ErrorMessage);
+    virtual void ConffilePrompt(std::string PackageName,
+                                unsigned int StepsDone,
+                                unsigned int TotalSteps,
+                                   std::string ConfMessage);
+
+ };
+
+ class PackageManagerProgressDeb822Fd : public PackageManager
+ {
+ protected:
+    int OutStatusFd;
+    int StepsDone;
+    int StepsTotal;
+    void WriteToStatusFd(std::string msg);
+
+ public:
+    PackageManagerProgressDeb822Fd(int progress_fd);
+
+    virtual void Start();
+    virtual void Stop();
+
+    virtual bool StatusChanged(std::string PackageName, 
+                               unsigned int StepsDone,
+                               unsigned int TotalSteps,
+                               std::string HumanReadableAction);
+    virtual void Error(std::string PackageName,                                
+                       unsigned int StepsDone,
+                       unsigned int TotalSteps,
+                          std::string ErrorMessage);
+    virtual void ConffilePrompt(std::string PackageName,
+                                unsigned int StepsDone,
+                                unsigned int TotalSteps,
+                                   std::string ConfMessage);
+ };
+
+ class PackageManagerFancy : public PackageManager
+ {
+ protected:
+    int nr_terminal_rows;
+    void SetupTerminalScrollArea(int nr_rows);
+
+ public:
+    PackageManagerFancy();
+    virtual void Start();
+    virtual void Stop();
+    virtual bool StatusChanged(std::string PackageName, 
+                               unsigned int StepsDone,
+                               unsigned int TotalSteps,
+                               std::string HumanReadableAction);
+ };
+
+ class PackageManagerText : public PackageManager
+ {
+ public:
+    virtual bool StatusChanged(std::string PackageName, 
+                               unsigned int StepsDone,
+                               unsigned int TotalSteps,
+                               std::string HumanReadableAction);
+ };
+
+
+}; // namespace Progress
+}; // namespace APT
+
+#endif