#include "MainWnd.h"
#include "ui_MainWnd.h"
#include "Login.h"
#include <QMouseEvent>
#include <qDebug>
#include "OriginalWnd/OriginalWnd.h"
#include <QDialogButtonBox>
#include "Src/common/JLogAllOutput.h"
#include "Src/SystemInfoPage/SystemInfoPage.h"

MainWnd::MainWnd(QWidget* parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWnd)
    , initialIconSet(false)
{
    ui->setupUi(this);

    Init();

    InitForm();
}

MainWnd::~MainWnd()
{
    m_pCameraBind->deleteLater();

    delete ui;
}

void MainWnd::on_tabProductionBtn_clicked()
{
    SwitchToConfig(&OriginalWnd::switchToProductionConfig);
}

void MainWnd::on_tabHomeBtn_clicked()
{
    SwitchToConfig(&OriginalWnd::switchToHomeConfig);
}

void MainWnd::on_tabProgramBtn_clicked()
{
    SwitchToConfig(&OriginalWnd::switchToProgramConfig);
}

void MainWnd::on_tabModuleBtn_clicked()
{
    SwitchToConfig(&OriginalWnd::switchToModuleConfig);
}

void MainWnd::on_tabDispositionBtn_clicked()
{
    SwitchToConfig(&OriginalWnd::switchToDispositionConfig);
}

void MainWnd::on_tabDiagnosisBtn_clicked()
{
    SwitchToConfig(&OriginalWnd::switchToDiagnosisConfig);
}

void MainWnd::on_tabSystemBtn_clicked()
{
    QPointer<SystemInfoPage> sys = new SystemInfoPage;
    //connect(sys, &Login::SendSwitchOriginalWndSignals, this, &MainWnd::ShowOriginalWndSlots);

    ui->stackedWidget_UI->addWidget(sys);
    ui->stackedWidget_UI->setCurrentIndex(ui->stackedWidget_UI->indexOf(sys));


    return;

    QDialog settingsDialog(this);
    settingsDialog.setWindowTitle(tr("Settings"));

    QVBoxLayout mainLayout;
    settingsDialog.setLayout(&mainLayout);

    // Language Group
    QLabel languageLabel(tr("Language:"));
    QRadioButton englishRadio(tr("English"));
    QRadioButton chineseRadio(tr("Chinese"));

    QButtonGroup languageGroup;
    languageGroup.addButton(&englishRadio);
    languageGroup.addButton(&chineseRadio);

    QVBoxLayout languageLayout;
    languageLayout.addWidget(&languageLabel);
    languageLayout.addWidget(&englishRadio);
    languageLayout.addWidget(&chineseRadio);

    // Theme Group
    QLabel themeLabel(tr("Theme:"));
    QRadioButton lightThemeRadio(tr("Light"));
    QRadioButton darkThemeRadio(tr("Dark"));

    QButtonGroup themeGroup;
    themeGroup.addButton(&lightThemeRadio);
    themeGroup.addButton(&darkThemeRadio);

    QVBoxLayout themeLayout;
    themeLayout.addWidget(&themeLabel);
    themeLayout.addWidget(&lightThemeRadio);
    themeLayout.addWidget(&darkThemeRadio);

    // Dialog Button Box
    QDialogButtonBox buttonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
    connect(&buttonBox, &QDialogButtonBox::accepted, &settingsDialog, &QDialog::accept);
    connect(&buttonBox, &QDialogButtonBox::rejected, &settingsDialog, &QDialog::reject);

    mainLayout.addLayout(&languageLayout);
    mainLayout.addLayout(&themeLayout);
    mainLayout.addWidget(&buttonBox);

    int init_language_data = gen_if.getLanguageValue();
    int init_theme_data = gen_if.getThemeValue();

    if (init_language_data == 0) {
        englishRadio.setChecked(true);
    }
    else {
        chineseRadio.setChecked(true);
        languageLabel.setText(tr("sss", "语言"));
        englishRadio.setText(tr("英语"));
        chineseRadio.setText(tr("中文"));
        themeLabel.setText(tr("主题"));
        lightThemeRadio.setText(tr("浅色"));
        darkThemeRadio.setText(tr("深色"));
        settingsDialog.setWindowTitle(tr("设置"));
    }

    if (init_theme_data == 0) {
        lightThemeRadio.setChecked(true);
    }
    else {
        darkThemeRadio.setChecked(true);
    }

    int current_language_data = init_language_data;
    int current_theme_data = init_theme_data;

    connect(&languageGroup, QOverload<QAbstractButton*>::of(&QButtonGroup::buttonClicked),
        [&current_language_data, &englishRadio, &chineseRadio](QAbstractButton* button) {
            if (button == &englishRadio) {
                current_language_data = 0;
                qDebug() << "Language set to English";
            }
            else if (button == &chineseRadio) {
                current_language_data = 1;
                qDebug() << "Language set to Chinese";
            }
        });

    connect(&themeGroup, QOverload<QAbstractButton*>::of(&QButtonGroup::buttonClicked),
        [&current_theme_data, &lightThemeRadio, &darkThemeRadio](QAbstractButton* button) {
            if (button == &lightThemeRadio) {
                current_theme_data = 0;
                qDebug() << "Theme set to Light";
            }
            else if (button == &darkThemeRadio) {
                current_theme_data = 1;
                qDebug() << "Theme set to Dark";
            }
        });

    int result = settingsDialog.exec();
    QSettings settings("YourCompany", "YourApplication_style");

    if (result == QDialog::Accepted) {
        // 处理“OK”按钮点击事件
        if (init_language_data != current_language_data) {
            gen_if.setLanguageValue(current_language_data);
            if (current_language_data == 0) {
                ui->retranslateUi(this);
                setLanguageSignal(current_language_data);
            }
            else {
                setChineseMode(this);
                setLanguageSignal(current_language_data);
            }
        }
        if (init_theme_data != current_theme_data) {
            gen_if.setThemeValue(current_theme_data);
            QString qssFileName;
            if (current_theme_data == 0) {
                qssFileName = ":/light.qss";
                settings.setValue("Flag_Style", 0);
            }
            else {
                qssFileName = ":/dark.qss";
                settings.setValue("Flag_Style", 1);
            }
            QFile qssFile(qssFileName);
            if (qssFile.open(QFile::ReadOnly)) {
                QString qssContent = qssFile.readAll();
                qApp->setStyleSheet(qssContent);
                qssFile.close();
            }
        }
        // emit styleChanged();
        qDebug() << "Dialog accepted";
    }
    else if (result == QDialog::Rejected) {
        // 处理“Cancel”按钮点击事件
        // qDebug() << "Dialog rejected";
    }
}

void MainWnd::ShowOriginalWndSlots()
{
    if (m_pOriginalWnd == nullptr) //防止重复创建
    {
        m_pOriginalWnd = new OriginalWnd(this, m_pCameraBind);
        ui->stackedWidget_UI->addWidget(m_pOriginalWnd);
        connect(this, &MainWnd::setLanguageSignal, m_pOriginalWnd, &OriginalWnd::onHandleLanguageSignal);
    }
    
    ui->stackedWidget_UI->setCurrentWidget(m_pOriginalWnd);
}

void MainWnd::CloseMainWndSlots()
{
    m_pCameraBind->JViewExit();
    qApp->quit();
}

void MainWnd::applyTheme(int themeValue)
{
    QString qssFileName;
    if (themeValue == 0) {
        qssFileName = ":/light.qss";
    }
    else {
        qssFileName = ":/dark.qss";
    }
    QFile qssFile(qssFileName);
    if (qssFile.open(QFile::ReadOnly)) {
        QString qssContent = qssFile.readAll();
        qApp->setStyleSheet(qssContent);
        qssFile.close();
    }
}

void MainWnd::InitForm()
{
    setWindowFlags(Qt::FramelessWindowHint | Qt::Dialog);
    setAttribute(Qt::WA_TranslucentBackground, true);

    LoadLoginPage();

    //登录监听
    ui->label_logo_m->installEventFilter(this);

    ui->stackedWidget_UI->installEventFilter(this);

    //安装监听事件,点击左侧按钮图标变化
    ui->tabHomeBtn->installEventFilter(this);
    ui->tabProductionBtn->installEventFilter(this);
    ui->tabProgramBtn->installEventFilter(this);
    ui->tabMessageBtn->installEventFilter(this);
    ui->tabModuleBtn->installEventFilter(this);
    ui->tabDispositionBtn->installEventFilter(this);
    ui->tabDiagnosisBtn->installEventFilter(this);
    ui->tabSystemBtn->installEventFilter(this);
    ui->tabHelpBtn->installEventFilter(this);

    QMouseEvent* pressEvent = new QMouseEvent(QEvent::MouseButtonPress,
        ui->tabHomeBtn->pos(),
        Qt::LeftButton,
        Qt::LeftButton,
        Qt::NoModifier);
    QApplication::sendEvent(ui->tabHomeBtn, pressEvent);

    delete pressEvent;
}

void MainWnd::LoadLoginPage()
{
    QPointer<Login> login = new Login;
    connect(login, &Login::SendSwitchOriginalWndSignals, this, &MainWnd::ShowOriginalWndSlots);
    connect(login, &Login::CloseMainWndSig, this, &MainWnd::CloseMainWndSlots);

    ui->stackedWidget_UI->addWidget(login);
    ui->stackedWidget_UI->setCurrentIndex(ui->stackedWidget_UI->indexOf(login));
}

bool MainWnd::eventFilter(QObject* obj, QEvent* event)
{
    if (obj == this->ui->stackedWidget_UI)
    {
        onCurrentWidgetChanged();
    }

    if (obj == this->ui->label_logo_m)
    {
        //判断事件类型是否为鼠标事件
        if (event->type() == QEvent::MouseButtonPress)
        {
            //转换为鼠标事件
            QMouseEvent* mouseenevt = static_cast<QMouseEvent*>(event);
            //判断鼠标左键点击
            if (mouseenevt->button() == Qt::LeftButton)
            {
                LoadLoginPage();

                return true;
            }
        }
    }

    QSettings settings("YourCompany", "YourApplication_style");
    int flag = settings.value("Flag_Style", 0).toInt();

    switch (event->type())
    {
    case QEvent::MouseButtonPress:
    {
        if (obj == ui->tabHomeBtn && ui->tabHomeBtn->isEnabled())
        {
            ui->tabHomeBtn->setIcon(QIcon(":/images/deep/home.png"));
            ui->tabHomeBtn->setChecked(true);
            if (flag == 0) {
                if (ui->tabProductionBtn->isChecked() == false)
                {
                    ui->tabProductionBtn->setIcon(QIcon(":/images/light/Productionn assistance.png"));
                }
                if (ui->tabProgramBtn->isChecked() == false)
                {
                    ui->tabProgramBtn->setIcon(QIcon(":/images/light/Program.png"));
                }
                if (ui->tabMessageBtn->isChecked() == false)
                {
                    ui->tabMessageBtn->setIcon(QIcon(":/images/light/Message.png"));
                }
                if (ui->tabModuleBtn->isChecked() == false)
                {
                    ui->tabModuleBtn->setIcon(QIcon(":/images/light/Module.png"));
                }
                if (ui->tabDispositionBtn->isChecked() == false)
                {
                    ui->tabDispositionBtn->setIcon(QIcon(":/images/light/Disposition.png"));
                }
                if (ui->tabDiagnosisBtn->isChecked() == false)
                {
                    ui->tabDiagnosisBtn->setIcon(QIcon(":/images/light/Diagnosis.png"));
                }
                if (ui->tabSystemBtn->isChecked() == false)
                {
                    ui->tabSystemBtn->setIcon(QIcon(":/images/light/System.png"));
                }
                if (ui->tabHelpBtn->isChecked() == false)
                {
                    ui->tabHelpBtn->setIcon(QIcon(":/images/light/Help.png"));
                }
            }
        }
        if (obj == ui->tabProductionBtn && ui->tabProductionBtn->isEnabled())
        {
            ui->tabProductionBtn->setIcon(QIcon(":/images/deep/Productionn assistance.png"));
            ui->tabProductionBtn->setChecked(true);
            if (flag == 0) {
                if (ui->tabHomeBtn->isChecked() == false)
                {
                    ui->tabHomeBtn->setIcon(QIcon(":/images/light/home.png"));
                }
                if (ui->tabProgramBtn->isChecked() == false)
                {
                    ui->tabProgramBtn->setIcon(QIcon(":/images/light/Program.png"));
                }
                if (ui->tabMessageBtn->isChecked() == false)
                {
                    ui->tabMessageBtn->setIcon(QIcon(":/images/light/Message.png"));
                }
                if (ui->tabModuleBtn->isChecked() == false)
                {
                    ui->tabModuleBtn->setIcon(QIcon(":/images/light/Module.png"));
                }
                if (ui->tabDispositionBtn->isChecked() == false)
                {
                    ui->tabDispositionBtn->setIcon(QIcon(":/images/light/Disposition.png"));
                }
                if (ui->tabDiagnosisBtn->isChecked() == false)
                {
                    ui->tabDiagnosisBtn->setIcon(QIcon(":/images/light/Diagnosis.png"));
                }
                if (ui->tabSystemBtn->isChecked() == false)
                {
                    ui->tabSystemBtn->setIcon(QIcon(":/images/light/System.png"));
                }
                if (ui->tabHelpBtn->isChecked() == false)
                {
                    ui->tabHelpBtn->setIcon(QIcon(":/images/light/Help.png"));
                }
            }
        }
        if (obj == ui->tabProgramBtn && ui->tabProgramBtn->isEnabled())
        {
            ui->tabProgramBtn->setIcon(QIcon(":/images/deep/Program.png"));
            ui->tabProgramBtn->setChecked(true);
            if (flag == 0) {
                if (ui->tabHomeBtn->isChecked() == false)
                {
                    ui->tabHomeBtn->setIcon(QIcon(":/images/light/home.png"));
                }
                if (ui->tabProductionBtn->isChecked() == false)
                {
                    ui->tabProductionBtn->setIcon(QIcon(":/images/light/Productionn assistance.png"));
                }
                if (ui->tabMessageBtn->isChecked() == false)
                {
                    ui->tabMessageBtn->setIcon(QIcon(":/images/light/Message.png"));
                }
                if (ui->tabModuleBtn->isChecked() == false)
                {
                    ui->tabModuleBtn->setIcon(QIcon(":/images/light/Module.png"));
                }
                if (ui->tabDispositionBtn->isChecked() == false)
                {
                    ui->tabDispositionBtn->setIcon(QIcon(":/images/light/Disposition.png"));
                }
                if (ui->tabDiagnosisBtn->isChecked() == false)
                {
                    ui->tabDiagnosisBtn->setIcon(QIcon(":/images/light/Diagnosis.png"));
                }
                if (ui->tabSystemBtn->isChecked() == false)
                {
                    ui->tabSystemBtn->setIcon(QIcon(":/images/light/System.png"));
                }
                if (ui->tabHelpBtn->isChecked() == false)
                {
                    ui->tabHelpBtn->setIcon(QIcon(":/images/light/Help.png"));
                }
            }
        }
        if (obj == ui->tabMessageBtn && ui->tabMessageBtn->isEnabled())
        {
            ui->tabMessageBtn->setIcon(QIcon(":/images/deep/Message.png"));
            ui->tabMessageBtn->setChecked(true);
            if (flag == 0) {
                if (ui->tabHomeBtn->isChecked() == false)
                {
                    ui->tabHomeBtn->setIcon(QIcon(":/images/light/home.png"));
                }
                if (ui->tabProductionBtn->isChecked() == false)
                {
                    ui->tabProductionBtn->setIcon(QIcon(":/images/light/Productionn assistance.png"));
                }
                if (ui->tabProgramBtn->isChecked() == false)
                {
                    ui->tabProgramBtn->setIcon(QIcon(":/images/light/Program.png"));
                }
                if (ui->tabModuleBtn->isChecked() == false)
                {
                    ui->tabModuleBtn->setIcon(QIcon(":/images/light/Module.png"));
                }
                if (ui->tabDispositionBtn->isChecked() == false)
                {
                    ui->tabDispositionBtn->setIcon(QIcon(":/images/light/Disposition.png"));
                }
                if (ui->tabDiagnosisBtn->isChecked() == false)
                {
                    ui->tabDiagnosisBtn->setIcon(QIcon(":/images/light/Diagnosis.png"));
                }
                if (ui->tabSystemBtn->isChecked() == false)
                {
                    ui->tabSystemBtn->setIcon(QIcon(":/images/light/System.png"));
                }
                if (ui->tabHelpBtn->isChecked() == false)
                {
                    ui->tabHelpBtn->setIcon(QIcon(":/images/light/Help.png"));
                }
            }
        }
        if (obj == ui->tabModuleBtn && ui->tabModuleBtn->isEnabled())
        {
            ui->tabModuleBtn->setIcon(QIcon(":/images/deep/Module.png"));
            ui->tabModuleBtn->setChecked(true);
            if (flag == 0) {
                if (ui->tabHomeBtn->isChecked() == false)
                {
                    ui->tabHomeBtn->setIcon(QIcon(":/images/light/home.png"));
                }
                if (ui->tabProductionBtn->isChecked() == false)
                {
                    ui->tabProductionBtn->setIcon(QIcon(":/images/light/Productionn assistance.png"));
                }
                if (ui->tabProgramBtn->isChecked() == false)
                {
                    ui->tabProgramBtn->setIcon(QIcon(":/images/light/Program.png"));
                }
                if (ui->tabMessageBtn->isChecked() == false)
                {
                    ui->tabMessageBtn->setIcon(QIcon(":/images/light/Message.png"));
                }
                if (ui->tabDispositionBtn->isChecked() == false)
                {
                    ui->tabDispositionBtn->setIcon(QIcon(":/images/light/Disposition.png"));
                }
                if (ui->tabDiagnosisBtn->isChecked() == false)
                {
                    ui->tabDiagnosisBtn->setIcon(QIcon(":/images/light/Diagnosis.png"));
                }
                if (ui->tabSystemBtn->isChecked() == false)
                {
                    ui->tabSystemBtn->setIcon(QIcon(":/images/light/System.png"));
                }
                if (ui->tabHelpBtn->isChecked() == false)
                {
                    ui->tabHelpBtn->setIcon(QIcon(":/images/light/Help.png"));
                }
            }
        }
        if (obj == ui->tabDispositionBtn && ui->tabDispositionBtn->isEnabled())
        {
            ui->tabDispositionBtn->setIcon(QIcon(":/images/deep/Disposition.png"));
            ui->tabDispositionBtn->setChecked(true);
            if (flag == 0) {
                if (ui->tabHomeBtn->isChecked() == false)
                {
                    ui->tabHomeBtn->setIcon(QIcon(":/images/light/home.png"));
                }
                if (ui->tabProductionBtn->isChecked() == false)
                {
                    ui->tabProductionBtn->setIcon(QIcon(":/images/light/Productionn assistance.png"));
                }
                if (ui->tabProgramBtn->isChecked() == false)
                {
                    ui->tabProgramBtn->setIcon(QIcon(":/images/light/Program.png"));
                }
                if (ui->tabMessageBtn->isChecked() == false)
                {
                    ui->tabMessageBtn->setIcon(QIcon(":/images/light/Message.png"));
                }
                if (ui->tabModuleBtn->isChecked() == false)
                {
                    ui->tabModuleBtn->setIcon(QIcon(":/images/light/Module.png"));
                }
                if (ui->tabDiagnosisBtn->isChecked() == false)
                {
                    ui->tabDiagnosisBtn->setIcon(QIcon(":/images/light/Diagnosis.png"));
                }
                if (ui->tabSystemBtn->isChecked() == false)
                {
                    ui->tabSystemBtn->setIcon(QIcon(":/images/light/System.png"));
                }
                if (ui->tabHelpBtn->isChecked() == false)
                {
                    ui->tabHelpBtn->setIcon(QIcon(":/images/light/Help.png"));
                }
            }
        }
        if (obj == ui->tabDiagnosisBtn && ui->tabDiagnosisBtn->isEnabled())
        {
            ui->tabDiagnosisBtn->setIcon(QIcon(":/images/deep/Diagnosis.png"));
            ui->tabDiagnosisBtn->setChecked(true);
            if (flag == 0) {
                if (ui->tabHomeBtn->isChecked() == false)
                {
                    ui->tabHomeBtn->setIcon(QIcon(":/images/light/home.png"));
                }
                if (ui->tabProductionBtn->isChecked() == false)
                {
                    ui->tabProductionBtn->setIcon(QIcon(":/images/light/Productionn assistance.png"));
                }
                if (ui->tabProgramBtn->isChecked() == false)
                {
                    ui->tabProgramBtn->setIcon(QIcon(":/images/light/Program.png"));
                }
                if (ui->tabMessageBtn->isChecked() == false)
                {
                    ui->tabMessageBtn->setIcon(QIcon(":/images/light/Message.png"));
                }
                if (ui->tabModuleBtn->isChecked() == false)
                {
                    ui->tabModuleBtn->setIcon(QIcon(":/images/light/Module.png"));
                }
                if (ui->tabDispositionBtn->isChecked() == false)
                {
                    ui->tabDispositionBtn->setIcon(QIcon(":/images/light/Disposition.png"));
                }
                if (ui->tabSystemBtn->isChecked() == false)
                {
                    ui->tabSystemBtn->setIcon(QIcon(":/images/light/System.png"));
                }
                if (ui->tabHelpBtn->isChecked() == false)
                {
                    ui->tabHelpBtn->setIcon(QIcon(":/images/light/Help.png"));
                }
            }
        }
        if (obj == ui->tabSystemBtn && ui->tabSystemBtn->isEnabled())
        {
            ui->tabSystemBtn->setIcon(QIcon(":/images/deep/System.png"));
            ui->tabSystemBtn->setChecked(true);
            if (flag == 0) {
                if (ui->tabHomeBtn->isChecked() == false)
                {
                    ui->tabHomeBtn->setIcon(QIcon(":/images/light/home.png"));
                }
                if (ui->tabProductionBtn->isChecked() == false)
                {
                    ui->tabProductionBtn->setIcon(QIcon(":/images/light/Productionn assistance.png"));
                }
                if (ui->tabProgramBtn->isChecked() == false)
                {
                    ui->tabProgramBtn->setIcon(QIcon(":/images/light/Program.png"));
                }
                if (ui->tabMessageBtn->isChecked() == false)
                {
                    ui->tabMessageBtn->setIcon(QIcon(":/images/light/Message.png"));
                }
                if (ui->tabModuleBtn->isChecked() == false)
                {
                    ui->tabModuleBtn->setIcon(QIcon(":/images/light/Module.png"));
                }
                if (ui->tabDispositionBtn->isChecked() == false)
                {
                    ui->tabDispositionBtn->setIcon(QIcon(":/images/light/Disposition.png"));
                }
                if (ui->tabDiagnosisBtn->isChecked() == false)
                {
                    ui->tabDiagnosisBtn->setIcon(QIcon(":/images/light/Diagnosis.png"));
                }
                if (ui->tabHelpBtn->isChecked() == false)
                {
                    ui->tabHelpBtn->setIcon(QIcon(":/images/light/Help.png"));
                }
            }
        }
        if (obj == ui->tabHelpBtn && ui->tabHelpBtn->isEnabled())
        {
            ui->tabHelpBtn->setIcon(QIcon(":/images/deep/Help.png"));
            ui->tabHelpBtn->setChecked(true);
            if (flag == 0) {
                if (ui->tabHomeBtn->isChecked() == false)
                {
                    ui->tabHomeBtn->setIcon(QIcon(":/images/light/home.png"));
                }
                if (ui->tabProductionBtn->isChecked() == false)
                {
                    ui->tabProductionBtn->setIcon(QIcon(":/images/light/Productionn assistance.png"));
                }
                if (ui->tabProgramBtn->isChecked() == false)
                {
                    ui->tabProgramBtn->setIcon(QIcon(":/images/light/Program.png"));
                }
                if (ui->tabMessageBtn->isChecked() == false)
                {
                    ui->tabMessageBtn->setIcon(QIcon(":/images/light/Message.png"));
                }
                if (ui->tabModuleBtn->isChecked() == false)
                {
                    ui->tabModuleBtn->setIcon(QIcon(":/images/light/Module.png"));
                }
                if (ui->tabDispositionBtn->isChecked() == false)
                {
                    ui->tabDispositionBtn->setIcon(QIcon(":/images/light/Disposition.png"));
                }
                if (ui->tabDiagnosisBtn->isChecked() == false)
                {
                    ui->tabDiagnosisBtn->setIcon(QIcon(":/images/light/Diagnosis.png"));
                }
                if (ui->tabSystemBtn->isChecked() == false)
                {
                    ui->tabSystemBtn->setIcon(QIcon(":/images/light/System.png"));
                }
            }
        }
        break;
    }

    case QEvent::HoverEnter:
    {
        if (flag == 0) {
            if (obj == ui->tabHomeBtn && ui->tabHomeBtn->isEnabled())
            {
                ui->tabHomeBtn->setIcon(QIcon(":/images/deep/home.png"));
            }
            if (obj == ui->tabProductionBtn && ui->tabProductionBtn->isEnabled())
            {
                ui->tabProductionBtn->setIcon(QIcon(":/images/deep/Productionn assistance.png"));
            }
            if (obj == ui->tabProgramBtn && ui->tabProgramBtn->isEnabled())
            {
                ui->tabProgramBtn->setIcon(QIcon(":/images/deep/Program.png"));
            }
            if (obj == ui->tabMessageBtn && ui->tabMessageBtn->isEnabled())
            {
                ui->tabMessageBtn->setIcon(QIcon(":/images/deep/Message.png"));
            }
            if (obj == ui->tabModuleBtn && ui->tabModuleBtn->isEnabled())
            {
                ui->tabModuleBtn->setIcon(QIcon(":/images/deep/Module.png"));
            }
            if (obj == ui->tabDispositionBtn && ui->tabDispositionBtn->isEnabled())
            {
                ui->tabDispositionBtn->setIcon(QIcon(":/images/deep/Disposition.png"));
            }
            if (obj == ui->tabDiagnosisBtn && ui->tabDiagnosisBtn->isEnabled())
            {
                ui->tabDiagnosisBtn->setIcon(QIcon(":/images/deep/Diagnosis.png"));
            }
            if (obj == ui->tabSystemBtn && ui->tabSystemBtn->isEnabled())
            {
                ui->tabSystemBtn->setIcon(QIcon(":/images/deep/System.png"));
            }
            if (obj == ui->tabHelpBtn && ui->tabHelpBtn->isEnabled())
            {
                ui->tabHelpBtn->setIcon(QIcon(":/images/deep/Help.png"));
            }
        }
        break;
    }

    case QEvent::HoverLeave:
    {
        if (flag == 0) {
            if (obj == ui->tabHomeBtn && ui->tabHomeBtn->isChecked() == false)
            {
                ui->tabHomeBtn->setIcon(QIcon(":/images/light/home.png"));
                ui->tabHomeBtn->setChecked(false);
            }
            if (obj == ui->tabProductionBtn && ui->tabProductionBtn->isChecked() == false)
            {
                ui->tabProductionBtn->setIcon(QIcon(":/images/light/Productionn assistance.png"));
                ui->tabProductionBtn->setChecked(false);
            }
            if (obj == ui->tabProgramBtn && ui->tabProgramBtn->isChecked() == false)
            {
                ui->tabProgramBtn->setIcon(QIcon(":/images/light/Program.png"));
                ui->tabProgramBtn->setChecked(false);
            }
            if (obj == ui->tabMessageBtn && ui->tabMessageBtn->isChecked() == false)
            {
                ui->tabMessageBtn->setIcon(QIcon(":/images/light/Message.png"));
                ui->tabMessageBtn->setChecked(false);
            }
            if (obj == ui->tabModuleBtn && ui->tabModuleBtn->isChecked() == false)
            {
                ui->tabModuleBtn->setIcon(QIcon(":/images/light/Module.png"));
                ui->tabModuleBtn->setChecked(false);
            }
            if (obj == ui->tabDispositionBtn && ui->tabDispositionBtn->isChecked() == false)
            {
                ui->tabDispositionBtn->setIcon(QIcon(":/images/light/Disposition.png"));
                ui->tabDispositionBtn->setChecked(false);
            }
            if (obj == ui->tabDiagnosisBtn && ui->tabDiagnosisBtn->isChecked() == false)
            {
                ui->tabDiagnosisBtn->setIcon(QIcon(":/images/light/Diagnosis.png"));
                ui->tabDiagnosisBtn->setChecked(false);
            }
            if (obj == ui->tabSystemBtn && ui->tabSystemBtn->isChecked() == false)
            {
                ui->tabSystemBtn->setIcon(QIcon(":/images/light/System.png"));
                ui->tabSystemBtn->setChecked(false);
            }
            if (obj == ui->tabHelpBtn && ui->tabHelpBtn->isChecked() == false)
            {
                ui->tabHelpBtn->setIcon(QIcon(":/images/light/Help.png"));
                ui->tabHelpBtn->setChecked(false);
            }
        }
    }
    default:
        break;
    }

    return QWidget::eventFilter(obj, event);
}

void MainWnd::SwitchToConfig(void (OriginalWnd::* switchMethod)())
{
    (m_pOriginalWnd->*switchMethod)();
    ui->stackedWidget_UI->setCurrentWidget(m_pOriginalWnd);
}

void MainWnd::onCurrentWidgetChanged() {
    QWidget* currentWidget = ui->stackedWidget_UI->currentWidget();
    if (currentWidget) {
        QString currentWidgetName = currentWidget->objectName();

        QSettings settings("YourCompany", "YourApplication_style");
        int flag = settings.value("Flag_Style", 0).toInt();

        if (currentWidgetName == "Login") {
            QString styleSheet;
            if (flag == 0) {
                styleSheet = "QToolButton:disabled { color: #808080; background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #F8FBFF, stop: 1 #E7ECF3); }"; // 设置禁用状态下的文本颜色为灰色
            }
            else if (flag == 1) {
                styleSheet = "QToolButton:disabled { color: #B1B2D8; background: #7276AA;}";
            }

            ui->tabHomeBtn->setDisabled(true);
            ui->tabHomeBtn->setIcon(QIcon(":/images/light/home.png"));
            ui->tabHomeBtn->setStyleSheet(styleSheet);
            ui->tabProductionBtn->setDisabled(true);
            ui->tabProductionBtn->setStyleSheet(styleSheet);
            ui->tabProgramBtn->setDisabled(true);
            ui->tabProgramBtn->setStyleSheet(styleSheet);
            ui->tabMessageBtn->setDisabled(true);
            ui->tabMessageBtn->setStyleSheet(styleSheet);
            ui->tabModuleBtn->setDisabled(true);
            ui->tabModuleBtn->setStyleSheet(styleSheet);
            ui->tabDispositionBtn->setDisabled(true);
            ui->tabDispositionBtn->setStyleSheet(styleSheet);
            ui->tabDiagnosisBtn->setDisabled(true);
            ui->tabDiagnosisBtn->setStyleSheet(styleSheet);
            ui->tabSystemBtn->setDisabled(true);
            ui->tabSystemBtn->setStyleSheet(styleSheet);
            ui->tabHelpBtn->setDisabled(true);
            ui->tabHelpBtn->setStyleSheet(styleSheet);
        }
        else {
            ui->tabHomeBtn->setDisabled(false);
            if (!initialIconSet) {
                ui->tabHomeBtn->setIcon(QIcon(":/images/deep/home.png"));
                initialIconSet = true;
            }
            ui->tabProductionBtn->setDisabled(false);
            ui->tabProgramBtn->setDisabled(false);
            ui->tabMessageBtn->setDisabled(false);
            ui->tabModuleBtn->setDisabled(false);
            ui->tabDispositionBtn->setDisabled(false);
            ui->tabDiagnosisBtn->setDisabled(false);
            ui->tabSystemBtn->setDisabled(false);
            ui->tabHelpBtn->setDisabled(false);
        }
    }
}

void MainWnd::Init()
{
    m_sqlOper = &SqlOperation::GetInstance();
    m_sqlOper->LoadSql();

    m_pCameraBind = new CameraBind;


    int themeValue = gen_if.getThemeValue();
    applyTheme(themeValue);

    if (gen_if.getLanguageValue() == 0)
    {

    }
    else
    {
        setChineseMode(this);
    }


    ShowOriginalWndSlots();

    bool buttonConnected = connect(ui->tabHomeBtn, &QPushButton::clicked,
        this, &MainWnd::on_tabHomeBtn_clicked);
    qDebug() << "Connected tabHomeBtn clicked to on_tabHomeBtn_clicked:" << buttonConnected;

    connect(ui->tabProductionBtn, &QPushButton::clicked,
        this, &MainWnd::on_tabProductionBtn_clicked);

    connect(ui->tabDiagnosisBtn, &QPushButton::clicked,
        this, &MainWnd::on_tabDiagnosisBtn_clicked);

    connect(ui->tabDispositionBtn, &QPushButton::clicked,
        this, &MainWnd::on_tabDispositionBtn_clicked);

    connect(ui->tabModuleBtn, &QPushButton::clicked,
        this, &MainWnd::on_tabModuleBtn_clicked);

    // connect(ui->tabSystemBtn, &QPushButton::clicked,
    //         this, &MainWnd::on_tabSystemBtn_clicked);

    connect(ui->tabProgramBtn, &QPushButton::clicked,
        this, &MainWnd::on_tabProgramBtn_clicked);

    JLogAllOutput::cmd_debug("OriginalWnd 已设置为 stackedWidget 的当前页面");
}

void MainWnd::setChineseMode(QMainWindow* MainWnd) {
    MainWnd->setWindowTitle(QCoreApplication::translate("MainWnd", "主界面", nullptr));
    ui->tabHomeBtn->setText(QCoreApplication::translate("MainWnd", "首页", nullptr));
    ui->label_logo_m->setText(QString());
    ui->tabProductionBtn->setText(tr("MainWnd", "产品助手"));
    ui->tabProgramBtn->setText(QCoreApplication::translate("MainWnd", "进程", nullptr));
    ui->tabMessageBtn->setText(QCoreApplication::translate("MainWnd", "信息", nullptr));
    ui->tabModuleBtn->setText(QCoreApplication::translate("MainWnd", "校准", nullptr));
    ui->tabDispositionBtn->setText(QCoreApplication::translate("MainWnd", "模块配置", nullptr));
    ui->tabDiagnosisBtn->setText(QCoreApplication::translate("MainWnd", "诊断", nullptr));
    ui->tabSystemBtn->setText(QCoreApplication::translate("MainWnd", "系统信息", nullptr));
    ui->tabHelpBtn->setText(QCoreApplication::translate("MainWnd", "帮助", nullptr));
    ui->pushButton->setText(QCoreApplication::translate("MainWnd", "关闭", nullptr));
}

void MainWnd::on_pushButton_clicked()
{
    //加确认关闭提示确认窗口
    // 创建一个消息框
    QMessageBox msgBox;
    if (gen_if.getLanguageValue() == 0) {
        msgBox.setWindowTitle(tr("Confirm Close"));
        msgBox.setText(tr("Are you sure you want to close the application?"));
    }
    else {
        msgBox.setWindowTitle(tr("确认关闭"));
        msgBox.setText(tr("你确定要关闭程序吗"));
    }

    msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
    msgBox.setDefaultButton(QMessageBox::No);
    // 显示消息框并获取用户的选择
    int ret = msgBox.exec();

    switch (ret) 
    {
    case QMessageBox::Yes:
    {
        CloseMainWndSlots();
    }
    break;
    case QMessageBox::No:
        // 用户点击了取消按钮,不执行任何操作
        break;
    default:
        // 其他情况
        break;
    }
}

// QJsonObject MainWnd::getInfofromDb(){
//     QJsonObject data;
//     QJsonArray fieldsArray;
//     QSqlDatabase db = QSqlDatabase::database();
//     if (!db.isOpen()) {
//         qWarning() << "数据库未打开";
//         return data;
//     }

//     // 查询 systemConfig 表
//     QSqlQuery queryBond(db);
//     queryBond.prepare(R"(
//         SELECT Function, Description,setValue
//         FROM systemConfig
//     )");
//     if (queryBond.exec()) {
//         while (queryBond.next()) {
//             QJsonObject field;
//             field["Function"] = queryBond.value("Function").toString();
//             field["Description"] = queryBond.value("Description").toString();
//             field["setValue"] = queryBond.value("setValue").toInt();
//             fieldsArray.append(field);
//         }


//         // qDebug() << "Fetched fields:" << fieldsArray;
//     } else {
//         qWarning() << "查询 systemConfig 失败:" << queryBond.lastError().text();
//     }
//     data["systemConfig"]=fieldsArray;
//     // qDebug() << "Fetched data:" << data;
//     return data;

// }
// int MainWnd::getLanguageValue(){
//     int data;
//     QJsonArray fieldsArray;
//     QSqlDatabase db = QSqlDatabase::database();
//     if (!db.isOpen()) {
//         qWarning() << "数据库未打开";
//         return -1;
//     }

//     // 查询 systemConfig 表
//     QSqlQuery queryBond(db);
//     queryBond.prepare(R"(
//         SELECT Function, Description,setValue
//         FROM systemConfig
//     )");
//     if (queryBond.exec()) {
//         while (queryBond.next()) {
//             QJsonObject field;

//             field["Function"] = queryBond.value("Function").toString();
//             if(field["Function"] == "language"){
//                 data = queryBond.value("setValue").toInt();
//                 return data;
//             }
//         }


//         // qDebug() << "Fetched fields:" << fieldsArray;
//     } else {
//         qWarning() << "查询 systemConfig 失败:" << queryBond.lastError().text();
//     }
//     return -1;

// }
// int MainWnd::getThemeValue(){
//     int data;
//     QJsonArray fieldsArray;
//     QSqlDatabase db = QSqlDatabase::database();
//     if (!db.isOpen()) {
//         qWarning() << "数据库未打开";
//         return -1;
//     }

//     // 查询 systemConfig 表
//     QSqlQuery queryBond(db);
//     queryBond.prepare(R"(
//         SELECT Function, Description,setValue
//         FROM systemConfig
//     )");
//     if (queryBond.exec()) {
//         while (queryBond.next()) {
//             QJsonObject field;

//             field["Function"] = queryBond.value("Function").toString();
//             if(field["Function"] == "theme"){
//                 data = queryBond.value("setValue").toInt();
//                 return data;
//             }
//         }


//         // qDebug() << "Fetched fields:" << fieldsArray;
//     } else {
//         qWarning() << "查询 systemConfig 失败:" << queryBond.lastError().text();
//     }
//     return -1;
// }
// void MainWnd::setLanguageValue(int data){
//     QSqlDatabase db = QSqlDatabase::database();
//     if (!db.isOpen()) {
//         qWarning() << "数据库未打开";
//     }
//     QString sql = QString("UPDATE systemConfig SET setValue = '%1' WHERE Function = 'language'").arg(data);
//     QSqlQuery query;
//     if (query.exec(sql)) {
//         qDebug() << "Update successful";
//     } else {
//         qDebug() << "Update failed:" << query.lastError().text();
//     }
// }
// void MainWnd::setThemeValue(int data){
//     QSqlDatabase db = QSqlDatabase::database();
//     if (!db.isOpen()) {
//         qWarning() << "数据库未打开";
//     }
//     QString sql = QString("UPDATE systemConfig SET setValue = '%1' WHERE Function = 'theme'").arg(data);
//     QSqlQuery query;
//     if (query.exec(sql)) {
//         qDebug() << "Update successful";
//     } else {
//         qDebug() << "Update failed:" << query.lastError().text();
//     }
// }