diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/main.cpp | 40 | ||||
| -rw-r--r-- | src/model/Sport.cpp | 20 | ||||
| -rw-r--r-- | src/model/Sport.h | 10 | 
3 files changed, 25 insertions, 45 deletions
| 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" <<reply->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 <QString>  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<int, QByteArray> 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 <QAbstractListModel>  #include <QNetworkAccessManager> +#include <qcontainerfwd.h>  #include <set>  #include <QJsonObject> @@ -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<int, QByteArray> roleNames() const override; + + +    QString discipline() const; +    void setDiscipline(const QString &discipline);    public slots: -    void request(); +    void request(QString discipline);      void parseData();    private:      QList<EventInfo*> m_sportList; +    QString m_discipline;      QNetworkAccessManager m_networkManager;      QNetworkReply *m_reply = nullptr;  }; | 
