Files
qt6-migration-pipeline/Lts/Common/LtsWidgets/lts_msec_date_time_edit.cpp
T

115 lines
3.3 KiB
C++
Executable File

#include "lts_msec_date_time_edit.h"
namespace LtsWidgets
{
LtsMSecDateTimeEdit::LtsMSecDateTimeEdit(QWidget *parent)
: QDateTimeEdit(parent)
{
setWrapping(true);
setDisplayFormat(QLatin1String("dd.MM.yy HH:mm:ss.zzz"));
connect(this, &LtsMSecDateTimeEdit::editingFinished, this, &LtsMSecDateTimeEdit::onEditingFinished);
}
LtsMSecDateTimeEdit::LtsMSecDateTimeEdit(const QDateTime &dt, QWidget *parent)
: QDateTimeEdit(dt, parent)
{
setWrapping(true);
setDisplayFormat(QLatin1String("dd.MM.yy HH:mm:ss.zzz"));
connect(this, &LtsMSecDateTimeEdit::editingFinished, this, &LtsMSecDateTimeEdit::onEditingFinished);
}
LtsMSecDateTimeEdit::LtsMSecDateTimeEdit(const QDate &d, QWidget *parent)
: QDateTimeEdit(d, parent)
{
setWrapping(true);
setDisplayFormat(QLatin1String("dd.MM.yy HH:mm:ss.zzz"));
connect(this, &LtsMSecDateTimeEdit::editingFinished, this, &LtsMSecDateTimeEdit::onEditingFinished);
}
LtsMSecDateTimeEdit::LtsMSecDateTimeEdit(const QTime &t, QWidget *parent)
: QDateTimeEdit(t, parent)
{
setWrapping(true);
setDisplayFormat(QLatin1String("dd.MM.yy HH:mm:ss.zzz"));
connect(this, &LtsMSecDateTimeEdit::editingFinished, this, &LtsMSecDateTimeEdit::onEditingFinished);
}
void LtsMSecDateTimeEdit::stepBy(int steps)
{
switch (currentSection()) {
case QDateTimeEdit::MonthSection:
QDateTimeEdit::setDateTime(dateTime().addMonths(steps));
break;
case QDateTimeEdit::YearSection:
QDateTimeEdit::setDateTime(dateTime().addYears(steps));
break;
case QDateTimeEdit::DaySection:
QDateTimeEdit::setDateTime(dateTime().addDays(steps));
break;
case QDateTimeEdit::HourSection:
QDateTimeEdit::setDateTime(dateTime().addSecs(steps * 3600));
break;
case QDateTimeEdit::MinuteSection:
QDateTimeEdit::setDateTime(dateTime().addSecs(steps * 60));
break;
case QDateTimeEdit::SecondSection:
QDateTimeEdit::setDateTime(dateTime().addSecs(steps));
break;
case QDateTimeEdit::MSecSection:
QDateTimeEdit::setDateTime(dateTime().addMSecs(steps * m_msecStepSize));
break;
case QDateTimeEdit::NoSection:
case QDateTimeEdit::AmPmSection:
case QDateTimeEdit::TimeSections_Mask:
case QDateTimeEdit::DateSections_Mask:
default:
break;
}
}
qint64 LtsMSecDateTimeEdit::msecsSinceEpoch() const
{
return dateTime().toMSecsSinceEpoch() - (m_timezoneHoursOffset * 3600 * 1000);
}
void LtsMSecDateTimeEdit::setTimezoneHoursOffset(int timezoneHoursOffset)
{
qint64 b4 = msecsSinceEpoch();
m_timezoneHoursOffset = timezoneHoursOffset;
setMsecsSinceEpoch(b4);
}
void LtsMSecDateTimeEdit::setDateTime(const QDateTime &dateTime)
{
setMsecsSinceEpoch(QDateTime::fromMSecsSinceEpoch(dateTime.toMSecsSinceEpoch(), Qt::TimeSpec::OffsetFromUTC, m_timezoneHoursOffset * 3600).toMSecsSinceEpoch());
}
void LtsMSecDateTimeEdit::setMsecsSinceEpoch(qint64 msecs)
{
QDateTimeEdit::setDateTime(QDateTime::fromMSecsSinceEpoch(msecs, Qt::TimeSpec::OffsetFromUTC, m_timezoneHoursOffset * 3600));
}
int LtsMSecDateTimeEdit::msecStepSize() const
{
return m_msecStepSize;
}
void LtsMSecDateTimeEdit::setMsecStepSize(int msecStepSize)
{
m_msecStepSize = msecStepSize;
}
void LtsMSecDateTimeEdit::onEditingFinished()
{
qint64 val = msecsSinceEpoch();
if (val % m_msecStepSize == 0)
return;
val = (val + (m_msecStepSize/2) ) / m_msecStepSize * m_msecStepSize;
setMsecsSinceEpoch(val);
}
}