#ifndef WIDGET_H
#define WIDGET_H
#include <windows.h>
#include <QThread>
#include <QWidget>
#include <camera.h>
#include <QTcpServer>
#include <QPushButton>
#include "globals.h"
#include "storageworker.h"

QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

public slots:
    void refreshImage(); // 刷新图片的槽函数

private slots:

    void refreshSingleImage(int camera_id, bool overlay_traditional_result = false, bool overlay_dl_result = false, bool mirror = false);

    void on_pushButton_2_clicked();

    void on_btn_stop_clicked();

    void on_btn_start_clicked();

    void on_btn_take_photos_pressed();

    void on_btn_take_photos_released();

    void on_btn_quit_clicked();

    void on_btn_set_lower_clicked();

    void on_btn_set_valve_clicked();

    void on_btn_tab3_backtab2_clicked();

    void on_btn_live_clicked();

    void on_btn_tab3_backtab2_2_clicked();

    void on_btn_settings_clicked();

    void on_btn_setColor_clicked();

    void update_colorlist();

    void on_comboBox_colorlist_currentIndexChanged(int index);

    bool loadConfig(const QString &filePath);

    bool saveConfig(const QString &filePath, const std::map<std::string, int>& params_to_set,const std::vector<std::string>& color_vector_to_set);

    void initDefaultConfig();

    void on_btn_add_color_clicked();

    void on_btn_del_color_clicked();

    void on_btn_reset_color_clicked();

private:
    Ui::Widget *ui;

    bool isCamRunning;

    QDateTime startTime;          // 记录点“开始分选”的时间，用于计算总运行时长

    QThread storageThread; // 存储线程
    StorageWorker* storageWorker; // 存储工作者

};
#endif // WIDGET_H
