52 lines
1.3 KiB
C++
52 lines
1.3 KiB
C++
|
|
#ifndef ITAT_CHALLANGE_OLYMPICS_MEDALWINNER_H
|
|
#define ITAT_CHALLANGE_OLYMPICS_MEDALWINNER_H
|
|
|
|
#include "Competitor.h"
|
|
#include <QMap>
|
|
#include <QJsonObject>
|
|
#include <stdexcept>
|
|
|
|
#include <QAbstractListModel>
|
|
|
|
class MedalWinner : public Competitor {
|
|
Q_OBJECT
|
|
|
|
Q_PROPERTY(int gold READ gold)
|
|
Q_PROPERTY(int silver READ silver)
|
|
Q_PROPERTY(int bronze READ bronze)
|
|
|
|
public:
|
|
MedalWinner() : Competitor() {
|
|
this->gold = 0;
|
|
this->silver = 0;
|
|
this->bronze = 0;
|
|
}
|
|
|
|
MedalWinner(const MedalWinner &medalWinner) : Competitor(medalWinner) {
|
|
this->gold = medalWinner.gold;
|
|
this->silver = medalWinner.silver;
|
|
this->bronze = medalWinner.bronze;
|
|
}
|
|
|
|
MedalWinner(const QJsonObject &competitor) : Competitor(competitor) {
|
|
if (!competitor.contains("medals")) throw invalid_argument("Competitor has no medals.");
|
|
QJsonObject medals = competitor["medals"].toObject();
|
|
setMedals(medals);
|
|
}
|
|
|
|
bool setMedals(const QJsonObject &medals);
|
|
int getGold() { return gold; }
|
|
int getSilver() { return silver; }
|
|
int getBronze() { return bronze; }
|
|
|
|
static bool compare(MedalWinner lComp, MedalWinner rComp);
|
|
|
|
private:
|
|
int gold, silver, bronze;
|
|
|
|
};
|
|
|
|
|
|
#endif //ITAT_CHALLANGE_OLYMPICS_MEDALWINNER_H
|