#ifndef SCSTWAPPBACKEND_H #define SCSTWAPPBACKEND_H #include #include #include #include #include #include "headers/scstwappsettings.h" class ScStwAppBackend : public QObject { Q_OBJECT Q_PROPERTY(int mode READ getMode NOTIFY modeChanged) Q_PROPERTY(ScStwRace* race READ getRace NOTIFY raceChanged) Q_PROPERTY(ScStwClient *scStwClient READ getScStwClient NOTIFY scStwClientChanged) Q_PROPERTY(ScStwAppSettings *settings READ getSettings NOTIFY settingsChanged) public: explicit ScStwAppBackend(QObject *parent = nullptr); enum RaceMode { LOCAL, REMOTE }; private: RaceMode mode; ScStwAppSettings * appSettings; ScStwClient * scStwClient; QTimer * timerTextRefreshTimer; ScStwRace * localRace; ScStwRemoteMonitorRace * remoteRace; public slots: // functions for qml Q_INVOKABLE ScStwRace *getRace(); Q_INVOKABLE ScStwClient *getScStwClient(); Q_INVOKABLE ScStwAppSettings *getSettings(); Q_INVOKABLE int getMode(); // athlete management Q_INVOKABLE QVariant getAthletes(); Q_INVOKABLE bool createAthlete( QString userName, QString fullName ); Q_INVOKABLE bool deleteAthlete( QString userName ); Q_INVOKABLE bool selectAthlete( QString userName, int timerId ); Q_INVOKABLE QVariant getResults( QString userName ); private slots: void refreshTimerText(); void refreshMode(); void reloadRaceSettings(); void reloadBaseStationIpAdress(); void handleSettingChange(int keyInt, int keyLevel, QVariant value); signals: void modeChanged(); void raceChanged(); void scStwClientChanged(); void settingsChanged(); void baseStationStateChanged(); void baseStationConnectionsChanged(); void baseStationPropertiesChanged(); }; #endif // SCSTWAPPBACKEND_H