9 #ifndef ZYPPNG_PROGRESSOBSERVER_H 10 #define ZYPPNG_PROGRESSOBSERVER_H 12 #include <zypp-core/zyppng/base/Base> 13 #include <zypp-core/zyppng/base/Signals> 14 #include <zypp-core/zyppng/pipelines/Expected> 25 class ProgressObserverPrivate;
42 void inc (
double inc = 1.0,
const std::optional<std::string> &newLabel = {} );
47 const std::vector<zyppng::ProgressObserverRef> &
children();
50 const std::string &
label ()
const;
52 void registerSubTask (
const ProgressObserverRef& child,
float weight = 1.0 );
75 template <auto mode = progress_helper_mode::Increase>
78 progress_helper( ProgressObserverRef &&progressObserver, std::optional<std::string> &&newStr,
double inc )
108 inline auto incProgress( ProgressObserverRef progressObserver,
double progrIncrease = 1.0, std::optional<std::string> newStr = {} ) {
109 return detail::progress_helper<detail::progress_helper_mode::Increase>( std::move(progressObserver), std::move(newStr), progrIncrease );
116 inline auto setProgress( ProgressObserverRef progressObserver,
double progrValue, std::optional<std::string> newStr = {} ) {
117 return detail::progress_helper<detail::progress_helper_mode::Set>( std::move(progressObserver), std::move(newStr), progrValue );
123 inline auto setProgressLabel( ProgressObserverRef progressObserver, std::string &&newStr ) {
132 return [ progressObserver = std::move(progressObserver) ](
auto &&val ) {
133 if ( progressObserver ) progressObserver->setFinished ();
134 return std::forward<decltype(val)>(val);
143 #endif // ZYPPNG_PROGRESSOBSERVER_H
SignalProxy< void(ProgressObserver &sender)> sigFinished()
const std::string & label() const
void setBaseSteps(int steps)
const std::vector< zyppng::ProgressObserverRef > & children()
function< bool(const ProgressData &)> ReceiverFnc
Most simple version of progress reporting The percentage in most cases.
ZYPP_DECL_PRIVATE_CONSTR_ARGS(ProgressObserver, const std::string &label=std::string(), int steps=100)
#define ZYPP_ADD_CREATE_FUNC(Class)
auto setProgressLabel(ProgressObserverRef progressObserver, std::string &&newStr)
SignalProxy< void(ProgressObserver &sender, double current) > sigValueChanged()
void setLabel(const std::string &label)
zypp::ProgressData::ReceiverFnc makeProgressDataReceiver()
ZYPP_FWD_DECL_TYPE_WITH_REFS(Context)
SignalProxy< void(ProgressObserver &sender, const std::string &str)> sigLabelChanged()
void setCurrent(double curr)
ProgressObserverRef _progressObserver
#define ZYPP_DECLARE_PRIVATE(Class)
SignalProxy< void(ProgressObserver &sender, double steps)> sigStepsChanged()
auto setProgress(ProgressObserverRef progressObserver, double progrValue, std::optional< std::string > newStr={})
progress_helper(ProgressObserverRef &&progressObserver, std::optional< std::string > &&newStr, double inc)
SignalProxy< void(ProgressObserver &sender, ProgressObserverRef child)> sigNewSubprogress()
SignalProxy< void(ProgressObserver &sender, double progress)> sigProgressChanged()
auto finishProgress(ProgressObserverRef progressObserver)
void inc(double inc=1.0, const std::optional< std::string > &newLabel={})
void registerSubTask(const ProgressObserverRef &child, float weight=1.0)
auto incProgress(ProgressObserverRef progressObserver, double progrIncrease=1.0, std::optional< std::string > newStr={})
std::optional< std::string > _newString