-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtemperatureschedule.h
145 lines (120 loc) · 5.3 KB
/
temperatureschedule.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Copyright 2013 - 2022, nymea GmbH
* Contact: [email protected]
*
* This file is part of nymea.
* This project including source code and documentation is protected by
* copyright law, and remains the property of nymea GmbH. All rights, including
* reproduction, publication, editing and translation, are reserved. The use of
* this project is subject to the terms of a license agreement to be concluded
* with nymea GmbH in accordance with the terms of use of nymea GmbH, available
* under https://nymea.io/license
*
* GNU General Public License Usage
* Alternatively, this project may be redistributed and/or modified under the
* terms of the GNU General Public License as published by the Free Software
* Foundation, GNU version 3. This project is distributed in the hope that it
* will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
* Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* this project. If not, see <https://www.gnu.org/licenses/>.
*
* For any further details and any questions please contact us under
* [email protected] or see our FAQ/Licensing Information on
* https://nymea.io/license/faq
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#ifndef TEMPERATURESCHEDULE_H
#define TEMPERATURESCHEDULE_H
#include <QObject>
#include <QTime>
#include <QVariant>
#include <QDebug>
class TemperatureSchedule
{
Q_GADGET
Q_PROPERTY(QTime startTime READ startTime WRITE setStartTime)
Q_PROPERTY(QTime endTime READ endTime WRITE setEndTime)
Q_PROPERTY(double temperature READ temperature WRITE setTemperature)
public:
TemperatureSchedule();
TemperatureSchedule(const QTime &startTime, const QTime &endTime, double temperature);
QTime startTime() const;
void setStartTime(const QTime &startTime);
QTime endTime() const;
void setEndTime(const QTime &endTime);
double temperature() const;
void setTemperature(double temperature);
private:
QTime m_startTime;
QTime m_endTime;
double m_temperature = 0;
};
Q_DECLARE_METATYPE(TemperatureSchedule)
class TemperatureDaySchedule: public QList<TemperatureSchedule>
{
Q_GADGET
Q_PROPERTY(int count READ count)
public:
TemperatureDaySchedule() = default;
TemperatureDaySchedule(const QList<TemperatureSchedule> &other);
Q_INVOKABLE QVariant get(int index) const;
Q_INVOKABLE void put(const QVariant &variant);
};
Q_DECLARE_METATYPE(QList<TemperatureSchedule>)
Q_DECLARE_METATYPE(TemperatureDaySchedule)
class TemperatureWeekSchedule: public QList<TemperatureDaySchedule>
{
Q_GADGET
Q_PROPERTY(int count READ count)
public:
static TemperatureWeekSchedule create();
TemperatureWeekSchedule() = default;
Q_INVOKABLE QVariant get(int index) const;
Q_INVOKABLE void put(const QVariant &variant);
};
Q_DECLARE_METATYPE(QList<TemperatureDaySchedule>)
Q_DECLARE_METATYPE(TemperatureWeekSchedule)
//class TemperatureWeekSchedules
//{
// Q_GADGET
// Q_PROPERTY(TemperatureSchedules monday READ monday WRITE setMonday)
// Q_PROPERTY(TemperatureSchedules tuesday READ tuesday WRITE setTuesday)
// Q_PROPERTY(TemperatureSchedules wednesday READ wednesday WRITE setWednesday)
// Q_PROPERTY(TemperatureSchedules thursday READ thursday WRITE setThursday)
// Q_PROPERTY(TemperatureSchedules friday READ friday WRITE setFriday)
// Q_PROPERTY(TemperatureSchedules saturday READ saturday WRITE setSaturday)
// Q_PROPERTY(TemperatureSchedules sunday READ sunday WRITE setSunday)
//public:
// TemperatureWeekSchedules() = default;
// TemperatureSchedules monday() const { return m_monday; }
// void setMonday(const TemperatureSchedules &monday) { m_monday = monday; }
// TemperatureSchedules tuesday() const { return m_tuesday; }
// void setTuesday(const TemperatureSchedules &tuesday) { m_tuesday = tuesday; }
// TemperatureSchedules wednesday() const { return m_wednesday; }
// void setWednesday(const TemperatureSchedules &wednesday) { m_wednesday = wednesday; }
// TemperatureSchedules thursday() const { return m_thursday; }
// void setThursday(const TemperatureSchedules &thursday) { m_thursday = thursday; }
// TemperatureSchedules friday() const { return m_friday; }
// void setFriday(const TemperatureSchedules &friday) { m_friday = friday; }
// TemperatureSchedules saturday() const { return m_saturday; }
// void setSaturday(const TemperatureSchedules &satuday) { m_saturday = satuday; }
// TemperatureSchedules sunday() const { return m_sunday; }
// void setSunday(const TemperatureSchedules &sunday) { m_sunday = sunday; }
//private:
// TemperatureSchedules m_monday;
// TemperatureSchedules m_tuesday;
// TemperatureSchedules m_wednesday;
// TemperatureSchedules m_thursday;
// TemperatureSchedules m_friday;
// TemperatureSchedules m_saturday;
// TemperatureSchedules m_sunday;
//};
//Q_DECLARE_METATYPE(TemperatureWeekSchedules)
QDebug operator<<(QDebug debug, const TemperatureSchedule &schedule);
QDebug operator<<(QDebug debug, const TemperatureDaySchedule &daySchedule);
QDebug operator<<(QDebug debug, const TemperatureWeekSchedule &weekSchedules);
#endif // TEMPERATURESCHEDULE_H