#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QWidget>
#include <QEvent>
#include <thread>

#include <http_server/http_server.h>

namespace Ui {
class MainWindow;
}

class MainWindow : public QWidget
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
#ifdef BUILD_OFD_BINARYEYE_SCAN
    void startHttpServer();
#endif

signals:
    void httpNewMessage(QString message);
    void httpErrorOccured();

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();

    void httpNewMessageHandler(QString message);
#endif
private:
    Ui::MainWindow *ui;
#ifdef BUILD_OFD_BINARYEYE_SCAN
    std::thread *httpServerThread;
    HttpServer *server = NULL;
#endif
};

#endif // MAINWINDOW_H