#ifndef OFDSCENE_H
#define OFDSCENE_H

#include <QWidget>

#ifdef BUILD_OFD_BINARYEYE_SCAN
#   include <thread>
#   include <netinet/in.h>
#   include <http_server/http_server.h>
#endif
namespace Ui {
class OFDScene;
}

class OFDScene : public QWidget
{
    Q_OBJECT

public:
    explicit OFDScene(QWidget *parent = nullptr);
    Ui::OFDScene *getUI();
    ~OFDScene();
#ifdef BUILD_OFD_BINARYEYE_SCAN
    void startHttpServer();
#endif
private slots:
#ifdef BUILD_OFD_LOCAL_QR_SCAN
    void on_choose_image_button_clicked();
#endif

    void onDataDecode(std::map<std::string, std::string>);
    void on_parse_button_clicked();

#ifdef BUILD_OFD_BINARYEYE_SCAN


    void on_binary_eye_button_clicked();
    void notifyHttpServerFailure();
    void on_stop_server_button_clicked();

// public slots:
    void httpNewMessageHandler(QString message);
signals:
    void httpNewMessage(QString message);
    void httpErrorOccured();
#endif

private:
    Ui::OFDScene *ui;

#ifdef BUILD_OFD_BINARYEYE_SCAN
    std::thread *httpServerThread;
    HttpServer *server = NULL;
#endif
};

#endif // OFDSCENE_H