diff --git a/include/aoclocklabel.h b/include/aoclocklabel.h new file mode 100644 index 0000000..518cae7 --- /dev/null +++ b/include/aoclocklabel.h @@ -0,0 +1,29 @@ +#ifndef AOCLOCKLABEL_H +#define AOCLOCKLABEL_H + +#include +#include +#include +#include + +class AOClockLabel : public QLabel { + Q_OBJECT + +public: + AOClockLabel(QWidget *parent); + void start(); + void start(QTime p_time); + void pause(); + void resume(); + void stop(); + +protected: + void timerEvent(QTimerEvent *event) override; + +private: + QBasicTimer timer; + QTime starting_time; + QTime target_time; +}; + +#endif // AOCLOCKLABEL_H diff --git a/src/aoclocklabel.cpp b/src/aoclocklabel.cpp new file mode 100644 index 0000000..fad21f4 --- /dev/null +++ b/src/aoclocklabel.cpp @@ -0,0 +1,35 @@ +#include "aoclocklabel.h" + +AOClockLabel::AOClockLabel(QWidget *parent) : QLabel(parent) {} + +void AOClockLabel::start() +{ + this->resume(); +} + +void AOClockLabel::start(QTime p_time) +{ + QTime time = QTime::currentTime(); + if (p_time > time) + { + target_time = p_time; + starting_time = time; + timer.start(100, this); + } +} + +void AOClockLabel::pause() {} + +void AOClockLabel::resume() {} + +void AOClockLabel::stop() {} + +void AOClockLabel::timerEvent(QTimerEvent *event) +{ + if (event->timerId() == timer.timerId()) { + QTime elapsed = QTime(0,0).addSecs(starting_time.secsTo(starting_time)); + this->setText(elapsed.toString("hh:mm:ss.zzz")); + } else { + QWidget::timerEvent(event); + } +}