From 3d19fd72716561a0322ba0acc5c94aac9f161e9d Mon Sep 17 00:00:00 2001 From: Orangerot Date: Fri, 16 Aug 2024 15:40:37 +0200 Subject: feat(Sport): select Discipline --- src/main/main.cpp | 40 +--------------------------------------- src/model/Sport.cpp | 20 +++++++++++++++----- src/model/Sport.h | 10 +++++++++- 3 files changed, 25 insertions(+), 45 deletions(-) (limited to 'src') diff --git a/src/main/main.cpp b/src/main/main.cpp index 9f175ac..7f4e9f7 100644 --- a/src/main/main.cpp +++ b/src/main/main.cpp @@ -30,49 +30,11 @@ int main(int argc, char *argv[]) QQmlContext *objectContext = new QQmlContext(engine.rootContext()); SportModel model; - model.request(); + model.request("ARC"); objectContext->setContextProperty("sports", &model); QQmlComponent component(&engine, "qrc:/qt/qml/itat/res/gui/application.qml"); QObject *object = component.create(objectContext); - // ... delete object and objectContext when necessary - - - // create custom temporary event loop on stack - QEventLoop eventLoop; - - // "quit()" the event-loop, when the network request "finished()" - QNetworkAccessManager mgr; - QObject::connect(&mgr, SIGNAL(finished(QNetworkReply*)), &eventLoop, SLOT(quit())); - - QString endpoint { "https://sph-s-api.olympics.com/summer/schedules/api/ENG/schedule/discipline/ARC" }; - - // the HTTP request - QNetworkRequest req( (QUrl( endpoint )) ); - QNetworkReply *reply = mgr.get(req); - eventLoop.exec(); // blocks stack until "finished()" has been called - - if (reply->error() == QNetworkReply::NoError) { - //success - - QString strReply = (QString)reply->readAll(); - - //parse json - // qDebug() << "Response:" << strReply; - QJsonDocument jsonResponse = QJsonDocument::fromJson(strReply.toUtf8()); - - QJsonObject jsonObj = jsonResponse.object(); - - qDebug() << "Competitor:" << jsonObj["units"][0]["competitors"][0]["name"].toString(); - - delete reply; - } - else { - //failure - qDebug() << "Failure" <errorString(); - delete reply; - } - return app.exec(); } diff --git a/src/model/Sport.cpp b/src/model/Sport.cpp index 8c4902b..a21e21d 100644 --- a/src/model/Sport.cpp +++ b/src/model/Sport.cpp @@ -22,7 +22,7 @@ #include namespace { - const QString &k_requestUrl = "https://sph-s-api.olympics.com/summer/schedules/api/ENG/schedule/discipline/ARC"; + const QString &k_requestUrl = "https://sph-s-api.olympics.com/summer/schedules/api/ENG/schedule/discipline/"; } SportModel::SportModel(QObject *parent) : QAbstractListModel(parent) { @@ -58,8 +58,18 @@ QHash SportModel::roleNames() const { return names; } -void SportModel::request() { - m_reply = m_networkManager.get(QNetworkRequest( k_requestUrl )); +QString SportModel::discipline() const { + return m_discipline; +} + +void SportModel::setDiscipline(const QString &discipline) { + m_discipline = discipline; +} + + +void SportModel::request(QString discipline) { + m_discipline = discipline; + m_reply = m_networkManager.get(QNetworkRequest( k_requestUrl + m_discipline)); qDebug() << m_reply; connect(m_reply, &QNetworkReply::finished, this, &SportModel::parseData); } @@ -68,8 +78,8 @@ void SportModel::parseData() { if (m_reply->error() == QNetworkReply::NoError) { beginResetModel(); - // qDeleteAll(m_sportList); - // m_sportList.clear(); + qDeleteAll(m_sportList); + m_sportList.clear(); diff --git a/src/model/Sport.h b/src/model/Sport.h index be74a51..01798fb 100644 --- a/src/model/Sport.h +++ b/src/model/Sport.h @@ -3,6 +3,7 @@ #include #include +#include #include #include @@ -15,6 +16,8 @@ using namespace std; class SportModel : public QAbstractListModel { Q_OBJECT + Q_PROPERTY(QString discipline READ discipline WRITE setDiscipline); + public: enum Role { EventName = Qt::UserRole + 1, @@ -26,12 +29,17 @@ class SportModel : public QAbstractListModel { virtual int rowCount(const QModelIndex &parent) const override; virtual QVariant data(const QModelIndex &index, int role) const override; virtual QHash roleNames() const override; + + + QString discipline() const; + void setDiscipline(const QString &discipline); public slots: - void request(); + void request(QString discipline); void parseData(); private: QList m_sportList; + QString m_discipline; QNetworkAccessManager m_networkManager; QNetworkReply *m_reply = nullptr; }; -- cgit v1.2.3