File indexing completed on 2024-04-21 14:55:51

0001 /* This file is part of the KDE libraries
0002    Copyright (C) 2002 Hans Petter bieker <bieker@kde.org>
0003 
0004    This library is free software; you can redistribute it and/or
0005    modify it under the terms of the GNU Library General Public
0006    License version 2 as published by the Free Software Foundation.
0007 
0008    This library is distributed in the hope that it will be useful,
0009    but WITHOUT ANY WARRANTY; without even the implied warranty of
0010    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0011    Library General Public License for more details.
0012 
0013    You should have received a copy of the GNU Library General Public License
0014    along with this library; see the file COPYING.LIB.  If not, write to
0015    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
0016    Boston, MA 02110-1301, USA.
0017 */
0018 
0019 #include "kdatetimewidget.h"
0020 
0021 #include <QDate>
0022 #include <QDebug>
0023 #include <QLayout>
0024 #include <QTimeEdit>
0025 
0026 #include "kdatewidget.h"
0027 
0028 class Q_DECL_HIDDEN KDateTimeWidget::KDateTimeWidgetPrivate
0029 {
0030 public:
0031     KDateWidget *dateWidget;
0032     QTimeEdit *timeWidget;
0033 };
0034 
0035 KDateTimeWidget::KDateTimeWidget(QWidget *parent)
0036     : QWidget(parent)
0037     , d(new KDateTimeWidgetPrivate)
0038 {
0039     initWidget();
0040 }
0041 
0042 KDateTimeWidget::KDateTimeWidget(const QDateTime &datetime,
0043                                  QWidget *parent)
0044     : QWidget(parent)
0045     , d(new KDateTimeWidgetPrivate)
0046 
0047 {
0048     initWidget();
0049 
0050     setDateTime(datetime);
0051 }
0052 
0053 KDateTimeWidget::~KDateTimeWidget()
0054 {
0055     delete d;
0056 }
0057 
0058 void KDateTimeWidget::initWidget()
0059 {
0060     QHBoxLayout *layout = new QHBoxLayout(this);
0061     layout->setContentsMargins(0, 0, 0, 0);
0062 
0063     d->dateWidget = new KDateWidget(this);
0064     d->timeWidget = new QTimeEdit(this);
0065     layout->addWidget(d->dateWidget);
0066     layout->addWidget(d->timeWidget);
0067 
0068     connect(d->dateWidget, SIGNAL(changed(QDate)),
0069             SLOT(slotValueChanged()));
0070     connect(d->timeWidget, SIGNAL(timeChanged(QTime)),
0071             SLOT(slotValueChanged()));
0072 }
0073 
0074 void KDateTimeWidget::setDateTime(const QDateTime &datetime)
0075 {
0076     d->dateWidget->setDate(datetime.date());
0077     d->timeWidget->setTime(datetime.time());
0078 }
0079 
0080 QDateTime KDateTimeWidget::dateTime() const
0081 {
0082     return QDateTime(d->dateWidget->date(), d->timeWidget->time());
0083 }
0084 
0085 void KDateTimeWidget::slotValueChanged()
0086 {
0087     QDateTime datetime(d->dateWidget->date(),
0088                        d->timeWidget->time());
0089 
0090     //qDebug() << "slotValueChanged(): " << datetime << "\n";
0091 
0092     emit valueChanged(datetime);
0093 }
0094 
0095 #include "moc_kdatetimewidget.cpp"