1 /*
2  * DQt - D bindings for the Qt Toolkit
3  *
4  * GNU Lesser General Public License Usage
5  * This file may be used under the terms of the GNU Lesser
6  * General Public License version 3 as published by the Free Software
7  * Foundation and appearing in the file LICENSE.LGPL3 included in the
8  * packaging of this file. Please review the following information to
9  * ensure the GNU Lesser General Public License version 3 requirements
10  * will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
11  */
12 module qt.widgets.datetimeedit;
13 extern(C++):
14 
15 import qt.config;
16 import qt.core.calendar;
17 import qt.core.coreevent;
18 import qt.core.datetime;
19 import qt.core.flags;
20 import qt.core.metatype;
21 import qt.core.namespace;
22 import qt.core.size;
23 import qt.core.string;
24 import qt.core.variant;
25 import qt.gui.event;
26 import qt.gui.validator;
27 import qt.helpers;
28 import qt.widgets.abstractspinbox;
29 import qt.widgets.calendarwidget;
30 import qt.widgets.styleoption;
31 import qt.widgets.widget;
32 
33 /+ QT_REQUIRE_CONFIG(datetimeedit); +/
34 
35 
36 extern(C++, class) struct QDateTimeEditPrivate;
37 
38 /// Binding for C++ class [QDateTimeEdit](https://doc.qt.io/qt-6/qdatetimeedit.html).
39 class /+ Q_WIDGETS_EXPORT +/ QDateTimeEdit : QAbstractSpinBox
40 {
41     mixin(Q_OBJECT);
42 
43     /+ Q_PROPERTY(QDateTime dateTime READ dateTime WRITE setDateTime NOTIFY dateTimeChanged USER true)
44     Q_PROPERTY(QDate date READ date WRITE setDate NOTIFY dateChanged)
45     Q_PROPERTY(QTime time READ time WRITE setTime NOTIFY timeChanged)
46     Q_PROPERTY(QDateTime maximumDateTime READ maximumDateTime WRITE setMaximumDateTime
47                RESET clearMaximumDateTime)
48     Q_PROPERTY(QDateTime minimumDateTime READ minimumDateTime WRITE setMinimumDateTime
49                RESET clearMinimumDateTime)
50     Q_PROPERTY(QDate maximumDate READ maximumDate WRITE setMaximumDate RESET clearMaximumDate)
51     Q_PROPERTY(QDate minimumDate READ minimumDate WRITE setMinimumDate RESET clearMinimumDate)
52     Q_PROPERTY(QTime maximumTime READ maximumTime WRITE setMaximumTime RESET clearMaximumTime)
53     Q_PROPERTY(QTime minimumTime READ minimumTime WRITE setMinimumTime RESET clearMinimumTime)
54     Q_PROPERTY(Section currentSection READ currentSection WRITE setCurrentSection)
55     Q_PROPERTY(Sections displayedSections READ displayedSections)
56     Q_PROPERTY(QString displayFormat READ displayFormat WRITE setDisplayFormat)
57     Q_PROPERTY(bool calendarPopup READ calendarPopup WRITE setCalendarPopup)
58     Q_PROPERTY(int currentSectionIndex READ currentSectionIndex WRITE setCurrentSectionIndex)
59     Q_PROPERTY(int sectionCount READ sectionCount)
60     Q_PROPERTY(Qt::TimeSpec timeSpec READ timeSpec WRITE setTimeSpec) +/
61 public:
62     enum Section { // a sub-type of QDateTimeParser's like-named enum.
63         NoSection = 0x0000,
64         AmPmSection = 0x0001,
65         MSecSection = 0x0002,
66         SecondSection = 0x0004,
67         MinuteSection = 0x0008,
68         HourSection   = 0x0010,
69         DaySection    = 0x0100,
70         MonthSection  = 0x0200,
71         YearSection   = 0x0400,
72         TimeSections_Mask = Section.AmPmSection|Section.MSecSection|Section.SecondSection|Section.MinuteSection|Section.HourSection,
73         DateSections_Mask = Section.DaySection|Section.MonthSection|Section.YearSection
74     }
75     /+ Q_ENUM(Section) +/
76 
77     /+ Q_DECLARE_FLAGS(Sections, Section) +/
78 alias Sections = QFlags!(Section);    /+ Q_FLAG(Sections) +/
79 
80     /+ explicit +/this(QWidget parent = null);
81     /+ explicit +/this(ref const(QDateTime) dt, QWidget parent = null);
82     /+ explicit +/this(QDate d, QWidget parent = null);
83     /+ explicit +/this(QTime t, QWidget parent = null);
84     ~this();
85 
86     final QDateTime dateTime() const;
87     final QDate date() const;
88     final QTime time() const;
89 
90     final QCalendar calendar() const;
91     final void setCalendar(QCalendar calendar);
92 
93     final QDateTime minimumDateTime() const;
94     final void clearMinimumDateTime();
95     final void setMinimumDateTime(ref const(QDateTime) dt);
96 
97     final QDateTime maximumDateTime() const;
98     final void clearMaximumDateTime();
99     final void setMaximumDateTime(ref const(QDateTime) dt);
100 
101     final void setDateTimeRange(ref const(QDateTime) min, ref const(QDateTime) max);
102 
103     final QDate minimumDate() const;
104     final void setMinimumDate(QDate min);
105     final void clearMinimumDate();
106 
107     final QDate maximumDate() const;
108     final void setMaximumDate(QDate max);
109     final void clearMaximumDate();
110 
111     final void setDateRange(QDate min, QDate max);
112 
113     final QTime minimumTime() const;
114     final void setMinimumTime(QTime min);
115     final void clearMinimumTime();
116 
117     final QTime maximumTime() const;
118     final void setMaximumTime(QTime max);
119     final void clearMaximumTime();
120 
121     final void setTimeRange(QTime min, QTime max);
122 
123     final Sections displayedSections() const;
124     final Section currentSection() const;
125     final Section sectionAt(int index) const;
126     final void setCurrentSection(Section section);
127 
128     final int currentSectionIndex() const;
129     final void setCurrentSectionIndex(int index);
130 
131     final QCalendarWidget calendarWidget() const;
132     final void setCalendarWidget(QCalendarWidget calendarWidget);
133 
134     final int sectionCount() const;
135 
136     final void setSelectedSection(Section section);
137 
138     final QString sectionText(Section section) const;
139 
140     final QString displayFormat() const;
141     final void setDisplayFormat(ref const(QString) format);
142 
143     final bool calendarPopup() const;
144     final void setCalendarPopup(bool enable);
145 
146     final /+ Qt:: +/qt.core.namespace.TimeSpec timeSpec() const;
147     final void setTimeSpec(/+ Qt:: +/qt.core.namespace.TimeSpec spec);
148 
149     override QSize sizeHint() const;
150 
151     override void clear();
152     override void stepBy(int steps);
153 
154     override bool event(QEvent event);
155 /+ Q_SIGNALS +/public:
156     @QSignal final void dateTimeChanged(ref const(QDateTime) dateTime);
157     @QSignal final void timeChanged(QTime time);
158     @QSignal final void dateChanged(QDate date);
159 
160 public /+ Q_SLOTS +/:
161     @QSlot final void setDateTime(ref const(QDateTime) dateTime);
162     @QSlot final void setDate(QDate date);
163     @QSlot final void setTime(QTime time);
164 
165 protected:
166     override void keyPressEvent(QKeyEvent event);
167 /+ #if QT_CONFIG(wheelevent) +/
168     override void wheelEvent(QWheelEvent event);
169 /+ #endif +/
170     override void focusInEvent(QFocusEvent event);
171     override bool focusNextPrevChild(bool next);
172     override QValidator.State validate(ref QString input, ref int pos) const;
173     override void fixup(ref QString input) const;
174 
175     /+ virtual +/ QDateTime dateTimeFromText(ref const(QString) text) const;
176     /+ virtual +/ QString textFromDateTime(ref const(QDateTime) dt) const;
177     override StepEnabled stepEnabled() const;
178     override void mousePressEvent(QMouseEvent event);
179     override void paintEvent(QPaintEvent event);
180     override void initStyleOption(QStyleOptionSpinBox* option) const;
181 
182     this(ref const(QVariant) val, QMetaType.Type parserType, QWidget parent = null);
183 private:
184     /+ Q_DECLARE_PRIVATE(QDateTimeEdit) +/
185     /+ Q_DISABLE_COPY(QDateTimeEdit) +/
186 
187     /+ Q_PRIVATE_SLOT(d_func(), void _q_resetButton()) +/
188     mixin(CREATE_CONVENIENCE_WRAPPERS);
189 }
190 
191 /// Binding for C++ class [QTimeEdit](https://doc.qt.io/qt-6/qtimeedit.html).
192 class /+ Q_WIDGETS_EXPORT +/ QTimeEdit : QDateTimeEdit
193 {
194     mixin(Q_OBJECT);
195     /+ Q_PROPERTY(QTime time READ time WRITE setTime NOTIFY userTimeChanged USER true) +/
196 public:
197     /+ explicit +/this(QWidget parent = null);
198     /+ explicit +/this(QTime time, QWidget parent = null);
199     ~this();
200 
201 /+ Q_SIGNALS +/public:
202     @QSignal final void userTimeChanged(QTime time);
203     mixin(CREATE_CONVENIENCE_WRAPPERS);
204 }
205 
206 /// Binding for C++ class [QDateEdit](https://doc.qt.io/qt-6/qdateedit.html).
207 class /+ Q_WIDGETS_EXPORT +/ QDateEdit : QDateTimeEdit
208 {
209     mixin(Q_OBJECT);
210     /+ Q_PROPERTY(QDate date READ date WRITE setDate NOTIFY userDateChanged USER true) +/
211 public:
212     /+ explicit +/this(QWidget parent = null);
213     /+ explicit +/this(QDate date, QWidget parent = null);
214     ~this();
215 
216 /+ Q_SIGNALS +/public:
217     @QSignal final void userDateChanged(QDate date);
218     mixin(CREATE_CONVENIENCE_WRAPPERS);
219 }
220 /+pragma(inline, true) QFlags!(QDateTimeEdit.Sections.enum_type) operator |(QDateTimeEdit.Sections.enum_type f1, QDateTimeEdit.Sections.enum_type f2)/+noexcept+/{return QFlags!(QDateTimeEdit.Sections.enum_type)(f1)|f2;}+/
221 /+pragma(inline, true) QFlags!(QDateTimeEdit.Sections.enum_type) operator |(QDateTimeEdit.Sections.enum_type f1, QFlags!(QDateTimeEdit.Sections.enum_type) f2)/+noexcept+/{return f2|f1;}+/
222 /+pragma(inline, true) QFlags!(QDateTimeEdit.Sections.enum_type) operator &(QDateTimeEdit.Sections.enum_type f1, QDateTimeEdit.Sections.enum_type f2)/+noexcept+/{return QFlags!(QDateTimeEdit.Sections.enum_type)(f1)&f2;}+/
223 /+pragma(inline, true) QFlags!(QDateTimeEdit.Sections.enum_type) operator &(QDateTimeEdit.Sections.enum_type f1, QFlags!(QDateTimeEdit.Sections.enum_type) f2)/+noexcept+/{return f2&f1;}+/
224 /+pragma(inline, true) void operator +(QDateTimeEdit.Sections.enum_type f1, QDateTimeEdit.Sections.enum_type f2)/+noexcept+/;+/
225 /+pragma(inline, true) void operator +(QDateTimeEdit.Sections.enum_type f1, QFlags!(QDateTimeEdit.Sections.enum_type) f2)/+noexcept+/;+/
226 /+pragma(inline, true) void operator +(int f1, QFlags!(QDateTimeEdit.Sections.enum_type) f2)/+noexcept+/;+/
227 /+pragma(inline, true) void operator -(QDateTimeEdit.Sections.enum_type f1, QDateTimeEdit.Sections.enum_type f2)/+noexcept+/;+/
228 /+pragma(inline, true) void operator -(QDateTimeEdit.Sections.enum_type f1, QFlags!(QDateTimeEdit.Sections.enum_type) f2)/+noexcept+/;+/
229 /+pragma(inline, true) void operator -(int f1, QFlags!(QDateTimeEdit.Sections.enum_type) f2)/+noexcept+/;+/
230 /+pragma(inline, true) QIncompatibleFlag operator |(QDateTimeEdit.Sections.enum_type f1, int f2)/+noexcept+/{return QIncompatibleFlag(int(f1)|f2);}+/
231 /+pragma(inline, true) void operator +(int f1, QDateTimeEdit.Sections.enum_type f2)/+noexcept+/;+/
232 /+pragma(inline, true) void operator +(QDateTimeEdit.Sections.enum_type f1, int f2)/+noexcept+/;+/
233 /+pragma(inline, true) void operator -(int f1, QDateTimeEdit.Sections.enum_type f2)/+noexcept+/;+/
234 /+pragma(inline, true) void operator -(QDateTimeEdit.Sections.enum_type f1, int f2)/+noexcept+/;+/
235 
236 /+ Q_DECLARE_OPERATORS_FOR_FLAGS(QDateTimeEdit::Sections) +/