File indexing completed on 2024-04-21 03:42:45

0001 /*
0002     SPDX-FileCopyrightText: 2001 Jason Harris <jharris@30doradus.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "timedialog.h"
0008 
0009 #include "geolocation.h"
0010 #include "kstarsdata.h"
0011 #include "kstarsdatetime.h"
0012 #include "simclock.h"
0013 
0014 #include <KLocalizedString>
0015 #include <KDatePicker>
0016 
0017 #include <QFrame>
0018 #include <QHBoxLayout>
0019 #include <QKeyEvent>
0020 #include <QPushButton>
0021 #include <QTimeEdit>
0022 #include <QVBoxLayout>
0023 
0024 TimeDialog::TimeDialog(const KStarsDateTime &now, GeoLocation *_geo, QWidget *parent, bool UTCFrame)
0025     : QDialog(parent), geo(_geo)
0026 {
0027 #ifdef Q_OS_OSX
0028     setWindowFlags(Qt::Tool | Qt::WindowStaysOnTopHint);
0029 #endif
0030     UTCNow = UTCFrame;
0031 
0032     QFrame *page = new QFrame(this);
0033 
0034     QVBoxLayout *mainLayout = new QVBoxLayout;
0035     mainLayout->addWidget(page);
0036     setLayout(mainLayout);
0037 
0038     if (UTCNow)
0039         setWindowTitle(i18nc("@title:window set clock to a new time", "Set UTC Time"));
0040     else
0041         setWindowTitle(i18nc("@title:window set clock to a new time", "Set Time"));
0042 
0043     QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
0044     mainLayout->addWidget(buttonBox);
0045     connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
0046     connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
0047 
0048     vlay = new QVBoxLayout(page);
0049     vlay->setContentsMargins(2, 2, 2, 2);
0050     vlay->setSpacing(2);
0051     hlay = new QHBoxLayout(); //this layout will be added to the VLayout
0052     hlay->setSpacing(2);
0053 
0054     dPicker   = new KDatePicker(now.date(), page);
0055     tEdit     = new QTimeEdit(now.time(), page);
0056     NowButton = new QPushButton(page);
0057     NowButton->setObjectName("NowButton");
0058     NowButton->setText(UTCNow ? i18n("UTC Now") : i18n("Now"));
0059 
0060     vlay->addWidget(dPicker, 0);
0061     vlay->addLayout(hlay, 0);
0062 
0063     hlay->addWidget(tEdit);
0064     hlay->addWidget(NowButton);
0065 
0066     vlay->activate();
0067 
0068     QObject::connect(NowButton, SIGNAL(clicked()), this, SLOT(setNow()));
0069 }
0070 
0071 //Add handler for Escape key to close window
0072 //Use keyReleaseEvent because keyPressEvents are already consumed
0073 //by the KDatePicker.
0074 void TimeDialog::keyReleaseEvent(QKeyEvent *kev)
0075 {
0076     switch (kev->key())
0077     {
0078         case Qt::Key_Escape:
0079         {
0080             close();
0081             break;
0082         }
0083 
0084         default:
0085         {
0086             kev->ignore();
0087             break;
0088         }
0089     }
0090 }
0091 
0092 void TimeDialog::setNow(void)
0093 {
0094     KStarsDateTime dt(KStarsDateTime::currentDateTimeUtc());
0095     if (!UTCNow)
0096         dt = geo->UTtoLT(dt);
0097 
0098     dPicker->setDate(dt.date());
0099     tEdit->setTime(dt.time());
0100 }
0101 
0102 QTime TimeDialog::selectedTime(void)
0103 {
0104     return tEdit->time();
0105 }
0106 
0107 QDate TimeDialog::selectedDate(void)
0108 {
0109     return dPicker->date();
0110 }
0111 
0112 KStarsDateTime TimeDialog::selectedDateTime(void)
0113 {
0114     return KStarsDateTime(selectedDate(), selectedTime());
0115 }