16 Q_PROPERTY(
int value READ value WRITE setValue NOTIFY changed FINAL)
17 Q_PROPERTY(
int hour READ hour WRITE setHour NOTIFY changed FINAL)
18 Q_PROPERTY(
int minute READ minute WRITE setMinute NOTIFY changed FINAL)
19 Q_PROPERTY(QLocale locale READ locale WRITE setLocale NOTIFY changed FINAL)
20 Q_PROPERTY(HourFormat hourFormat READ hourFormat WRITE setHourFormat NOTIFY changed FINAL)
21 Q_PROPERTY(
bool is24Hour READ is24Hour NOTIFY changed FINAL)
22 Q_PROPERTY(Selection selection READ selection WRITE setSelection NOTIFY changed FINAL)
23 Q_PROPERTY(DisplayMode displayMode READ displayMode WRITE setDisplayMode NOTIFY changed FINAL)
24 Q_PROPERTY(
int period READ period WRITE setPeriod NOTIFY changed FINAL)
25 Q_PROPERTY(QString hourText READ hourText NOTIFY changed FINAL)
26 Q_PROPERTY(QString minuteText READ minuteText NOTIFY changed FINAL)
27 Q_PROPERTY(
bool hourAcceptable READ hourAcceptable NOTIFY changed FINAL)
28 Q_PROPERTY(
bool minuteAcceptable READ minuteAcceptable NOTIFY changed FINAL)
29 Q_PROPERTY(
bool acceptableInput READ acceptableInput NOTIFY changed FINAL)
30 Q_PROPERTY(QString displayText READ displayText NOTIFY changed FINAL)
31 Q_PROPERTY(QString inputFormat READ inputFormat NOTIFY changed FINAL)
32 Q_PROPERTY(QString amText READ amText NOTIFY changed FINAL)
33 Q_PROPERTY(QString pmText READ pmText NOTIFY changed FINAL)
54 explicit TimeState(QObject* parent =
nullptr);
55 int value()
const {
return m_data.value().value; }
56 int hour()
const {
return value() / 60; }
57 int minute()
const {
return value() % 60; }
61 QLocale locale()
const {
return m_data.value().locale; }
62 void setLocale(
const QLocale&);
63 HourFormat hourFormat()
const {
return m_data.value().format; }
64 void setHourFormat(HourFormat);
65 bool is24Hour()
const;
66 Selection selection()
const {
return m_data.value().selection; }
67 void setSelection(Selection);
68 DisplayMode displayMode()
const {
return m_data.value().mode; }
69 void setDisplayMode(DisplayMode);
70 int period()
const {
return hour() >= 12 ? 1 : 0; }
72 QString hourText()
const {
return m_data.value().hourText; }
73 QString minuteText()
const {
return m_data.value().minuteText; }
74 bool hourAcceptable()
const {
return m_data.value().draftHour >= 0; }
75 bool minuteAcceptable()
const {
return m_data.value().draftMinute >= 0; }
76 bool acceptableInput()
const {
return hourAcceptable() && minuteAcceptable(); }
77 QString displayText()
const {
return formatTime(value()); }
78 QString inputFormat()
const;
79 QString amText()
const {
return locale().amText(); }
80 QString pmText()
const {
return locale().pmText(); }
81 Q_INVOKABLE
bool setTime(
int hour,
int minute);
82 Q_INVOKABLE
void editHour(
const QString&);
83 Q_INVOKABLE
void editMinute(
const QString&);
84 Q_INVOKABLE
void discardInput();
85 Q_INVOKABLE
bool commitInput();
86 Q_INVOKABLE
void selectDial(
int value,
bool complete =
false);
87 Q_INVOKABLE
void step(
int delta);
88 Q_INVOKABLE QString number(
int value,
bool padded =
false)
const;
89 Q_INVOKABLE QString formatTime(
int value)
const;
90 Q_INVOKABLE
int parseText(
const QString&)
const;
91 Q_SIGNAL
void changed();
92 Q_SIGNAL
void modified(
int value);
98 HourFormat format = LocaleFormat;
99 Selection selection = Hours;
100 DisplayMode mode = Clock;
101 QString hourText, minuteText;
102 int draftHour = 0, draftMinute = 0;
103 bool operator==(
const Data&)
const =
default;
105 static bool uses24Hour(
const Data&);
106 static void formatInput(Data&);
107 void edit(
const QString&,
bool hour);
108 void publish(Data,
bool user =
false);
109 QProperty<Data> m_data;