QDateTimeEdit optimization

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2024-04-06 14:07:06 +03:00
parent 8a7f6ecc1a
commit 66e7f9491f

View file

@ -40,7 +40,7 @@ const int getTime_t(const QTime &value)
QDateTimeBox::QDateTimeBox(QWidget *parent) QDateTimeBox::QDateTimeBox(QWidget *parent)
: QSpinBox(parent) : QSpinBox(parent)
{ {
QDateTimeEdit* datetimeedit = qobject_cast<QDateTimeEdit*>(parent); const QDateTimeEdit* datetimeedit = qobject_cast<QDateTimeEdit*>(parent);
updateLocale(datetimeedit->locale()); updateLocale(datetimeedit->locale());
} }
@ -54,7 +54,7 @@ void QDateTimeBox::updateLocale(const QLocale &locale)
QValidator::State QDateTimeBox::validate(QString &input, int &pos) const QValidator::State QDateTimeBox::validate(QString &input, int &pos) const
{ {
QDateTimeEdit* datetimeedit = qobject_cast<QDateTimeEdit*>(parent()); const QDateTimeEdit* datetimeedit = qobject_cast<QDateTimeEdit*>(parent());
const QTime time = datetimeedit->locale().toTime(input, QLocale::ShortFormat); const QTime time = datetimeedit->locale().toTime(input, QLocale::ShortFormat);
if (!time.isValid()) { if (!time.isValid()) {
return QValidator::Invalid; return QValidator::Invalid;
@ -64,13 +64,13 @@ QValidator::State QDateTimeBox::validate(QString &input, int &pos) const
int QDateTimeBox::valueFromText(const QString &text) const int QDateTimeBox::valueFromText(const QString &text) const
{ {
QDateTimeEdit* datetimeedit = qobject_cast<QDateTimeEdit*>(parent()); const QDateTimeEdit* datetimeedit = qobject_cast<QDateTimeEdit*>(parent());
return getTime_t(datetimeedit->locale().toTime(text, QLocale::ShortFormat)); return getTime_t(datetimeedit->locale().toTime(text, QLocale::ShortFormat));
} }
QString QDateTimeBox::textFromValue(int value) const QString QDateTimeBox::textFromValue(int value) const
{ {
QDateTimeEdit* datetimeedit = qobject_cast<QDateTimeEdit*>(parent()); const QDateTimeEdit* datetimeedit = qobject_cast<QDateTimeEdit*>(parent());
return datetimeedit->locale().toString(getTime(value), QLocale::ShortFormat); return datetimeedit->locale().toString(getTime(value), QLocale::ShortFormat);
} }
@ -127,19 +127,15 @@ void QDateTimeEditPrivate::updateWidgets(const QDateTime &datetime)
{ {
Q_ASSERT(m_showdate || m_showtime); Q_ASSERT(m_showdate || m_showtime);
if (m_showdate) { if (m_showdate) {
const QDate mindate = minimumdate.date(); calendarwidget->setMinimumDate(minimumdate.date());
const QDate maxdate = maximumdate.date(); calendarwidget->setMaximumDate(maximumdate.date());
calendarwidget->setMinimumDate(mindate);
calendarwidget->setMaximumDate(maxdate);
m_datebutton->show(); m_datebutton->show();
} else { } else {
m_datebutton->hide(); m_datebutton->hide();
} }
if (m_showtime) { if (m_showtime) {
const QTime mintime = minimumdate.time(); m_timebox->setMinimum(getTime_t(minimumdate.time()));
const QTime maxtime = maximumdate.time(); m_timebox->setMaximum(getTime_t(maximumdate.time()));
m_timebox->setMinimum(getTime_t(mintime));
m_timebox->setMaximum(getTime_t(maxtime));
m_timebox->show(); m_timebox->show();
} else { } else {
m_timebox->hide(); m_timebox->hide();
@ -151,8 +147,7 @@ void QDateTimeEditPrivate::updateWidgets(const QDateTime &datetime)
updateButton(curdate); updateButton(curdate);
} }
if (m_showtime) { if (m_showtime) {
const QTime curtime = datetime.time(); m_timebox->setValue(getTime_t(datetime.time()));
m_timebox->setValue(getTime_t(curtime));
m_datebutton->setToolButtonStyle(Qt::ToolButtonIconOnly); m_datebutton->setToolButtonStyle(Qt::ToolButtonIconOnly);
} else { } else {
m_datebutton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); m_datebutton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
@ -190,9 +185,8 @@ void QDateTimeEditPrivate::setCalendar(QCalendarWidget *calendar)
QDateTime QDateTimeEditPrivate::currentDateTime() const QDateTime QDateTimeEditPrivate::currentDateTime() const
{ {
const QDate curdate = calendarwidget ? calendarwidget->selectedDate() : QDATETIMEEDIT_DATE_INITIAL;
return QDateTime( return QDateTime(
curdate, calendarwidget ? calendarwidget->selectedDate() : QDATETIMEEDIT_DATE_INITIAL,
getTime(m_timebox->value()) getTime(m_timebox->value())
); );
} }