diff options
Diffstat (limited to 'src/model')
-rw-r--r-- | src/model/EventInfo.cpp | 22 | ||||
-rw-r--r-- | src/model/EventInfo.h | 28 | ||||
-rw-r--r-- | src/model/Sport.cpp | 29 | ||||
-rw-r--r-- | src/model/Sport.h | 8 |
4 files changed, 77 insertions, 10 deletions
diff --git a/src/model/EventInfo.cpp b/src/model/EventInfo.cpp new file mode 100644 index 0000000..e9ecd46 --- /dev/null +++ b/src/model/EventInfo.cpp @@ -0,0 +1,22 @@ +#include <QObject> +#include "EventInfo.h" + +EventInfo::EventInfo(QObject *parent) : QObject(parent) { +} + +QString EventInfo::eventName() const { + return m_eventName; +} + +void EventInfo::setEventName(const QString &newEventName) { + m_eventName = newEventName; +} + +QList<QString> EventInfo::competitors() const { + return m_competitors; +} + +void EventInfo::setCompetitors(const QList<QString> &newCompetitors) { + m_competitors = newCompetitors; +} + diff --git a/src/model/EventInfo.h b/src/model/EventInfo.h new file mode 100644 index 0000000..7f937b2 --- /dev/null +++ b/src/model/EventInfo.h @@ -0,0 +1,28 @@ +#ifndef ITAT_CHALLANGE_OLYMPICS_EVENT_H +#define ITAT_CHALLANGE_OLYMPICS_EVENT_H + +#include <QObject> +#include <qqml.h> + +class EventInfo : QObject { + Q_OBJECT + // QML_ELEMENT + + Q_PROPERTY(QString eventName READ eventName WRITE setEventName); + Q_PROPERTY(QList<QString> competitors READ competitors WRITE setCompetitors); + + public: + explicit EventInfo(QObject *parent = nullptr); + + QString eventName() const; + void setEventName(const QString &newEventName); + + QList<QString> competitors() const; + void setCompetitors(const QList<QString> &newCompetitors); + + private: + QString m_eventName; + QList<QString> m_competitors; +}; + +#endif diff --git a/src/model/Sport.cpp b/src/model/Sport.cpp index 38173ce..8c4902b 100644 --- a/src/model/Sport.cpp +++ b/src/model/Sport.cpp @@ -1,4 +1,5 @@ #include "Sport.h" +#include "Competitor.h" // categories #include <QNetworkReply> @@ -34,12 +35,15 @@ int SportModel::rowCount(const QModelIndex &parent) const { QVariant SportModel::data(const QModelIndex &index, int role) const { if (index.isValid() && index.row() >= 0 && index.row() < m_sportList.size()) { - QString sportName = m_sportList[index.row()]; + EventInfo *event = m_sportList[index.row()]; - return sportName; - // switch ((Role) role) { - // case SportName: - // } + switch ((Role) role) { + case EventName: + return event->eventName(); + + case Competitors: + return event->competitors(); + } } return {}; @@ -48,7 +52,8 @@ QVariant SportModel::data(const QModelIndex &index, int role) const { QHash<int, QByteArray> SportModel::roleNames() const { QHash<int, QByteArray> names; - names[SportName] = "sportName"; + names[EventName] = "eventName"; + names[Competitors] = "competitors"; return names; } @@ -77,8 +82,18 @@ void SportModel::parseData() { QJsonArray sports = jsonDocument["units"].toArray(); for (const auto &sport : sports) { QJsonObject entry = sport.toObject(); + + EventInfo *event = new EventInfo(this); + event->setEventName(entry["eventUnitName"].toString()); + + QList<QString> competitors; + for (const auto &competitor : entry["competitors"].toArray()) { + competitors << competitor.toObject()["name"].toString(); + } + event->setCompetitors(competitors); + qDebug() << entry["eventUnitName"].toString(); - m_sportList << entry["eventUnitName"].toString(); + m_sportList << event; } endResetModel(); } diff --git a/src/model/Sport.h b/src/model/Sport.h index 0f183b7..be74a51 100644 --- a/src/model/Sport.h +++ b/src/model/Sport.h @@ -8,6 +8,7 @@ #include <QJsonObject> #include <QJsonDocument> #include <QString> +#include "EventInfo.h" using namespace std; @@ -16,7 +17,8 @@ class SportModel : public QAbstractListModel { public: enum Role { - SportName = Qt::UserRole + 1 + EventName = Qt::UserRole + 1, + Competitors }; explicit SportModel(QObject *parent = nullptr); @@ -29,7 +31,7 @@ class SportModel : public QAbstractListModel { void parseData(); private: - QList<QString> m_sportList; + QList<EventInfo*> m_sportList; QNetworkAccessManager m_networkManager; QNetworkReply *m_reply = nullptr; }; @@ -111,4 +113,4 @@ private: }; -#endif //ITAT_CHALLANGE_OLYMPICS_SPORT_H +#endif |