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.calendarwidget; 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.map; 20 import qt.core.namespace; 21 import qt.core.object; 22 import qt.core.rect; 23 import qt.core.size; 24 import qt.gui.event; 25 import qt.gui.painter; 26 import qt.gui.textformat; 27 import qt.helpers; 28 import qt.widgets.widget; 29 30 /+ QT_REQUIRE_CONFIG(calendarwidget); +/ 31 32 33 extern(C++, class) struct QCalendarWidgetPrivate; 34 35 /// Binding for C++ class [QCalendarWidget](https://doc.qt.io/qt-6/qcalendarwidget.html). 36 class /+ Q_WIDGETS_EXPORT +/ QCalendarWidget : QWidget 37 { 38 mixin(Q_OBJECT); 39 /+ Q_ENUMS(Qt::DayOfWeek) 40 Q_PROPERTY(QDate selectedDate READ selectedDate WRITE setSelectedDate) 41 Q_PROPERTY(QDate minimumDate READ minimumDate WRITE setMinimumDate) 42 Q_PROPERTY(QDate maximumDate READ maximumDate WRITE setMaximumDate) 43 Q_PROPERTY(Qt::DayOfWeek firstDayOfWeek READ firstDayOfWeek WRITE setFirstDayOfWeek) 44 Q_PROPERTY(bool gridVisible READ isGridVisible WRITE setGridVisible) 45 Q_PROPERTY(SelectionMode selectionMode READ selectionMode WRITE setSelectionMode) 46 Q_PROPERTY(HorizontalHeaderFormat horizontalHeaderFormat READ horizontalHeaderFormat 47 WRITE setHorizontalHeaderFormat) 48 Q_PROPERTY(VerticalHeaderFormat verticalHeaderFormat READ verticalHeaderFormat 49 WRITE setVerticalHeaderFormat) 50 Q_PROPERTY(bool navigationBarVisible READ isNavigationBarVisible WRITE setNavigationBarVisible) 51 Q_PROPERTY(bool dateEditEnabled READ isDateEditEnabled WRITE setDateEditEnabled) 52 Q_PROPERTY(int dateEditAcceptDelay READ dateEditAcceptDelay WRITE setDateEditAcceptDelay) +/ 53 54 public: 55 enum HorizontalHeaderFormat { 56 NoHorizontalHeader, 57 SingleLetterDayNames, 58 ShortDayNames, 59 LongDayNames 60 } 61 /+ Q_ENUM(HorizontalHeaderFormat) +/ 62 63 enum VerticalHeaderFormat { 64 NoVerticalHeader, 65 ISOWeekNumbers 66 } 67 /+ Q_ENUM(VerticalHeaderFormat) +/ 68 69 enum SelectionMode { 70 NoSelection, 71 SingleSelection 72 } 73 /+ Q_ENUM(SelectionMode) +/ 74 75 /+ explicit +/this(QWidget parent = null); 76 ~this(); 77 78 /+ virtual +/ override QSize sizeHint() const; 79 /+ virtual +/ override QSize minimumSizeHint() const; 80 81 final QDate selectedDate() const; 82 83 final int yearShown() const; 84 final int monthShown() const; 85 86 final QDate minimumDate() const; 87 final void setMinimumDate(QDate date); 88 89 final QDate maximumDate() const; 90 final void setMaximumDate(QDate date); 91 92 final /+ Qt:: +/qt.core.namespace.DayOfWeek firstDayOfWeek() const; 93 final void setFirstDayOfWeek(/+ Qt:: +/qt.core.namespace.DayOfWeek dayOfWeek); 94 95 final bool isNavigationBarVisible() const; 96 final bool isGridVisible() const; 97 98 final QCalendar calendar() const; 99 final void setCalendar(QCalendar calendar); 100 101 final SelectionMode selectionMode() const; 102 final void setSelectionMode(SelectionMode mode); 103 104 final HorizontalHeaderFormat horizontalHeaderFormat() const; 105 final void setHorizontalHeaderFormat(HorizontalHeaderFormat format); 106 107 final VerticalHeaderFormat verticalHeaderFormat() const; 108 final void setVerticalHeaderFormat(VerticalHeaderFormat format); 109 110 final QTextCharFormat headerTextFormat() const; 111 final void setHeaderTextFormat(ref const(QTextCharFormat) format); 112 113 final QTextCharFormat weekdayTextFormat(/+ Qt:: +/qt.core.namespace.DayOfWeek dayOfWeek) const; 114 final void setWeekdayTextFormat(/+ Qt:: +/qt.core.namespace.DayOfWeek dayOfWeek, ref const(QTextCharFormat) format); 115 116 final QMap!(QDate, QTextCharFormat) dateTextFormat() const; 117 final QTextCharFormat dateTextFormat(QDate date) const; 118 final void setDateTextFormat(QDate date, ref const(QTextCharFormat) format); 119 120 final bool isDateEditEnabled() const; 121 final void setDateEditEnabled(bool enable); 122 123 final int dateEditAcceptDelay() const; 124 final void setDateEditAcceptDelay(int delay); 125 126 protected: 127 override bool event(QEvent event); 128 override bool eventFilter(QObject watched, QEvent event); 129 override void mousePressEvent(QMouseEvent event); 130 override void resizeEvent(QResizeEvent event); 131 override void keyPressEvent(QKeyEvent event); 132 133 /+ virtual +/ void paintCell(QPainter* painter, ref const(QRect) rect, QDate date) const; 134 final void updateCell(QDate date); 135 final void updateCells(); 136 137 public /+ Q_SLOTS +/: 138 @QSlot final void setSelectedDate(QDate date); 139 @QSlot final void setDateRange(QDate min, QDate max); 140 @QSlot final void setCurrentPage(int year, int month); 141 @QSlot final void setGridVisible(bool show); 142 @QSlot final void setNavigationBarVisible(bool visible); 143 @QSlot final void showNextMonth(); 144 @QSlot final void showPreviousMonth(); 145 @QSlot final void showNextYear(); 146 @QSlot final void showPreviousYear(); 147 @QSlot final void showSelectedDate(); 148 @QSlot final void showToday(); 149 150 /+ Q_SIGNALS +/public: 151 @QSignal final void selectionChanged(); 152 @QSignal final void clicked(QDate date); 153 @QSignal final void activated(QDate date); 154 @QSignal final void currentPageChanged(int year, int month); 155 156 private: 157 /+ Q_DECLARE_PRIVATE(QCalendarWidget) +/ 158 /+ Q_DISABLE_COPY(QCalendarWidget) +/ 159 160 /+ Q_PRIVATE_SLOT(d_func(), void _q_slotShowDate(QDate date)) 161 Q_PRIVATE_SLOT(d_func(), void _q_slotChangeDate(QDate date)) 162 Q_PRIVATE_SLOT(d_func(), void _q_slotChangeDate(QDate date, bool changeMonth)) 163 Q_PRIVATE_SLOT(d_func(), void _q_editingFinished()) 164 Q_PRIVATE_SLOT(d_func(), void _q_prevMonthClicked()) 165 Q_PRIVATE_SLOT(d_func(), void _q_nextMonthClicked()) 166 Q_PRIVATE_SLOT(d_func(), void _q_yearEditingFinished()) 167 Q_PRIVATE_SLOT(d_func(), void _q_yearClicked()) 168 Q_PRIVATE_SLOT(d_func(), void _q_monthChanged(QAction *act)) +/ 169 170 mixin(CREATE_CONVENIENCE_WRAPPERS); 171 } 172