1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
/*
SPDX-FileCopyrightText: 2014-2025 Laurent Montel <montel@kde.org>
SPDX-License-Identifier: GPL-2.0-or-later
*/
#include "eventdatetimewidget.h"
#include <KDateComboBox>
#include <KTimeComboBox>
#include <QHBoxLayout>
using namespace MessageViewer;
EventDateTimeWidget::EventDateTimeWidget(QWidget *parent)
: QWidget(parent)
, mDateEdit(new KDateComboBox(this))
, mTimeEdit(new KTimeComboBox(this))
{
auto mainLayout = new QHBoxLayout(this);
mainLayout->setSpacing(0);
mainLayout->setContentsMargins({});
mDateEdit->setObjectName(QLatin1StringView("eventdatecombobox"));
mainLayout->addWidget(mDateEdit);
mTimeEdit->setObjectName(QLatin1StringView("eventtimecombobox"));
mainLayout->addWidget(mTimeEdit);
const QDateTime currentDateTime = QDateTime::currentDateTime();
setDateTime(currentDateTime);
connect(mDateEdit, &KDateComboBox::dateChanged, this, &EventDateTimeWidget::slotDateTimeChanged);
connect(mTimeEdit, &KTimeComboBox::timeChanged, this, &EventDateTimeWidget::slotDateTimeChanged);
connect(mDateEdit, &KDateComboBox::dateEdited, this, &EventDateTimeWidget::slotDateTimeChanged);
connect(mTimeEdit, &KTimeComboBox::timeEdited, this, &EventDateTimeWidget::slotDateTimeChanged);
}
EventDateTimeWidget::~EventDateTimeWidget() = default;
void EventDateTimeWidget::slotDateTimeChanged()
{
Q_EMIT dateTimeChanged(dateTime());
}
void EventDateTimeWidget::setMinimumDateTime(const QDateTime &dtime)
{
if (dateTime() != dtime) {
mDateEdit->setMinimumDate(dtime.date());
mTimeEdit->setMinimumTime(dtime.time());
}
}
void EventDateTimeWidget::setDateTime(const QDateTime &dTime)
{
if (dateTime() != dTime) {
blockSignals(true);
mDateEdit->setDate(dTime.date());
mTimeEdit->setTime(dTime.time());
blockSignals(false);
slotDateTimeChanged();
}
}
QDateTime EventDateTimeWidget::dateTime() const
{
QDateTime dateTime = QDateTime::currentDateTime();
dateTime.setTime(mTimeEdit->time());
dateTime.setDate(mDateEdit->date());
return dateTime;
}
QDate EventDateTimeWidget::date() const
{
return mDateEdit->date();
}
QTime EventDateTimeWidget::time() const
{
return mTimeEdit->time();
}
void EventDateTimeWidget::setTime(QTime time)
{
mTimeEdit->setTime(time);
}
void EventDateTimeWidget::setDate(QDate date)
{
mDateEdit->setDate(date);
}
#include "moc_eventdatetimewidget.cpp"
|