KWidgetsAddons

kdatepicker.h
1 /* -*- C++ -*-
2  This file is part of the KDE libraries
3  SPDX-FileCopyrightText: 1997 Tim D. Gilman <[email protected]>
4  SPDX-FileCopyrightText: 1998-2001 Mirko Boehm <[email protected]>
5  SPDX-FileCopyrightText: 2007 John Layt <[email protected]>
6 
7  SPDX-License-Identifier: LGPL-2.0-or-later
8 */
9 
10 #ifndef KDATEPICKER_H
11 #define KDATEPICKER_H
12 
13 #include <kwidgetsaddons_export.h>
14 
15 #include <QFrame>
16 #include <memory>
17 
18 class QLineEdit;
19 class KDateTable;
20 
21 /**
22  * @class KDatePicker kdatepicker.h KDatePicker
23  *
24  * @short A date selection widget.
25  *
26  * Provides a widget for calendar date input.
27  *
28  * Different from the previous versions, it now emits two types of signals,
29  * either dateSelected() or dateEntered() (see documentation for both signals).
30  *
31  * A line edit has been added in the newer versions to allow the user
32  * to select a date directly by entering numbers like 19990101
33  * or 990101.
34  *
35  * \image html kdatepicker.png "KDatePicker Widget"
36  *
37  * @author Tim Gilman, Mirko Boehm
38  */
39 class KWIDGETSADDONS_EXPORT KDatePicker : public QFrame
40 {
41  Q_OBJECT
42  Q_PROPERTY(QDate date READ date WRITE setDate NOTIFY dateChanged USER true)
43  Q_PROPERTY(bool closeButton READ hasCloseButton WRITE setCloseButton)
44  Q_PROPERTY(int fontSize READ fontSize WRITE setFontSize)
45 
46 public:
47  /**
48  * The constructor. The current date will be displayed initially.
49  */
50  explicit KDatePicker(QWidget *parent = nullptr);
51 
52  /**
53  * The constructor. The given date will be displayed initially.
54  */
55  explicit KDatePicker(const QDate &dt, QWidget *parent = nullptr);
56 
57  /**
58  * The destructor.
59  */
60  ~KDatePicker() override;
61 
62  /**
63  * The size hint for date pickers. The size hint recommends the
64  * minimum size of the widget so that all elements may be placed
65  * without clipping. This sometimes looks ugly, so when using the
66  * size hint, try adding 28 to each of the reported numbers of
67  * pixels.
68  */
69  QSize sizeHint() const override;
70 
71  /**
72  * Sets the date.
73  *
74  * @returns @p false and does not change anything if the date given is invalid.
75  */
76  bool setDate(const QDate &date);
77 
78  /**
79  * @returns the selected date.
80  */
81  const QDate &date() const;
82 
83  /**
84  * Sets the font size of the widgets elements.
85  */
86  void setFontSize(int);
87 
88  /**
89  * Returns the font size of the widget elements.
90  */
91  int fontSize() const;
92 
93  /**
94  * By calling this method with @p enable = true, KDatePicker will show
95  * a little close-button in the upper button-row. Clicking the
96  * close-button will cause the KDatePicker's topLevelWidget()'s close()
97  * method being called. This is mostly useful for toplevel datepickers
98  * without a window manager decoration.
99  * @see hasCloseButton
100  */
101  void setCloseButton(bool enable);
102 
103  /**
104  * @returns true if a KDatePicker shows a close-button.
105  * @see setCloseButton
106  */
107  bool hasCloseButton() const;
108 
109 protected:
110  /// to catch move keyEvents when QLineEdit has keyFocus
111  bool eventFilter(QObject *o, QEvent *e) override;
112  /// the resize event
113  void resizeEvent(QResizeEvent *) override;
114  void changeEvent(QEvent *event) override;
115 
116 protected Q_SLOTS:
117  void dateChangedSlot(const QDate &date);
118  void tableClickedSlot();
119  void monthForwardClicked();
120  void monthBackwardClicked();
121  void yearForwardClicked();
122  void yearBackwardClicked();
123  void selectMonthClicked();
124  void selectYearClicked();
125  void uncheckYearSelector();
126  void lineEnterPressed();
127  void todayButtonClicked();
128  void weekSelected(int);
129 
130 Q_SIGNALS:
131  /**
132  * This signal is emitted each time the selected date is changed.
133  * Usually, this does not mean that the date has been entered,
134  * since the date also changes, for example, when another month is
135  * selected.
136  * @see dateSelected
137  */
138  void dateChanged(const QDate &date);
139 
140  /**
141  * This signal is emitted each time a day has been selected by
142  * clicking on the table (hitting a day in the current month). It
143  * has the same meaning as dateSelected() in older versions of
144  * KDatePicker.
145  */
146  void dateSelected(const QDate &date);
147 
148  /**
149  * This signal is emitted when enter is pressed and a VALID date
150  * has been entered before into the line edit. Connect to both
151  * dateEntered() and dateSelected() to receive all events where the
152  * user really enters a date.
153  */
154  void dateEntered(const QDate &date);
155 
156  /**
157  * This signal is emitted when the day has been selected by
158  * clicking on it in the table.
159  */
160  void tableClicked();
161 
162 private:
163  KDateTable *dateTable() const;
164  void initWidget(const QDate &date);
165 
166 private:
167  friend class KDatePickerPrivate;
168  std::unique_ptr<class KDatePickerPrivate> const d;
169 };
170 
171 #endif // KDATEPICKER_H
virtual QSize sizeHint() const const override
virtual void changeEvent(QEvent *ev) override
virtual bool eventFilter(QObject *watched, QEvent *event)
Q_PROPERTY(...)
A date selection widget.
Definition: kdatepicker.h:39
virtual void resizeEvent(QResizeEvent *event)
This file is part of the KDE documentation.
Documentation copyright © 1996-2021 The KDE developers.
Generated on Sun Apr 18 2021 22:44:14 by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.