File indexing completed on 2024-04-28 17:05:12

0001 // SPDX-FileCopyrightText: 2022 Felipe Kinoshita <kinofhek@gmail.com>
0002 // SPDX-License-Identifier: LGPL-2.1-or-later
0003 
0004 #pragma once
0005 
0006 #include <QObject>
0007 #include <QJsonObject>
0008 #include <QNetworkAccessManager>
0009 #include <QQmlEngine>
0010 
0011 class Controller : public QObject
0012 {
0013     Q_OBJECT
0014     QML_ELEMENT
0015     QML_SINGLETON
0016 
0017     Q_PROPERTY(QJsonObject data MEMBER m_data NOTIFY dataChanged)
0018 
0019 public:
0020     explicit Controller(QObject* parent = nullptr);
0021 
0022     Q_INVOKABLE void fetch(QUrl url, QJsonObject options);
0023 
0024     QJsonObject data()
0025     {
0026         return m_data;
0027     }
0028     Q_INVOKABLE void setData(QJsonObject data)
0029     {
0030         m_data = data;
0031         Q_EMIT dataChanged();
0032     }
0033     Q_SIGNAL void dataChanged();
0034 
0035     Q_SIGNAL void response(QString);
0036     Q_SIGNAL void status(int statusCode, QString statusText);
0037 
0038 private:
0039     QNetworkAccessManager m_manager;
0040     QJsonObject m_data;
0041 };