1 /**************************************************************************** 2 ** 3 ** Copyright (C) 2015 The Qt Company Ltd. 4 ** Contact: http://www.qt.io/licensing/ 5 ** 6 ** This file is part of the QtGui module of the Qt Toolkit. 7 ** 8 ** $QT_BEGIN_LICENSE:LGPL$ 9 ** Commercial License Usage 10 ** Licensees holding valid commercial Qt licenses may use this file in 11 ** accordance with the commercial license agreement provided with the 12 ** Software or, alternatively, in accordance with the terms contained in 13 ** a written agreement between you and The Qt Company. For licensing terms 14 ** and conditions see http://www.qt.io/terms-conditions. For further 15 ** information use the contact form at http://www.qt.io/contact-us. 16 ** 17 ** GNU Lesser General Public License Usage 18 ** Alternatively, this file may be used under the terms of the GNU Lesser 19 ** General Public License version 2.1 or version 3 as published by the Free 20 ** Software Foundation and appearing in the file LICENSE.LGPLv21 and 21 ** LICENSE.LGPLv3 included in the packaging of this file. Please review the 22 ** following information to ensure the GNU Lesser General Public License 23 ** requirements will be met: https://www.gnu.org/licenses/lgpl.html and 24 ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. 25 ** 26 ** As a special exception, The Qt Company gives you certain additional 27 ** rights. These rights are described in The Qt Company LGPL Exception 28 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. 29 ** 30 ** GNU General Public License Usage 31 ** Alternatively, this file may be used under the terms of the GNU 32 ** General Public License version 3.0 as published by the Free Software 33 ** Foundation and appearing in the file LICENSE.GPL included in the 34 ** packaging of this file. Please review the following information to 35 ** ensure the GNU General Public License version 3.0 requirements will be 36 ** met: http://www.gnu.org/copyleft/gpl.html. 37 ** 38 ** $QT_END_LICENSE$ 39 ** 40 ****************************************************************************/ 41 42 #ifndef QDATETIMEEDIT_H 43 #define QDATETIMEEDIT_H 44 45 #include <QtCore/qdatetime.h> 46 #include <QtCore/qvariant.h> 47 #include <QtGui/qabstractspinbox.h> 48 49 QT_BEGIN_HEADER 50 51 QT_BEGIN_NAMESPACE 52 53 QT_MODULE(Gui) 54 55 #ifndef QT_NO_DATETIMEEDIT 56 57 class QDateTimeEditPrivate; 58 class QStyleOptionSpinBox; 59 class QCalendarWidget; 60 61 class Q_GUI_EXPORT QDateTimeEdit : public QAbstractSpinBox 62 { 63 Q_OBJECT 64 65 Q_ENUMS(Section) 66 Q_FLAGS(Sections) 67 Q_PROPERTY(QDateTime dateTime READ dateTime WRITE setDateTime NOTIFY dateTimeChanged USER true) 68 Q_PROPERTY(QDate date READ date WRITE setDate NOTIFY dateChanged) 69 Q_PROPERTY(QTime time READ time WRITE setTime NOTIFY timeChanged) 70 Q_PROPERTY(QDateTime maximumDateTime READ maximumDateTime WRITE setMaximumDateTime RESET clearMaximumDateTime) 71 Q_PROPERTY(QDateTime minimumDateTime READ minimumDateTime WRITE setMinimumDateTime RESET clearMinimumDateTime) 72 Q_PROPERTY(QDate maximumDate READ maximumDate WRITE setMaximumDate RESET clearMaximumDate) 73 Q_PROPERTY(QDate minimumDate READ minimumDate WRITE setMinimumDate RESET clearMinimumDate) 74 Q_PROPERTY(QTime maximumTime READ maximumTime WRITE setMaximumTime RESET clearMaximumTime) 75 Q_PROPERTY(QTime minimumTime READ minimumTime WRITE setMinimumTime RESET clearMinimumTime) 76 Q_PROPERTY(Section currentSection READ currentSection WRITE setCurrentSection) 77 Q_PROPERTY(Sections displayedSections READ displayedSections) 78 Q_PROPERTY(QString displayFormat READ displayFormat WRITE setDisplayFormat) 79 Q_PROPERTY(bool calendarPopup READ calendarPopup WRITE setCalendarPopup) 80 Q_PROPERTY(int currentSectionIndex READ currentSectionIndex WRITE setCurrentSectionIndex) 81 Q_PROPERTY(int sectionCount READ sectionCount) 82 Q_PROPERTY(Qt::TimeSpec timeSpec READ timeSpec WRITE setTimeSpec) 83 public: 84 enum Section { 85 NoSection = 0x0000, 86 AmPmSection = 0x0001, 87 MSecSection = 0x0002, 88 SecondSection = 0x0004, 89 MinuteSection = 0x0008, 90 HourSection = 0x0010, 91 DaySection = 0x0100, 92 MonthSection = 0x0200, 93 YearSection = 0x0400, 94 TimeSections_Mask = AmPmSection|MSecSection|SecondSection|MinuteSection|HourSection, 95 DateSections_Mask = DaySection|MonthSection|YearSection 96 }; 97 98 Q_DECLARE_FLAGS(Sections, Section) 99 100 explicit QDateTimeEdit(QWidget *parent = 0); 101 explicit QDateTimeEdit(const QDateTime &dt, QWidget *parent = 0); 102 explicit QDateTimeEdit(const QDate &d, QWidget *parent = 0); 103 explicit QDateTimeEdit(const QTime &t, QWidget *parent = 0); 104 105 QDateTime dateTime() const; 106 QDate date() const; 107 QTime time() const; 108 109 QDateTime minimumDateTime() const; 110 void clearMinimumDateTime(); 111 void setMinimumDateTime(const QDateTime &dt); 112 113 QDateTime maximumDateTime() const; 114 void clearMaximumDateTime(); 115 void setMaximumDateTime(const QDateTime &dt); 116 117 void setDateTimeRange(const QDateTime &min, const QDateTime &max); 118 119 QDate minimumDate() const; 120 void setMinimumDate(const QDate &min); 121 void clearMinimumDate(); 122 123 QDate maximumDate() const; 124 void setMaximumDate(const QDate &max); 125 void clearMaximumDate(); 126 127 void setDateRange(const QDate &min, const QDate &max); 128 129 QTime minimumTime() const; 130 void setMinimumTime(const QTime &min); 131 void clearMinimumTime(); 132 133 QTime maximumTime() const; 134 void setMaximumTime(const QTime &max); 135 void clearMaximumTime(); 136 137 void setTimeRange(const QTime &min, const QTime &max); 138 139 Sections displayedSections() const; 140 Section currentSection() const; 141 Section sectionAt(int index) const; 142 void setCurrentSection(Section section); 143 144 int currentSectionIndex() const; 145 void setCurrentSectionIndex(int index); 146 147 QCalendarWidget *calendarWidget() const; 148 void setCalendarWidget(QCalendarWidget *calendarWidget); 149 150 int sectionCount() const; 151 152 void setSelectedSection(Section section); 153 154 QString sectionText(Section section) const; 155 156 QString displayFormat() const; 157 void setDisplayFormat(const QString &format); 158 159 bool calendarPopup() const; 160 void setCalendarPopup(bool enable); 161 162 Qt::TimeSpec timeSpec() const; 163 void setTimeSpec(Qt::TimeSpec spec); 164 165 QSize sizeHint() const; 166 167 virtual void clear(); 168 virtual void stepBy(int steps); 169 170 bool event(QEvent *event); 171 Q_SIGNALS: 172 void dateTimeChanged(const QDateTime &date); 173 void timeChanged(const QTime &date); 174 void dateChanged(const QDate &date); 175 176 public Q_SLOTS: 177 void setDateTime(const QDateTime &dateTime); 178 void setDate(const QDate &date); 179 void setTime(const QTime &time); 180 181 protected: 182 virtual void keyPressEvent(QKeyEvent *event); 183 #ifndef QT_NO_WHEELEVENT 184 virtual void wheelEvent(QWheelEvent *event); 185 #endif 186 virtual void focusInEvent(QFocusEvent *event); 187 virtual bool focusNextPrevChild(bool next); 188 virtual QValidator::State validate(QString &input, int &pos) const; 189 virtual void fixup(QString &input) const; 190 191 virtual QDateTime dateTimeFromText(const QString &text) const; 192 virtual QString textFromDateTime(const QDateTime &dt) const; 193 virtual StepEnabled stepEnabled() const; 194 virtual void mousePressEvent(QMouseEvent *event); 195 virtual void paintEvent(QPaintEvent *event); 196 void initStyleOption(QStyleOptionSpinBox *option) const; 197 198 QDateTimeEdit(const QVariant &val, QVariant::Type parserType, QWidget *parent = 0); 199 private: 200 Q_DECLARE_PRIVATE(QDateTimeEdit) 201 Q_DISABLE_COPY(QDateTimeEdit) 202 203 Q_PRIVATE_SLOT(d_func(), void _q_resetButton()) 204 }; 205 206 class Q_GUI_EXPORT QTimeEdit : public QDateTimeEdit 207 { 208 Q_OBJECT 209 public: 210 QTimeEdit(QWidget *parent = 0); 211 QTimeEdit(const QTime &time, QWidget *parent = 0); 212 }; 213 214 class Q_GUI_EXPORT QDateEdit : public QDateTimeEdit 215 { 216 Q_OBJECT 217 public: 218 QDateEdit(QWidget *parent = 0); 219 QDateEdit(const QDate &date, QWidget *parent = 0); 220 }; 221 222 Q_DECLARE_OPERATORS_FOR_FLAGS(QDateTimeEdit::Sections) 223 224 #endif // QT_NO_DATETIMEEDIT 225 226 QT_END_NAMESPACE 227 228 QT_END_HEADER 229 230 #endif // QDATETIMEEDIT_H 231