File indexing completed on 2024-04-14 03:41:23

0001 /*
0002     SPDX-FileCopyrightText: 2001 Jason Harris <jharris@30doradus.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include "kstarsdatetime.h"
0010 
0011 #include <QDialog>
0012 #include <QHBoxLayout>
0013 #include <QKeyEvent>
0014 #include <QLabel>
0015 #include <QVariant>
0016 #include <QVBoxLayout>
0017 
0018 class QHBoxLayout;
0019 class QVBoxLayout;
0020 class KDatePicker;
0021 class QTimeEdit;
0022 class QPushButton;
0023 class GeoLocation;
0024 
0025 /**
0026  * @class TimeDialog
0027  *
0028  * A class for adjusting the Time and Date.  Contains a KDatePicker widget
0029  * for selecting the date, and a QTimeEdit for selecting the time.  There
0030  * is also a "Now" button for selecting the Time and Date from the system clock.
0031  *
0032  *
0033  * @short Dialog for adjusting the Time and Date.
0034  * @author Jason Harris
0035  * @version 1.0
0036  */
0037 class TimeDialog : public QDialog
0038 {
0039     Q_OBJECT
0040   public:
0041     /**
0042      * Constructor. Creates widgets and packs them into QLayouts.
0043      * Connects Signals and Slots.
0044      */
0045     TimeDialog(const KStarsDateTime &now, GeoLocation *_geo, QWidget *parent, bool UTCFrame = false);
0046 
0047     ~TimeDialog() override = default;
0048 
0049     /** @returns a QTime object with the selected time */
0050     QTime selectedTime(void);
0051 
0052     /** @returns a QDate object with the selected date */
0053     QDate selectedDate(void);
0054 
0055     /** @returns a KStarsDateTime object with the selected date and time */
0056     KStarsDateTime selectedDateTime(void);
0057 
0058   public slots:
0059     /**
0060      * When the "Now" button is pressed, read the time and date from the system clock.
0061      * Change the selected date in the KDatePicker to the system's date, and the displayed time
0062      * to the system time.
0063      */
0064     void setNow(void);
0065 
0066   protected:
0067     void keyReleaseEvent(QKeyEvent *) override;
0068 
0069   private:
0070     bool UTCNow;
0071     QHBoxLayout *hlay { nullptr };
0072     QVBoxLayout *vlay { nullptr };
0073     KDatePicker *dPicker { nullptr };
0074     QTimeEdit *tEdit { nullptr };
0075     QPushButton *NowButton { nullptr };
0076     GeoLocation *geo { nullptr };
0077 };