diff --git a/core/include/Time/TimeController.h b/core/include/Time/TimeController.h new file mode 100644 index 0000000..ecb82d2 --- /dev/null +++ b/core/include/Time/TimeController.h @@ -0,0 +1,37 @@ +#ifndef SCIQLOP_TIMECONTROLLER_H +#define SCIQLOP_TIMECONTROLLER_H + +#include + +#include +#include + +#include + + +Q_DECLARE_LOGGING_CATEGORY(LOG_TimeController) + +/** + * @brief The TimeController class aims to handle the Time parameters notification in SciQlop. + */ +class TimeController : public QObject { + Q_OBJECT +public: + explicit TimeController(QObject *parent = 0); + + SqpDateTime dateTime() const noexcept; + +signals: + /// Signal emitted to notify that time parameters has beed updated + void timeUpdated(SqpDateTime time); + +public slots: + /// Slot called when a new dateTime has been defined. Call timeUpdated signal + void onTimeToUpdate(SqpDateTime dateTime); + +private: + class TimeControllerPrivate; + spimpl::unique_impl_ptr impl; +}; + +#endif // SCIQLOP_TIMECONTROLLER_H diff --git a/core/src/Time/TimeController.cpp b/core/src/Time/TimeController.cpp new file mode 100644 index 0000000..92b2e13 --- /dev/null +++ b/core/src/Time/TimeController.cpp @@ -0,0 +1,26 @@ +#include "Time/TimeController.h" + +Q_LOGGING_CATEGORY(LOG_TimeController, "TimeController") + +struct TimeController::TimeControllerPrivate { + + SqpDateTime m_DateTime; +}; + +TimeController::TimeController(QObject *parent) + : QObject{parent}, impl{spimpl::make_unique_impl()} +{ + qCDebug(LOG_TimeController()) << tr("TimeController construction"); +} + +SqpDateTime TimeController::dateTime() const noexcept +{ + return impl->m_DateTime; +} + +void TimeController::onTimeToUpdate(SqpDateTime dateTime) +{ + impl->m_DateTime = dateTime; + + emit timeUpdated(dateTime); +}