File indexing completed on 2024-05-19 05:55:48

0001 /*
0002  * SPDX-FileCopyrightText: 2020 Han Young <hanyoung@protonmail.com>
0003  * SPDX-FileCopyrightText: 2020 Devin Lin <espidev@gmail.com>
0004  * SPDX-FileCopyrightText: 2021 Nicolas Fella <nicolas.fella@gmx.de>
0005  *
0006  * SPDX-License-Identifier: GPL-2.0-or-later
0007  */
0008 
0009 #pragma once
0010 
0011 #include <KWeatherCore/DailyWeatherForecast>
0012 
0013 #include <QtGlobal>
0014 #include <qqmlregistration.h>
0015 
0016 class QAbstractSeries;
0017 class QSplineSeries;
0018 class QDateTimeAxis;
0019 class QValueAxis;
0020 
0021 class TemperatureChartData : public QObject
0022 {
0023     Q_OBJECT
0024     QML_ELEMENT
0025     Q_PROPERTY(QVariantList weatherData READ weatherData WRITE setWeatherData NOTIFY weatherDataChanged)
0026     Q_PROPERTY(double maxTempLimit READ maxTempLimit NOTIFY maxTempLimitChanged)
0027     Q_PROPERTY(double minTempLimit READ minTempLimit NOTIFY minTempLimitChanged)
0028 
0029 public:
0030     QVariantList weatherData() const;
0031     void setWeatherData(const QVariantList &weatherData);
0032 
0033     double maxTempLimit() const;
0034     double minTempLimit() const;
0035 
0036     Q_INVOKABLE void initSeries(QAbstractSeries *series);
0037     Q_INVOKABLE void initAxes(QObject *axisX, QObject *axisY);
0038 
0039 Q_SIGNALS:
0040     void weatherDataChanged();
0041     void maxTempLimitChanged();
0042     void minTempLimitChanged();
0043 
0044 private:
0045     void updateData();
0046 
0047     QVariantList m_weatherData;
0048     double m_maxTempLimit = 100;
0049     double m_minTempLimit = 0;
0050 
0051     QSplineSeries *m_series = nullptr;
0052     QDateTimeAxis *m_axisX = nullptr;
0053     QValueAxis *m_axisY = nullptr;
0054 };