diff options
author | A. Wilcox <AWilcox@Wilcox-Tech.com> | 2019-11-14 12:04:30 -0600 |
---|---|---|
committer | A. Wilcox <AWilcox@Wilcox-Tech.com> | 2019-11-14 12:04:30 -0600 |
commit | e25f4a71ce293a7640f3a3def5094a3ad48a761f (patch) | |
tree | 90a107b427f3411dbc20171be6f11bf21b98671d /ui/qt5/datetimepage.hh | |
parent | 84e180e488e80c6e3e4d743290d8ac0694ea4cf5 (diff) | |
download | horizon-e25f4a71ce293a7640f3a3def5094a3ad48a761f.tar.gz horizon-e25f4a71ce293a7640f3a3def5094a3ad48a761f.tar.bz2 horizon-e25f4a71ce293a7640f3a3def5094a3ad48a761f.tar.xz horizon-e25f4a71ce293a7640f3a3def5094a3ad48a761f.zip |
Qt UI: Implement UI.SysMeta.DateTime/Timezone page
Diffstat (limited to 'ui/qt5/datetimepage.hh')
-rw-r--r-- | ui/qt5/datetimepage.hh | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/ui/qt5/datetimepage.hh b/ui/qt5/datetimepage.hh new file mode 100644 index 0000000..2c753dd --- /dev/null +++ b/ui/qt5/datetimepage.hh @@ -0,0 +1,73 @@ +/* + * datetimepage.hh - Definition of the UI.SysMeta.DateTime page + * horizon-qt5, the Qt 5 user interface for + * Project Horizon + * + * Copyright (c) 2019 Adélie Linux and contributors. All rights reserved. + * This code is licensed under the AGPL 3.0 license, as noted in the + * LICENSE-code file in the root directory of this repository. + * + * SPDX-License-Identifier: AGPL-3.0-only + */ + +#ifndef DATETIMEPAGE_HH +#define DATETIMEPAGE_HH + +#include "horizonwizardpage.hh" + +#include <QAbstractListModel> +#include <QDateEdit> +#include <QListView> +#include <QTimeEdit> +#include <QTimer> +#include <QVector> + +/*! Represents a single time zone */ +struct TimeZone { + /*! The IANA name, i.e. America/Chicago */ + QByteArray ianaName; + /*! The 'friendly' name, i.e. 'Central Time' */ + QString friendlyName; + /*! The UTC offset in seconds */ + int offset; + + TimeZone(); + TimeZone(QByteArray iana); +}; + +class TimeZoneModel : public QAbstractListModel { +public: + TimeZoneModel(QWidget *parent = nullptr); + + int rowCount(const QModelIndex &parent = QModelIndex()) const override; + QVariant data(const QModelIndex &index, int role) const override; + QVariant headerData(int section, Qt::Orientation orientation, + int role = Qt::DisplayRole) const override; +private: + QVector<TimeZone> zones; +}; + +class DateTimePage : public HorizonWizardPage { + Q_OBJECT + Q_PROPERTY(QString selectedTimeZone READ selectedTimeZone) +public: + DateTimePage(QWidget *parent = nullptr); + void initializePage(); + void cleanupPage(); + + TimeZoneModel zoneModel; + QString selectedTimeZone(); + +signals: + void timezoneChanged(); + +private: + QDateEdit *dateEdit; + QTimeEdit *timeEdit; + QTimer *updateTimer; + QListView *timeZoneList; + + void maybeRaiseCap(); +}; + +#endif /* !DATETIMEPAGE_HH */ |