/*
Copyright (C) 2024 Rohith Namboothiri
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program 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 program. If not, see .
*/
#ifndef VUIDUPDATER_H
#define VUIDUPDATER_H
#include
#include // For debugging purposes
#include
#include
#include
#include
#include
#include
class VUIDUpdater : public QObject
{
Q_OBJECT
Q_PROPERTY(QString fetchedFirstName READ fetchedFirstName WRITE setFetchedFirstName NOTIFY fetchedFirstNameChanged)
Q_PROPERTY(QString fetchedCountry READ fetchedCountry WRITE setFetchedCountry NOTIFY fetchedCountryChanged)
public:
explicit VUIDUpdater(QObject *parent = nullptr) : QObject(parent), networkAccessManager(new QNetworkAccessManager(this)) {
connect(networkAccessManager, &QNetworkAccessManager::finished, this, &VUIDUpdater::onNetworkReply);
}
Q_INVOKABLE void fetchFirstNameFromAPI(unsigned int data1) {
if (data1) {
QUrl url("https://radioid.net/api/dmr/user/?id=" + QString::number(data1));
QNetworkRequest request(url);
networkAccessManager->get(request);
}
}
Q_INVOKABLE QString fetchedFirstName() const { return m_fetchedFirstName; }
Q_INVOKABLE QString fetchedCountry() const { return m_fetchedCountry; }
/*
Q_INVOKABLE void setFetchedFirstName(const QString &firstName) {
if (m_fetchedFirstName != firstName) {
m_fetchedFirstName = firstName;
emit fetchedFirstNameChanged(firstName);
qDebug() << "Emitting fetchedFirstNameChanged signal with name:" << firstName;
}
}
Q_INVOKABLE void setFetchedCountry(const QString &country) {
if (m_fetchedCountry != country) {
m_fetchedCountry = country;
emit fetchedCountryChanged(country);
qDebug() << "Emitting fetchedCountryChanged signal with country:" << country;
}
} */
Q_INVOKABLE void setFetchedFirstName(const QString &firstName) {
m_fetchedFirstName = firstName;
emit fetchedFirstNameChanged(firstName);
qDebug() << "Emitting fetchedFirstNameChanged signal with name:" << firstName;
}
Q_INVOKABLE void setFetchedCountry(const QString &country) {
QString modifiedCountry = country;
if (country == "United States") {
modifiedCountry = "US";
} else if (country == "United Kingdom") {
modifiedCountry = "UK";
}
m_fetchedCountry = modifiedCountry;
emit fetchedCountryChanged(modifiedCountry);
qDebug() << "Emitting fetchedCountryChanged signal with country:" << modifiedCountry;
}
signals:
void fetchedFirstNameChanged(const QString &firstName);
void fetchedCountryChanged(const QString &country);
private slots:
void onNetworkReply(QNetworkReply *reply) {
if (reply->error() == QNetworkReply::NoError) {
QByteArray response_data = reply->readAll();
QJsonDocument json = QJsonDocument::fromJson(response_data);
if (!json.isNull()) {
QJsonObject jsonObject = json.object();
QJsonArray results = jsonObject["results"].toArray();
if (!results.isEmpty()) {
QJsonObject firstResult = results.first().toObject();
QString firstName = firstResult["fname"].toString();
QString country = firstResult["country"].toString();
qDebug() << "First name fetched from API:" << firstName;
qDebug() << "Country fetched from API:" << country;
setFetchedFirstName(firstName); // Update the first name property
setFetchedCountry(country); // Update the country property
}
}
} else {
qDebug() << "Network error:" << reply->errorString();
}
reply->deleteLater();
}
private:
QString m_fetchedFirstName;
QString m_fetchedCountry;
QNetworkAccessManager *networkAccessManager;
};
#endif // VUIDUPDATER_H