80 lines
2.3 KiB
C++
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
|