/*! * * Copyright (c) 2021-2024 Diality Inc. - All Rights Reserved. * \copyright * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * \file VDateTime.h * \author (last) Vy * \date (last) 16-Aug-2023 * \author (original) Behrouz NematiPour * \date (original) 16-Apr-2021 * */ #pragma once // Qt #include #include #include // Project #include "main.h" // Doxygen : do not remove #include "VAdjustmentResponseBase.h" #include "MAdjustHDDateTimeResponse.h" #include "MAdjustDGDateTimeResponse.h" #include "MHDRTCEpochData.h" // forward declarations class tst_views; namespace View { /*! * \brief The VDateTime class * \details View for handling the date and time * */ class VDateTime : public QObject { Q_OBJECT // friends friend class ::tst_views; public: enum DateTimeSetStatus { NOT_SET = -1, FAILED , // 0 == false == FAILED SUCCEED , // 1 == true == SUCCEED }; Q_ENUM(DateTimeSetStatus) enum GreetingRanges { eMorningMin = 500, // 5:00 AM eMorningMax = 1200, // 12:00 PM eAfternoonMin = 1200, // 12:00 PM eAfternoonMax = 1800, // 18:00 PM }; protected: void timerEvent(QTimerEvent *event) override; private: QDateTime _currentDateTime ; int _timerInterval = 1000; // ms QProcess _process ; QString _updateFormat = "yyyy-MM-dd HH:mm:ss"; // format only used for changing system date/ time DateTimeSetStatus _acceptHD = NOT_SET; DateTimeSetStatus _acceptDG = NOT_SET; DateTimeSetStatus _acceptUI = NOT_SET; quint8 _reasonHD = 0; quint8 _reasonDG = 0; quint8 _reasonUI = 0; void dateTimeHD(quint32 epoch); void dateTimeDG(quint32 epoch); void dateTimeUI(const QString &vDateTime, const bool &vNTP ); QString status(DateTimeSetStatus vStatus, quint8 vReason); void updateStatus(); TRIGGER (QString, year , "0000") TRIGGER (QString, month , "00" ) TRIGGER (QString, day , "00" ) TRIGGER (QString, hour , "00" ) TRIGGER (QString, minute , "00" ) TRIGGER (QString, second , "00" ) TRIGGER (bool , ntp , false ) PROPERTY(QString, status , "" ) PROPERTY(QString, current , "" ) PROPERTY(QString, greeting , "" ) PROPERTY(QString, time , "" ) PROPERTY(QString, date , "" ) PROPERTY(QString, timeFormat, "" ) PROPERTY(QString, dateFormat, "" ) PROPERTY(QString, timezone , "" ) VIEW_DEC_CLASS(VDateTime) VIEW_DEC_SLOT (AdjustHDDateTimeResponseData) VIEW_DEC_SLOT (AdjustDGDateTimeResponseData) VIEW_DEC_SLOT (HDRTCEpochData) void greeting(quint16 vMilitaryTime); private slots: void onSetDateUIFinished(const int &vExitCode); public slots: void doInit (); void doConfirm (const QString &vYear , const QString &vMonth , const QString &vDay , const QString &vHour , const QString &vMinute, const bool &vNTP ); void onSetDateUIErrored(QProcess::ProcessError error); signals: void didAdjustment(const AdjustHDDateTimeRequestData); void didAdjustment(const AdjustDGDateTimeRequestData); }; }