app/headers/brcompetition.h

96 lines
2.7 KiB
C
Raw Normal View History

2020-10-31 15:16:06 +01:00
#ifndef BRCOMPETITION_H
#define BRCOMPETITION_H
#include <QObject>
#include <QDate>
#include <QUrl>
#include <QDebug>
2020-10-31 15:16:06 +01:00
#include "brwidget.h"
#include "brcategory.h"
class BRLeague;
2020-10-31 15:16:06 +01:00
class BRCompetition : public BRWidget
{
Q_OBJECT
Q_PROPERTY(QString name READ getName NOTIFY metadataChanged)
Q_PROPERTY(QString discipline READ getDiscipline NOTIFY metadataChanged)
Q_PROPERTY(QDate startDate READ getStartDate NOTIFY metadataChanged)
Q_PROPERTY(QDate endDate READ getEndDate NOTIFY metadataChanged)
Q_PROPERTY(QString dateSpan READ getDateSpan NOTIFY metadataChanged)
Q_PROPERTY(BRLeague* league READ getLeague NOTIFY metadataChanged)
Q_PROPERTY(QUrl eventWebsiteUrl READ getEventWebsiteUrl NOTIFY metadataChanged)
Q_PROPERTY(QList<QUrl> infosheetUrls READ getInfosheetUrls NOTIFY metadataChanged)
Q_PROPERTY(QList<QObject*> categories READ getCategoriesQML NOTIFY categoriesChanged)
Q_PROPERTY(BRCategory* currentCategory READ getCurrentCategory WRITE setCurrentCategory NOTIFY currentCategoryChanged)
2020-10-31 15:16:06 +01:00
public:
friend class BRProvider;
friend class BRLeague;
2020-10-31 15:16:06 +01:00
enum BRDiscipline {
Unknown = -1,
2020-10-31 15:16:06 +01:00
Boulder,
Lead,
Speed
};
Q_ENUM(BRDiscipline)
typedef struct BRCompetitionData {
const BRCompetition* competition;
QString name;
BRDiscipline discipline;
QDate startDate;
QDate endDate;
QUrl eventWebsiteUrl;
QList<QUrl> infosheetUrls;
QList<BRCategory*> categories;
} BRCompetitionData;
2020-10-31 15:16:06 +01:00
Q_INVOKABLE BRWidget::BRWidgetStatusCode load() override;
Q_INVOKABLE QString getName();
Q_INVOKABLE BRDiscipline getDiscipline();
Q_INVOKABLE QDate getStartDate();
Q_INVOKABLE QDate getEndDate();
Q_INVOKABLE QString getDateSpan();
Q_INVOKABLE BRLeague* getLeague();
Q_INVOKABLE QUrl getEventWebsiteUrl();
Q_INVOKABLE QList<QUrl> getInfosheetUrls();
Q_INVOKABLE QList<QObject*> getCategoriesQML();
Q_INVOKABLE BRCategory* getCurrentCategory() const;
Q_INVOKABLE void setCurrentCategory(BRCategory* category);
static bool lessThan(BRCompetition* competition1, BRCompetition* competition2);
private:
explicit BRCompetition(BRProvider* provider, BRWidget::BRFederation federation, int id, BRCompetitionData initialData);
void setLeague(BRLeague* league);
// metadata
2020-10-31 15:16:06 +01:00
QString name;
BRDiscipline discipline;
QDate startDate;
QDate endDate;
BRLeague* league;
QUrl eventWebsiteUrl;
QList<QUrl> infosheetUrls;
2020-10-31 15:16:06 +01:00
// data
2020-10-31 15:16:06 +01:00
QList<BRCategory*> categories;
BRCategory* currentCategory;
2020-10-31 15:16:06 +01:00
void setData(BRCompetitionData data);
2020-10-31 15:16:06 +01:00
signals:
void metadataChanged();
void categoriesChanged();
void currentCategoryChanged();
2020-10-31 15:16:06 +01:00
};
#endif // BRCOMPETITION_H