libzypp  17.36.7
progressobserveradaptor.cc
Go to the documentation of this file.
1 /*---------------------------------------------------------------------\
2 | ____ _ __ __ ___ |
3 | |__ / \ / / . \ . \ |
4 | / / \ V /| _/ _/ |
5 | / /__ | | | | | | |
6 | /_____||_| |_| |_| |
7 | |
8 \---------------------------------------------------------------------*/
9 
11 
12 namespace 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 
33  : _report(report)
34  {
35  init();
36  }
40  : _fnc(fnc), _report(report)
41  {
42  init();
43  }
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
function< bool(const ProgressData &)> ReceiverFnc
Most simple version of progress reporting The percentage in most cases.
Definition: progressdata.h:140
zypp::ProgressData::ReceiverFnc _fnc
SignalProxy< void(ProgressObserver &sender, const std::string &str)> sigLabelChanged()
zypp::callback::SendReport< zypp::ProgressReport > & _report
Maintain [min,max] and counter (value) for progress counting.
Definition: progressdata.h:131
SignalProxy< void(ProgressObserver &sender)> sigStarted()
SignalProxy< void(ProgressObserver &sender, FinishResult result)> sigFinished()
SignalProxy< void(ProgressObserver &sender, double progress)> sigProgressChanged()
ProgressObserverAdaptor(zypp::callback::SendReport< zypp::ProgressReport > &report)
void name(const std::string &name_r)
Set counter name.
Definition: progressdata.h:225