15 void setLabel(
const std::string &label );
44 other._signalConns.clear ();
56 other._signalConns.clear ();
82 if ( _ignoreChildSigs )
88 for (
auto i = 0;
i < _children.size ();
i++ ) {
103 _sigStepsChanged.emit( *
z_func(), _counterSteps );
106 _sigProgressChanged.emit( *
z_func(),
z_func()->progress() );
112 auto i = std::find_if(
_children.begin (),
_children.end (), [&](
const auto &
elem ) { return ( &child == elem.get() ); } );
114 WAR <<
"Unknown child sent a finished message, ignoring" << std::endl;
127 d->_baseSteps = steps;
142 return d_func()->_counterSteps;
150 d->_ignoreChildSigs =
true;
151 std::for_each(
d->_children.begin (),
d->_children.end(), [](
auto &
child ) { child->reset(); });
163 return d_func()->_counterValue;
168 return d_func()->_children;
178 return d_func()->_sigLabelChanged;
183 return d_func()->_sigStepsChanged;
188 return d_func()->_sigValueChanged;
193 return d_func()->_sigProgressChanged;
198 return d_func()->_sigFinished;
203 return d_func()->_sigNewSubprogress;
209 if (
d->_baseSteps ==
steps )
226 auto set = std::max<double>(0, std::min<double>(
curr,
d->_baseSteps ) );
227 if ( set ==
d->_baseValue )
237 return d_func()->_baseSteps;
245 while (
d->_children.size() )
246 d->_children.front()->setFinished();
249 d->_sigFinished.emit( *
this );
261 auto i = std::find(
d->_children.begin(),
d->_children.end(),
child );
263 if (
i !=
d->_children.end() ) {
264 const auto index = std::distance (
d->_children.begin (),
i );
267 d->_children.push_back(
child );
268 d->_childInfo.push_back( {
275 d->_sigNewSubprogress.emit( *
this,
child );
292 auto instance =
sThis.get();
293 instance->setBaseSteps ( data.max () - data.min () );
294 instance->setCurrent ( data.val () - data.min () );
295 instance->setLabel ( data.name () );
296 if ( data.finalReport() )
297 instance->setFinished();
Reference counted access to a Tp object calling a custom Dispose function when the last AutoDispose h...
Assign a vaiable a certain value when going out of scope.
Maintain [min,max] and counter (value) for progress counting.
function< bool(const ProgressData &)> ReceiverFnc
Most simple version of progress reporting The percentage in most cases.
static auto connectFunc(typename internal::MemberFunction< SenderFunc >::ClassType &s, SenderFunc &&sFun, ReceiverFunc &&rFunc, const Tracker &...trackers)
static auto connect(typename internal::MemberFunction< SenderFunc >::ClassType &s, SenderFunc &&sFun, typename internal::MemberFunction< ReceiverFunc >::ClassType &recv, ReceiverFunc &&rFunc)
Signal< void(ProgressObserver &sender) _sigFinished)
void setLabel(const std::string &label)
void onChildFinished(ProgressObserver &child)
Signal< void(ProgressObserver &sender, const std::string &str) _sigLabelChanged)
Signal< void(ProgressObserver &sender, double steps) _sigValueChanged)
Signal< void(ProgressObserver &sender, double steps) _sigProgressChanged)
std::vector< ChildInfo > _childInfo
Signal< void(ProgressObserver &sender, double steps) _sigStepsChanged)
std::vector< ProgressObserverRef > _children
ProgressObserverPrivate(ProgressObserver &p)
ProgressObserverWeakRef _parent
Signal< void(ProgressObserver &sender, ProgressObserverRef child) _sigNewSubprogress)
void inc(double inc=1.0, const std::optional< std::string > &newLabel={})
SignalProxy< void(ProgressObserver &sender, double progress) sigProgressChanged)()
void setBaseSteps(int steps)
SignalProxy< void(ProgressObserver &sender, double current) sigValueChanged)()
SignalProxy< void(ProgressObserver &sender, const std::string &str) sigLabelChanged)()
const std::vector< zyppng::ProgressObserverRef > & children()
zypp::ProgressData::ReceiverFnc makeProgressDataReceiver()
const std::string & label() const
void setLabel(const std::string &label)
void setCurrent(double curr)
SignalProxy< void(ProgressObserver &sender) sigFinished)()
SignalProxy< void(ProgressObserver &sender, ProgressObserverRef child) sigNewSubprogress)()
SignalProxy< void(ProgressObserver &sender, double steps) sigStepsChanged)()
void registerSubTask(const ProgressObserverRef &child, float weight=1.0)
String related utilities and Regular expression matching.
ChildInfo(ChildInfo &&other) noexcept
ChildInfo(std::vector< connection > &&conns, float weight)
ChildInfo & operator=(ChildInfo &&other)
ChildInfo & operator=(const ChildInfo &)=delete
ChildInfo(const ChildInfo &other)=delete
std::vector< connection > _signalConns
#define ZYPP_IMPL_PRIVATE_CONSTR_ARGS(Class,...)
#define ZYPP_IMPL_PRIVATE(Class)
#define ZYPP_DECLARE_PUBLIC(Class)