libzypp 17.37.17
progressobserveradaptor.cc
Go to the documentation of this file.
1/*---------------------------------------------------------------------\
2| ____ _ __ __ ___ |
3| |__ / \ / / . \ . \ |
4| / / \ V /| _/ _/ |
5| / /__ | | | | | | |
6| /_____||_| |_| |_| |
7| |
8\---------------------------------------------------------------------*/
9
11
12namespace zyppng {
13
15 {
16 _observer = ProgressObserver::create();
17 _observer->connectFunc(
19 [this](auto &obs) { update(); }, *_observer);
20 _observer->connectFunc(
22 [this](auto &obs, const auto &) { if(!_first) update(); }, *_observer);
23 _observer->connectFunc(
25 [this](auto &obs, const auto &p) { update(); }, *_observer);
26 _observer->connectFunc(
28 [this](auto &obs, const auto &) { update(true); }, *_observer);
29 }
30
44 ProgressObserverRef ProgressObserverAdaptor::observer() { return _observer; }
46 zypp::ProgressData progress(0, 100, _observer->progress());
47 progress.name(_observer->label());
48
49 if (_first) {
50 _report->start(progress);
51 _first = false;
52 }
53
54 bool value = _report->progress(progress);
55 if (_fnc)
56 value &= _fnc(progress);
57
58 if (fin) {
59 _report->finish(progress);
60 }
61 return value;
62 }
63} // namespace zyppng
Maintain [min,max] and counter (value) for progress counting.
void name(const std::string &name_r)
Set counter name.
function< bool(const ProgressData &)> ReceiverFnc
Most simple version of progress reporting The percentage in most cases.
SignalProxy< void(ProgressObserver &sender)> sigStarted()
SignalProxy< void(ProgressObserver &sender, FinishResult result)> sigFinished()
SignalProxy< void(ProgressObserver &sender, double progress)> sigProgressChanged()
SignalProxy< void(ProgressObserver &sender, const std::string &str)> sigLabelChanged()
zypp::callback::SendReport< zypp::ProgressReport > & _report
zypp::ProgressData::ReceiverFnc _fnc
ProgressObserverAdaptor(zypp::callback::SendReport< zypp::ProgressReport > &report)