5#include <QtQml/qqmlregistration.h>
7#include "qml_material/export.hpp"
11class QML_MATERIAL_API DateValidator :
public QValidator {
14 Q_PROPERTY(QLocale locale READ locale WRITE setLocale NOTIFY localeChanged FINAL)
16 QString dateFormat READ dateFormat WRITE setDateFormat NOTIFY dateFormatChanged FINAL)
17 Q_PROPERTY(QDateTime minDate READ minDate WRITE setMinDate NOTIFY minDateChanged FINAL)
18 Q_PROPERTY(QString inputFormat READ inputFormat NOTIFY inputFormatChanged FINAL)
19 Q_PROPERTY(QDateTime maxDate READ maxDate WRITE setMaxDate NOTIFY maxDateChanged FINAL)
21 explicit DateValidator(QObject* parent =
nullptr);
22 QString inputFormat()
const;
23 void setLocale(
const QLocale&);
24 QString dateFormat()
const {
return m_format; }
25 void setDateFormat(
const QString&);
26 QDateTime minDate()
const {
return m_min; }
27 void setMinDate(
const QDateTime&);
28 QDateTime maxDate()
const {
return m_max; }
29 void setMaxDate(
const QDateTime&);
30 State validate(QString&,
int&)
const override;
31 Q_INVOKABLE QDateTime parse(
const QString&)
const;
32 Q_INVOKABLE QString formatDate(
const QDateTime&)
const;
33 Q_INVOKABLE
bool sameDay(
const QDateTime&,
const QDateTime&)
const;
34 Q_INVOKABLE
bool monthEnabled(
int year,
int month,
const QDateTime& minimum,
35 const QDateTime& maximum)
const;
36 Q_INVOKABLE
bool dateEnabled(
const QDateTime&,
const QDateTime& minimum,
37 const QDateTime& maximum)
const;
38 Q_INVOKABLE
bool rangeValid(
const QDateTime& start,
const QDateTime& end,
39 const QDateTime& minimum,
const QDateTime& maximum)
const;
40 Q_INVOKABLE
bool insideRange(
const QDateTime& date,
const QDateTime& start,
41 const QDateTime& end)
const;
42 Q_SIGNAL
void localeChanged();
43 Q_SIGNAL
void dateFormatChanged();
44 Q_SIGNAL
void inputFormatChanged();
45 Q_SIGNAL
void minDateChanged();
46 Q_SIGNAL
void maxDateChanged();
49 QString m_format = QStringLiteral(
"yyyy-MM-dd");
50 QDateTime m_min, m_max;
51 mutable std::optional<QString> m_cachedText;
52 mutable QDateTime m_cachedDate;