X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/1a7c9eba99a9521a7722be37d6bafe5fa4936630..2c206aa41634aa41833463c41bae337e6778e226:/apt-pkg/contrib/progress.cc?ds=sidebyside diff --git a/apt-pkg/contrib/progress.cc b/apt-pkg/contrib/progress.cc index 4be7b87b9..0f2218f3c 100644 --- a/apt-pkg/contrib/progress.cc +++ b/apt-pkg/contrib/progress.cc @@ -1,6 +1,6 @@ // -*- mode: cpp; mode: fold -*- // Description /*{{{*/ -// $Id: progress.cc,v 1.5 1998/08/23 03:52:22 jgg Exp $ +// $Id: progress.cc,v 1.8 1998/10/02 04:39:53 jgg Exp $ /* ###################################################################### OpProgress - Operation Progress @@ -13,6 +13,7 @@ #endif #include #include +#include #include /*}}}*/ @@ -27,7 +28,9 @@ OpProgress::OpProgress() : Current(0), Total(0), Size(0), SubTotal(1), /*}}}*/ // OpProgress::Progress - Sub progress with no state change /*{{{*/ // --------------------------------------------------------------------- -/* This assumes that Size is the same as the current sub size */ +/* Current is the Base Overall progress in units of Total. Cur is the sub + progress in units of SubTotal. Size is a scaling factor that says what + percent of Total SubTotal is. */ void OpProgress::Progress(unsigned long Cur) { Percent = (Current + Cur/((float)SubTotal)*Size)*100.0/Total; @@ -60,6 +63,16 @@ void OpProgress::SubProgress(unsigned long SubTotal,string Op) Update(); } /*}}}*/ +// OpProgress::SubProgress - Set the sub progress state /*{{{*/ +// --------------------------------------------------------------------- +/* */ +void OpProgress::SubProgress(unsigned long SubTotal) +{ + this->SubTotal = SubTotal; + Percent = Current*100.0/Total; + Update(); +} + /*}}}*/ // OpProgress::CheckChange - See if the display should be updated /*{{{*/ // --------------------------------------------------------------------- /* Progress calls are made so frequently that if every one resulted in @@ -96,6 +109,18 @@ bool OpProgress::CheckChange(float Interval) return true; } /*}}}*/ +// OpTextProgress::OpTextProgress - Constructor /*{{{*/ +// --------------------------------------------------------------------- +/* */ +OpTextProgress::OpTextProgress(Configuration &Config) : + NoUpdate(false), NoDisplay(false), LastLen(0) +{ + if (Config.FindI("quiet",0) >= 1) + NoUpdate = true; + if (Config.FindI("quiet",0) >= 2) + NoDisplay = true; +}; + /*}}}*/ // OpTextProgress::Done - Clean up the display /*{{{*/ // --------------------------------------------------------------------- /* */ @@ -111,7 +136,13 @@ void OpTextProgress::Done() Write(S); cout << endl; OldOp = string(); - } + } + + if (NoUpdate == true && NoDisplay == false && OldOp.empty() == false) + { + OldOp = string(); + cout << endl; + } } /*}}}*/ // OpTextProgress::Update - Simple text spinner /*{{{*/ @@ -127,7 +158,14 @@ void OpTextProgress::Update() { if (MajorChange == false) return; - cout << Op << endl; + if (NoDisplay == false) + { + if (OldOp.empty() == false) + cout << endl; + OldOp = "a"; + cout << Op << "..." << flush; + } + return; }