Index: sources/view/settings/VDateTime.cpp =================================================================== diff -u -r80b5e8f1ebb90c03c37d90d90cd2da3bd95d6803 -rff9c1810af33c01951d0639a48e9f6eb7152fa15 --- sources/view/settings/VDateTime.cpp (.../VDateTime.cpp) (revision 80b5e8f1ebb90c03c37d90d90cd2da3bd95d6803) +++ sources/view/settings/VDateTime.cpp (.../VDateTime.cpp) (revision ff9c1810af33c01951d0639a48e9f6eb7152fa15) @@ -30,6 +30,7 @@ ACTION_VIEW_CONNECTION(AdjustHDDateTimeResponseData); ACTION_VIEW_CONNECTION(AdjustDGDateTimeResponseData); + ACTION_VIEW_CONNECTION(HDRTCEpochData); ADJUST_VIEW_CONNECTION( AdjustHDDateTimeRequestData); ADJUST_VIEW_CONNECTION( AdjustDGDateTimeRequestData); @@ -75,32 +76,26 @@ day ( vDay ); hour ( vHour ); minute ( vMinute ); - quint32 epoch = - QDateTime( - QDate(_year .toInt() , - _month .toInt() , - _day .toInt()), - QTime(_hour .toInt() , - _minute .toInt()) - ).toSecsSinceEpoch(); - // the accepted format of the Linux data command: - // example: 2021-03-16 16:24:00 - QString mDateTime = QString("%1-%2-%3 %4:%5:%6") - .arg(_year ) - .arg(_month ) - .arg(_day ) - .arg(_hour ) - .arg(_minute) - .arg(_second); + const QDateTime currentDateTimeLocal ( QDate(_year .toInt() , + _month .toInt() , + _day .toInt()), + QTime(_hour .toInt() , + _minute .toInt())); + const QString dateTimeLocalStr = currentDateTimeLocal.toString(_Settings.getDatetimeFormat()); - LOG_DEBUG(tr("SetDateTime %1").arg(mDateTime)); + // Get the current UTC datetime + QDateTime currentDateTimeUTC(currentDateTimeLocal); + currentDateTimeUTC.setTimeSpec(Qt::UTC); + const quint32 epochUTC_sec = currentDateTimeUTC.toSecsSinceEpoch(); + LOG_DEBUG(tr("SetDateTime %1").arg(dateTimeLocalStr)); + status("Setting date and time ..."); - dateTimeUI(mDateTime); - dateTimeHD(epoch ); - dateTimeDG(epoch ); + dateTimeUI(dateTimeLocalStr); + dateTimeHD(epochUTC_sec ); + dateTimeDG(epochUTC_sec ); } /*! @@ -247,3 +242,29 @@ quint16 military = _currentDateTime.time().hour() * 100 + _currentDateTime.time().minute(); greeting(military); } + +/*! + * + * \brief VHDPOSTData::onActionReceive + * \details received response model data handler + * \param vData - model data + */ +void VDateTime::onActionReceive(const HDRTCEpochData &vData) +{ + // Doing a single update of the HD-UI RTC sync on start-up + static bool _hasDoneHDSyncRTC = false; + if ( !_hasDoneHDSyncRTC ) { + QDateTime hdRTCTime; + hdRTCTime.setSecsSinceEpoch(vData.mEpoch); + hdRTCTime.setTimeSpec(Qt::UTC); + + QDateTime localDateTime = hdRTCTime.toLocalTime(); + + QString newDateTimeString = localDateTime.toString(_Settings.getDatetimeFormat()); + dateTimeUI(newDateTimeString); + + //DEBUG: qDebug() << "Sync HD-UI RTC | HD Epoch: " << vData.mEpoch << " | HD datetime: " << hdRTCTime.toString(_Settings.getDatetimeFormat()) <<" | datetime : " << newDateTimeString; + + _hasDoneHDSyncRTC = true; // indicate HD-UI RTC sync'd + } +}