24 lines
689 B
C++
24 lines
689 B
C++
#pragma once
|
|
#include <QtGlobal>
|
|
|
|
// 界面负责取得当前时间,模型只负责计算;测试可传入确定的毫秒数。
|
|
class Countdown {
|
|
public:
|
|
enum class State { Ready, Running, Paused, Finished };
|
|
explicit Countdown(qint64 durationMs = 300000);
|
|
bool setDuration(qint64 durationMs);
|
|
void start(qint64 nowMs);
|
|
void pause(qint64 nowMs);
|
|
void reset();
|
|
void update(qint64 nowMs);
|
|
qint64 remaining(qint64 nowMs) const;
|
|
qint64 duration() const { return m_duration; }
|
|
State state() const { return m_state; }
|
|
private:
|
|
qint64 m_duration;
|
|
qint64 m_remainingAtStart;
|
|
qint64 m_segmentStarted = 0;
|
|
State m_state = State::Ready;
|
|
};
|
|
|