3#include <QtCore/QEasingCurve>
4#include <QtQml/QQmlEngine>
6#include "qml_material/core.hpp"
11class CircularIndicatorUpdator :
public QObject {
15 Q_PROPERTY(
double startFraction READ startFraction NOTIFY updated FINAL)
16 Q_PROPERTY(
double endFraction READ endFraction NOTIFY updated FINAL)
17 Q_PROPERTY(
double rotation READ rotation NOTIFY updated FINAL)
18 Q_PROPERTY(
double progress READ progress WRITE update NOTIFY updated FINAL)
19 Q_PROPERTY(
double completeEndProgress READ completeEndProgress WRITE updateCompleteEndProgress
21 Q_PROPERTY(
double duration READ duration NOTIFY indeterminateAnimationTypeChanged FINAL)
22 Q_PROPERTY(
double completeEndDuration READ completeEndDuration NOTIFY
23 indeterminateAnimationTypeChanged FINAL)
25 IndeterminateAnimationType indeterminateAnimationType READ indeterminateAnimationType WRITE
26 setIndeterminateAnimationType NOTIFY indeterminateAnimationTypeChanged FINAL)
29 CircularIndicatorUpdator(QObject* parent =
nullptr);
31 enum class IndeterminateAnimationType
36 Q_ENUM(IndeterminateAnimationType)
38 auto startFraction() const noexcept ->
double;
39 auto endFraction() const noexcept ->
double;
40 auto rotation() const noexcept ->
double;
42 auto progress() const noexcept ->
double;
43 auto completeEndProgress() const noexcept ->
double;
44 auto duration() const noexcept ->
double;
45 auto completeEndDuration() const noexcept ->
double;
47 auto indeterminateAnimationType() const noexcept -> IndeterminateAnimationType;
48 void setIndeterminateAnimationType(IndeterminateAnimationType t);
50 void updateAdvance(
double progress) noexcept;
51 void updateRetreat(
double progress) noexcept;
53 Q_SLOT
void update(
double progress);
54 Q_SLOT
void updateCompleteEndProgress(
double progress);
55 Q_SIGNAL
void updated();
56 Q_SIGNAL
void indeterminateAnimationTypeChanged();
59 IndeterminateAnimationType m_type;
63 float m_start_fraction;
65 float m_rotation_degree;
67 float m_complete_end_progress;