app/headers/competition/brcategory.h
Dorian Zedler 85c8760bed
- moved some stuff
- results work now (still basic)
2020-11-15 14:48:12 +01:00

80 lines
2.3 KiB
C++

#ifndef BRCATEGORY_H
#define BRCATEGORY_H
#include <QObject>
#include "brwidget.h"
#include "brround.h"
#include "brathlete.h"
#include "brresultdetailsgeneralresult.h"
class BRCompetition;
class BRCategory : public BRWidget
{
Q_OBJECT
Q_PROPERTY(QString name READ getName NOTIFY metadataChanged)
Q_PROPERTY(BRDiscipline discipline READ getDiscipline NOTIFY metadataChanged)
Q_PROPERTY(BRCategoryStatus status READ getStatus NOTIFY metadataChanged)
Q_PROPERTY(BRRound* currentRound READ getCurrentRound WRITE setCurrentRound NOTIFY currentRoundChanged)
Q_PROPERTY(BRRound* generalResult READ getGeneralResult NOTIFY generalResultChanged)
Q_PROPERTY(QList<QObject*> rounds READ getRoundsQML NOTIFY roundsChanged)
public:
friend class BRProvider;
friend class BRCompetition;
enum BRCategoryStatus {
UnknownStatus = -1,
Registration,
Startlist,
Result
};
Q_ENUM(BRCategoryStatus)
typedef struct {
const BRCategory* category;
QString name;
BRDiscipline discipline;
BRCategoryStatus status;
BRRound* currentRound;
BRRound* generalResult;
QList<BRRound*> rounds;
} BRCategoryData;
Q_INVOKABLE BRWidget::BRWidgetStatusCode load() override;
Q_INVOKABLE BRCompetition* getCompetition() const;
Q_INVOKABLE QString getName();
Q_INVOKABLE BRDiscipline getDiscipline();
Q_INVOKABLE BRCategoryStatus getStatus();
Q_INVOKABLE BRRound* getCurrentRound() const;
Q_INVOKABLE void setCurrentRound(BRRound* round = nullptr);
Q_INVOKABLE BRRound* getGeneralResult();
Q_INVOKABLE QList<BRRound*> getRounds(bool includeGeneralResult = false) const;
Q_INVOKABLE QList<QObject*> getRoundsQML();
BRCategoryData getData();
private:
BRCategory(BRProvider* provider, BRWidget::BRFederation federation, int id, BRCategoryData initialData);
void setData(BRCategoryData data);
BRCompetition* competition;
BRRound* currentRound;
QString name;
BRDiscipline discipline;
BRCategoryStatus status;
BRRound* generalResult;
QList<BRRound*> rounds;
signals:
void metadataChanged();
void currentRoundChanged();
void roundsChanged();
void generalResultChanged();
void resultsChanged();
};
#endif // BRCATEGORY_H