#ifndef REQUESTWORKER_H #define REQUESTWORKER_H #include #include #include #include #include #include #include #include #include #include #ifdef Q_OS_ANDROID #include "wifihelper.h" #endif class RequestWorker : public QObject { Q_OBJECT QML_ELEMENT Q_PROPERTY(QString status READ status WRITE setStatus NOTIFY statusChanged FINAL) QNetworkAccessManager *manager = nullptr; QTimer *timer = nullptr; QString url; int interval; float prev_distance = 0; int max_height = 0; int min_height = 0; bool stop_timer = false; int reply_number = 0; int alarm_thres = 0; bool enable_alarm = false; bool player_started = false; QMediaPlayer *player = nullptr; QAudioOutput *audioOutput = nullptr; #ifdef Q_OS_ANDROID WiFiHelper *wifi = nullptr; QTimer *poll_wifi = nullptr; #endif std::chrono::time_point prev_time; public: explicit RequestWorker(QObject *parent = nullptr); QString status() const; void setStatus(const QString &newStatus); signals: void requestFailed(); void networkReply(int distance, float rate_of_fill, int expected_to_fill); void statusChanged(); void playMedia(); void connectionText(QString text, bool errored = false); public slots: void startAlarm(); void stopAlarm(); void setConfig(QJsonObject config); void start(); void stop(); private slots: void pollWiFi(); void gotWiFiSSID(QString ssid); void playAlarm(); void makeRequest(); void requestFinished(QNetworkReply *rep); private: QString m_status; }; #endif // REQUESTWORKER_H