// ************************************************************************** // // (C) Copyright 2009 Swiss SIMTEC AG // // ************************************************************************** // // $HeadURL$ // $LastChangedBy$ // $LastChangedDate$ // $LastChangedRevision$ // // ************************************************************************** // manual class headers #include "LogViewDateTimeEdit.hpp" #include #include "LogViewField.hpp" #include "LogViewTelegram.hpp" namespace N_LogView { // --------------------------------------------------------------- LogViewDateTimeEdit::LogViewDateTimeEdit(LogViewField* a_field, QWidget* a_parent, const bool a_readonly) : QDateTimeEdit(a_parent) , LogViewWidget(a_field, this, a_parent, a_readonly) { if (a_readonly) { setReadOnly(true); setAlignment(a_field->isRightAligned() ? Qt::AlignRight : Qt::AlignLeft); } // date-time-field qint64 unixTime = 0; if (a_field->hasContent()) { if (a_field->isMSecsField()) unixTime = a_field->value(0, true).toLongLong(); else unixTime = a_field->value(0, true).toInt() * 1000LL; } // take actual date and time if time is 0 if (0 == unixTime && !a_readonly) unixTime = ::time(nullptr) * 1000LL; //valueWidget = new QDateTimeEdit(dateTime); setDateTime(QDateTime::fromMSecsSinceEpoch(unixTime)); setDisplayFormat(QLatin1String("dd MMM yyyy hh:mm:ss")); setCalendarPopup(true); updateToolTip(QString::number(unixTime)); //setToolTip(a_field->getToolTipText()); // checkAndOvertakeContent(); connect(this, &LogViewDateTimeEdit::editingFinished, this, &LogViewDateTimeEdit::checkAndOvertakeContent); } // --------------------------------------------------------------- void LogViewDateTimeEdit::checkAndOvertakeContent() { updateToolTip(QString::number(dateTime().toMSecsSinceEpoch() / 1000)); } // --------------------------------------------------------------- // Writes the content into telegram. // Returns true if successful. // --------------------------------------------------------------- bool LogViewDateTimeEdit::saveContent(LogViewTelegram* a_telegram) { if (a_telegram->isJsonTelegram()) { a_telegram->setJsonValue(m_Field->jsonPath(), dateTime().toMSecsSinceEpoch()); } else { a_telegram->setNextFieldAsGpsTimeField(); // fixme: muss noch der feldname auf GPS Zeit geprüft werden? a_telegram->setUIntX(getSize(), dateTime().toMSecsSinceEpoch() / 1000); } return true; } } // namespace N_LogView