#pragma once class ProgressEvent { private: ProgressEvent() {} int _current = 0; int _max = 60; double _now = 0; double _total = 0; double _speed = 0; long _status_code = 0; public: ProgressEvent(const ProgressEvent&) = delete; ProgressEvent& operator=(const ProgressEvent&) = delete; ProgressEvent(ProgressEvent&&) = delete; ProgressEvent& operator=(ProgressEvent&&) = delete; static auto& instance() { static ProgressEvent event; return event; } void reset() { _current = 0; _max = 60; _now = 0; _total = 0; _speed = 0; _status_code = 0; } inline void setTotalSteps(int steps) { _max = steps; } inline void setTotalCount(double total) { _total = total; } inline void setSpeed(double speed) { _speed = speed; } inline void setStep(int step) { _current = step; } inline void setStatusCode(long status_code) { _status_code = status_code; } inline void incrementStep(int increment) { _current += increment; } inline void setNow(double now) { _now = now; } inline int getStep() { return _current; } inline double getNow() { return _now; } inline bool finished() { return (_current == _max); } inline int getMax() { return _max; } inline double getTotal() { return _total; } inline double getSpeed() { return _speed; } inline double getStatusCode() { return _status_code; } };