2024-08-12 22:09:50 +02:00
|
|
|
|
2024-08-15 21:00:18 +02:00
|
|
|
#pragma once
|
2024-08-12 22:09:50 +02:00
|
|
|
|
|
|
|
#include "Competitor.h"
|
|
|
|
#include <QMap>
|
|
|
|
#include <QJsonObject>
|
|
|
|
#include <stdexcept>
|
|
|
|
|
2024-08-15 19:21:02 +02:00
|
|
|
#include <QAbstractListModel>
|
|
|
|
|
2024-08-12 22:09:50 +02:00
|
|
|
class MedalWinner : public Competitor {
|
2024-08-15 19:21:02 +02:00
|
|
|
|
2024-08-15 23:27:54 +02:00
|
|
|
Q_OBJECT
|
2024-08-12 22:09:50 +02:00
|
|
|
|
2024-08-15 23:27:54 +02:00
|
|
|
Q_PROPERTY(int gold READ m_gold NOTIFY nGold)
|
|
|
|
Q_PROPERTY(int silver READ m_silver NOTIFY nSilver)
|
|
|
|
Q_PROPERTY(int bronze READ m_bronze NOTIFY nBronze)
|
2024-08-12 22:09:50 +02:00
|
|
|
|
2024-08-15 23:27:54 +02:00
|
|
|
public:
|
|
|
|
MedalWinner() : Competitor(), m_gold(0), m_silver(0), m_bronze(0) {}
|
|
|
|
MedalWinner(const MedalWinner &medalWinner) : Competitor(medalWinner),
|
|
|
|
m_gold(medalWinner.m_gold), m_silver(medalWinner.m_silver), m_bronze(medalWinner.m_bronze) {}
|
2024-08-12 22:09:50 +02:00
|
|
|
MedalWinner(const QJsonObject &competitor) : Competitor(competitor) {
|
2024-08-15 19:21:02 +02:00
|
|
|
if (!competitor.contains("medals")) throw invalid_argument("Competitor has no medals.");
|
2024-08-12 22:09:50 +02:00
|
|
|
QJsonObject medals = competitor["medals"].toObject();
|
|
|
|
setMedals(medals);
|
|
|
|
}
|
|
|
|
|
|
|
|
bool setMedals(const QJsonObject &medals);
|
2024-08-15 23:27:54 +02:00
|
|
|
int getGold() { return m_gold; }
|
|
|
|
int getSilver() { return m_silver; }
|
|
|
|
int getBronze() { return m_bronze; }
|
2024-08-15 19:21:02 +02:00
|
|
|
|
|
|
|
static bool compare(MedalWinner lComp, MedalWinner rComp);
|
2024-08-12 22:09:50 +02:00
|
|
|
|
|
|
|
private:
|
2024-08-15 23:27:54 +02:00
|
|
|
int m_gold, m_silver, m_bronze;
|
2024-08-12 22:09:50 +02:00
|
|
|
|
|
|
|
};
|