#ifndef CHARTSANDCAMERASWND_H
#define CHARTSANDCAMERASWND_H

#include <QMainWindow>
#include <QSlider>
#include <QLineEdit>
#include <QSettings>
#include "chartline.h"
#include "CameraMaterialGroupWnd/MaterialWindow/Wafer.h"
#include "CameraMaterialGroupWnd/MaterialWindow/Waffle.h"
#include "CameraMaterialGroupWnd/MaterialWindow/MaterialBox.h"
#include "JOriginalMainWnd.h"
#include "CameraMaterialGroupWnd/MaterialWindow/Bond.h"

namespace Ui {
class ChartsAndCamerasWnd;
}

class ChartsAndCamerasWnd : public JOriginalMainWnd
{
    Q_OBJECT

public:
    explicit ChartsAndCamerasWnd(QWidget *parent = nullptr);
    ~ChartsAndCamerasWnd();

    void initFrom();
    void updateMaterialWidget( int materialWndType, int groupId);
    
protected:
    void wheelEvent(QWheelEvent *event) override;
    void loadSettings();
    void checkSettings();
    void loadGroupSettings(int Id, int Index);
    void showEvent(QShowEvent *event) override;
    void hideEvent(QHideEvent *event) override;

public slots: // 确保这里声明了槽函数
    
    

private:
    void InitMainCameraBind(CameraBind* pCameraBind) override;
    void UnCameraBind() override;

    void UpdateCameraDisplay0(int iCameraId, JVision::ImageInfo imageData) override;
    void UpdateCameraDisplay1(int iCameraId, JVision::ImageInfo imageData) override;
    void UpdateCameraDisplay2(int iCameraId, JVision::ImageInfo imageData) override;
    void UpdateCameraDisplay3(int iCameraId, JVision::ImageInfo imageData) override;
    void UpdateCameraDisplay4(int iCameraId, JVision::ImageInfo imageData) override;

    void CameraConnectUpdateImageFun(int nIndex, Group* widget, bool isUnCameraBind = false) override;

signals:
    void UpDataImageShowSignals0(const QPixmap& imageData);
    void UpDataImageShowSignals1(const QPixmap& imageData);
    void UpDataImageShowSignals2(const QPixmap& imageData);
    void UpDataImageShowSignals3(const QPixmap& imageData);
    void UpDataImageShowSignals4(const QPixmap& imageData);

private slots:
    

    QPixmap getCurrentPixmap() const {
        return currentPixmap;
    }

    // 通用槽函数


    // void on_GreenDiamondcheckBox_clicked();

    // void on_YellowDiamondcheckBox_clicked();

    // void on_BlackDiamondcheckBox_clicked();

    // void on_BlueDiamondcheckBox_clicked();

    // void on_BlueHorizontalLinecheckBox_clicked();

    // void on_BlueVerticalBarcheckBox_clicked();

    // void on_GreenVerticalBarcheckBox_clicked();

    // void on_PurpleVerticalBarcheckBox_clicked();

    // void on_RedDiamondcheckBox_clicked();

    // void on_RedHorizontalLinecheckBox_clicked();

    // void on_WhiteVerticalBarcheckBox_clicked();

private:
    Ui::ChartsAndCamerasWnd *ui;

    // // 三个 ChartLine 实例
    // ChartLine *chartLine;
    // ChartLine *chartLine1;
    // ChartLine *chartLine2;


    // ChartLine 实例
    ChartLine *chartLine;
    ChartLine *chartLine1;
    ChartLine *chartLine2;
    // 存储所有系列信息
    QMap<QString, DataSeries> m_seriesMap;

    // 初始化系列信息
    void initializeSeriesInfo();

    QPixmap currentPixmap;
    qreal scaleFactor;
    double previousScaleFactor;

    int lastGroupId = -1;
    int lastIndex = -1;

    Wafer *wafer; // 声明Wafer指针
    Waffle *waffle; // 声明Waffle指针
    MaterialBox *materialbox; // 声明materialbox指针
    Bond* bond;
    bool isShow;

    QMap<int, Wafer*> waferMap;
    QMap<int, Waffle*> waffleMap;
    QMap<int, MaterialBox*> materialBoxMap;
    QMap<int, Bond*> bondMap;
    OperateMode currentMode = ModeImage;
    QGraphicsView *currentView = nullptr;
    QPoint mousePos;
    
    QPoint pressPos; // 记录鼠标按下位置

};

#endif // CHARTSANDCAMERASWND_H