/**************************************************************************** ** ** Copyright (C) 2016 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms ** and conditions see https://www.qt.io/terms-conditions. For further ** information use the contact form at https://www.qt.io/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 3 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL3 included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 3 requirements ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 2.0 or (at your option) the GNU General ** Public license version 3 or any later version approved by the KDE Free ** Qt Foundation. The licenses are as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ** included in the packaging of this file. Please review the following ** information to ensure the GNU General Public License requirements will ** be met: https://www.gnu.org/licenses/gpl-2.0.html and ** https://www.gnu.org/licenses/gpl-3.0.html. ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef QDATETIMEEDIT_H #define QDATETIMEEDIT_H #include #include #include #include QT_BEGIN_NAMESPACE #ifndef QT_NO_DATETIMEEDIT class QDateTimeEditPrivate; class QStyleOptionSpinBox; class QCalendarWidget; class Q_WIDGETS_EXPORT QDateTimeEdit : public QAbstractSpinBox { Q_OBJECT Q_FLAGS(Sections) Q_PROPERTY(QDateTime dateTime READ dateTime WRITE setDateTime NOTIFY dateTimeChanged USER true) Q_PROPERTY(QDate date READ date WRITE setDate NOTIFY dateChanged) Q_PROPERTY(QTime time READ time WRITE setTime NOTIFY timeChanged) Q_PROPERTY(QDateTime maximumDateTime READ maximumDateTime WRITE setMaximumDateTime RESET clearMaximumDateTime) Q_PROPERTY(QDateTime minimumDateTime READ minimumDateTime WRITE setMinimumDateTime RESET clearMinimumDateTime) Q_PROPERTY(QDate maximumDate READ maximumDate WRITE setMaximumDate RESET clearMaximumDate) Q_PROPERTY(QDate minimumDate READ minimumDate WRITE setMinimumDate RESET clearMinimumDate) Q_PROPERTY(QTime maximumTime READ maximumTime WRITE setMaximumTime RESET clearMaximumTime) Q_PROPERTY(QTime minimumTime READ minimumTime WRITE setMinimumTime RESET clearMinimumTime) Q_PROPERTY(Section currentSection READ currentSection WRITE setCurrentSection) Q_PROPERTY(Sections displayedSections READ displayedSections) Q_PROPERTY(QString displayFormat READ displayFormat WRITE setDisplayFormat) Q_PROPERTY(bool calendarPopup READ calendarPopup WRITE setCalendarPopup) Q_PROPERTY(int currentSectionIndex READ currentSectionIndex WRITE setCurrentSectionIndex) Q_PROPERTY(int sectionCount READ sectionCount) Q_PROPERTY(Qt::TimeSpec timeSpec READ timeSpec WRITE setTimeSpec) public: enum Section { // a sub-type of QDateTimeParser's like-named enum. NoSection = 0x0000, AmPmSection = 0x0001, MSecSection = 0x0002, SecondSection = 0x0004, MinuteSection = 0x0008, HourSection = 0x0010, DaySection = 0x0100, MonthSection = 0x0200, YearSection = 0x0400, TimeSections_Mask = AmPmSection|MSecSection|SecondSection|MinuteSection|HourSection, DateSections_Mask = DaySection|MonthSection|YearSection }; Q_ENUM(Section) Q_DECLARE_FLAGS(Sections, Section) explicit QDateTimeEdit(QWidget *parent = Q_NULLPTR); explicit QDateTimeEdit(const QDateTime &dt, QWidget *parent = Q_NULLPTR); explicit QDateTimeEdit(const QDate &d, QWidget *parent = Q_NULLPTR); explicit QDateTimeEdit(const QTime &t, QWidget *parent = Q_NULLPTR); ~QDateTimeEdit(); QDateTime dateTime() const; QDate date() const; QTime time() const; QDateTime minimumDateTime() const; void clearMinimumDateTime(); void setMinimumDateTime(const QDateTime &dt); QDateTime maximumDateTime() const; void clearMaximumDateTime(); void setMaximumDateTime(const QDateTime &dt); void setDateTimeRange(const QDateTime &min, const QDateTime &max); QDate minimumDate() const; void setMinimumDate(const QDate &min); void clearMinimumDate(); QDate maximumDate() const; void setMaximumDate(const QDate &max); void clearMaximumDate(); void setDateRange(const QDate &min, const QDate &max); QTime minimumTime() const; void setMinimumTime(const QTime &min); void clearMinimumTime(); QTime maximumTime() const; void setMaximumTime(const QTime &max); void clearMaximumTime(); void setTimeRange(const QTime &min, const QTime &max); Sections displayedSections() const; Section currentSection() const; Section sectionAt(int index) const; void setCurrentSection(Section section); int currentSectionIndex() const; void setCurrentSectionIndex(int index); QCalendarWidget *calendarWidget() const; void setCalendarWidget(QCalendarWidget *calendarWidget); int sectionCount() const; void setSelectedSection(Section section); QString sectionText(Section section) const; QString displayFormat() const; void setDisplayFormat(const QString &format); bool calendarPopup() const; void setCalendarPopup(bool enable); Qt::TimeSpec timeSpec() const; void setTimeSpec(Qt::TimeSpec spec); QSize sizeHint() const; virtual void clear(); virtual void stepBy(int steps); bool event(QEvent *event); Q_SIGNALS: void dateTimeChanged(const QDateTime &dateTime); void timeChanged(const QTime &time); void dateChanged(const QDate &date); public Q_SLOTS: void setDateTime(const QDateTime &dateTime); void setDate(const QDate &date); void setTime(const QTime &time); protected: virtual void keyPressEvent(QKeyEvent *event); #ifndef QT_NO_WHEELEVENT virtual void wheelEvent(QWheelEvent *event); #endif virtual void focusInEvent(QFocusEvent *event); virtual bool focusNextPrevChild(bool next); virtual QValidator::State validate(QString &input, int &pos) const; virtual void fixup(QString &input) const; virtual QDateTime dateTimeFromText(const QString &text) const; virtual QString textFromDateTime(const QDateTime &dt) const; virtual StepEnabled stepEnabled() const; virtual void mousePressEvent(QMouseEvent *event); virtual void paintEvent(QPaintEvent *event); void initStyleOption(QStyleOptionSpinBox *option) const; QDateTimeEdit(const QVariant &val, QVariant::Type parserType, QWidget *parent = Q_NULLPTR); private: Q_DECLARE_PRIVATE(QDateTimeEdit) Q_DISABLE_COPY(QDateTimeEdit) Q_PRIVATE_SLOT(d_func(), void _q_resetButton()) }; class Q_WIDGETS_EXPORT QTimeEdit : public QDateTimeEdit { Q_OBJECT Q_PROPERTY(QTime time READ time WRITE setTime NOTIFY userTimeChanged USER true) public: explicit QTimeEdit(QWidget *parent = Q_NULLPTR); explicit QTimeEdit(const QTime &time, QWidget *parent = Q_NULLPTR); ~QTimeEdit(); Q_SIGNALS: void userTimeChanged(const QTime &time); }; class Q_WIDGETS_EXPORT QDateEdit : public QDateTimeEdit { Q_OBJECT Q_PROPERTY(QDate date READ date WRITE setDate NOTIFY userDateChanged USER true) public: explicit QDateEdit(QWidget *parent = Q_NULLPTR); explicit QDateEdit(const QDate &date, QWidget *parent = Q_NULLPTR); ~QDateEdit(); Q_SIGNALS: void userDateChanged(const QDate &date); }; Q_DECLARE_OPERATORS_FOR_FLAGS(QDateTimeEdit::Sections) #endif // QT_NO_DATETIMEEDIT QT_END_NAMESPACE #endif // QDATETIMEEDIT_H