QAlphaCloud  0.0.1
Qt bindings for Alpha Cloud
onedaypowermodel.h
1 /*
2  * SPDX-FileCopyrightText: 2023 Kai Uwe Broulik <ghqalpha@broulik.de>
3  * SPDX-License-Identifier: LGPL-2.1-or-later
4  */
5 
6 #pragma once
7 
8 #include <QAbstractListModel>
9 #include <QDate>
10 
11 #include <memory>
12 
13 #include "connector.h"
14 #include "qalphacloud.h"
15 #include "qalphacloud_export.h"
16 
17 namespace QAlphaCloud
18 {
19 
20 class OneDayPowerModelPrivate;
21 
29 class QALPHACLOUD_EXPORT OneDayPowerModel : public QAbstractListModel
30 {
31  Q_OBJECT
32 
36  Q_PROPERTY(QAlphaCloud::Connector *connector READ connector WRITE setConnector NOTIFY connectorChanged REQUIRED)
37 
38 
43  Q_PROPERTY(QString serialNumber READ serialNumber WRITE setSerialNumber NOTIFY serialNumberChanged REQUIRED)
49  Q_PROPERTY(QDate date READ date WRITE setDate RESET resetDate NOTIFY dateChanged)
50 
51 
62  Q_PROPERTY(bool cached READ cached WRITE setCached NOTIFY cachedChanged)
63 
64 
69  Q_PROPERTY(QDateTime fromDateTime READ fromDateTime NOTIFY fromDateTimeChanged)
75  Q_PROPERTY(QDateTime toDateTime READ toDateTime NOTIFY toDateTimeChanged)
76 
77 
82  Q_PROPERTY(int peakPhotovoltaic READ peakPhotovoltaic NOTIFY peakPhotovoltaicChanged)
88  Q_PROPERTY(int peakLoad READ peakLoad NOTIFY peakLoadChanged)
94  Q_PROPERTY(int peakGridFeed READ peakGridFeed NOTIFY peakGridFeedChanged)
100  Q_PROPERTY(int peakGridCharge READ peakGridCharge NOTIFY peakGridChargeChanged)
101 
102 
105  Q_PROPERTY(int count READ rowCount NOTIFY countChanged)
106 
107 
110  Q_PROPERTY(QAlphaCloud::RequestStatus status READ status NOTIFY statusChanged)
111 
112 
118  Q_PROPERTY(QAlphaCloud::ErrorCode error READ error NOTIFY errorChanged)
124  Q_PROPERTY(QString errorString READ errorString NOTIFY errorStringChanged)
125 
126 public:
133  explicit OneDayPowerModel(QObject *parent = nullptr);
141  OneDayPowerModel(Connector *connector, const QString &serialNumber, const QDate &date, QObject *parent = nullptr);
142  ~OneDayPowerModel() override;
143 
147  enum class Roles {
148  PhotovoltaicEnergy = Qt::UserRole,
149  CurrentLoad,
150  GridFeed,
151  GridCharge,
152  BatterySoc,
153  UploadTime,
154  RawJson = Qt::UserRole
155  + 99,
156  };
157  Q_ENUM(Roles)
158 
159  Q_REQUIRED_RESULT Connector *connector() const;
160  void setConnector(Connector *connector);
161  Q_SIGNAL void connectorChanged(Connector *connector);
162 
163  Q_REQUIRED_RESULT QString serialNumber() const;
164  void setSerialNumber(const QString &serialNumber);
165  Q_SIGNAL void serialNumberChanged(const QString &serialNumber);
166 
167  Q_REQUIRED_RESULT QDate date() const;
168  void setDate(const QDate &date);
169  void resetDate();
170  Q_SIGNAL void dateChanged(const QDate &date);
171 
172  Q_REQUIRED_RESULT bool cached() const;
173  void setCached(bool cached);
174  Q_SIGNAL void cachedChanged(bool cached);
175 
176  Q_REQUIRED_RESULT QDateTime fromDateTime() const;
177  Q_SIGNAL void fromDateTimeChanged(const QDateTime &fromDateTime);
178 
179  Q_REQUIRED_RESULT QDateTime toDateTime() const;
180  Q_SIGNAL void toDateTimeChanged(const QDateTime &toDateTime);
181 
182  Q_REQUIRED_RESULT int peakPhotovoltaic() const;
183  Q_SIGNAL void peakPhotovoltaicChanged(int peakPhotovoltaicChanged);
184 
185  Q_REQUIRED_RESULT int peakLoad() const;
186  Q_SIGNAL void peakLoadChanged(int peakLoad);
187 
188  Q_REQUIRED_RESULT int peakGridFeed() const;
189  Q_SIGNAL void peakGridFeedChanged(int peakGridFeed);
190 
191  Q_REQUIRED_RESULT int peakGridCharge() const;
192  Q_SIGNAL void peakGridChargeChanged(int peakGridCharge);
193 
194  QAlphaCloud::RequestStatus status() const;
195  Q_SIGNAL void statusChanged(QAlphaCloud::RequestStatus status);
196 
197  QAlphaCloud::ErrorCode error() const;
198  Q_SIGNAL void errorChanged(QAlphaCloud::ErrorCode error);
199 
200  QString errorString() const;
201  Q_SIGNAL void errorStringChanged(const QString &errorString);
202 
203  int rowCount(const QModelIndex &parent = QModelIndex()) const override;
204  QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
205  QHash<int, QByteArray> roleNames() const override;
206 
207 public Q_SLOTS:
208 
220  bool reload();
228  bool forceReload();
234  void reset();
235 
236 Q_SIGNALS:
237  void countChanged();
238 
239 private:
240  friend OneDayPowerModelPrivate;
241  std::unique_ptr<OneDayPowerModelPrivate> const d;
242 };
243 
244 } // namespace QAlphaCloud
API Connection.
Definition: connector.h:39
Historic power data for a day.
Definition: onedaypowermodel.h:30
Roles
The model roles.
Definition: onedaypowermodel.h:147
Utility namespace.
Definition: apirequest.cpp:24
RequestStatus
Request status.
Definition: qalphacloud.h:28
ErrorCode
Error codes.
Definition: qalphacloud.h:45