#include "setinfowidget.h" #include "CompareItemData.h" #include "ui_setinfowidget.h" #include "UIStyleManager.h" #include "tipwidget.h" #include "GLobalInfo.h" SetInfoWidget::SetInfoWidget(QWidget *parent) : QWidget(parent), ui(new Ui::SetInfoWidget) { ui->setupUi(this); /* 连接信号和槽 */ connect(ui->pBtn_save, &QPushButton::clicked, this, &SetInfoWidget::do_pBtn_save_clicked); connect(ui->pBtn_cancel, &QPushButton::clicked, this, &SetInfoWidget::do_pBtn_cancel_clicked); connect(ui->tabWidget, &QTabWidget::currentChanged, this, &SetInfoWidget::do_tabWidget_currentChanged); /* 设置样式表 */ UIStyle.registerWidget(this); } SetInfoWidget::~SetInfoWidget() { /* 注销样式表 */ UIStyle.unregisterWidget(this); delete ui; } /* 设置WebAPI */ void SetInfoWidget::setWebAPI(FromWebAPI* api) { m_fromWebAPI = api; /* 设置BasicWidget的WebAPI */ BasicWidget* basicWidget = qobject_cast(ui->tabWidget->widget(0)); if(basicWidget) { basicWidget->setWebAPI(m_fromWebAPI); } /* 设置ai对比项的webapi指针 */ AICompareWidget* aiCompareWidget = qobject_cast(ui->tabWidget->widget(1)); if(aiCompareWidget) { aiCompareWidget->setWebAPI(m_fromWebAPI); } /* 设置噪音检测的webapi */ NoiseWidget* noiseWidget = qobject_cast(ui->tabWidget->widget(2)); if(noiseWidget) { noiseWidget->setWebAPI(m_fromWebAPI); } /* 设置数据库配置的WebAPI */ DatabaseWidget* databaseWidget = qobject_cast(ui->tabWidget->widget(3)); if(databaseWidget) { databaseWidget->setWebAPI(m_fromWebAPI); } /* 设置检测时段的WebAPI */ CheckPeriodWidget* checkPeriodWidget = qobject_cast(ui->tabWidget->widget(4)); if(checkPeriodWidget) { checkPeriodWidget->setWebAPI(m_fromWebAPI); } } /* 保存按钮 */ void SetInfoWidget::do_pBtn_save_clicked() { saveData(); } /* 取消按钮 */ void SetInfoWidget::do_pBtn_cancel_clicked() { } /* 切换了页面 */ void SetInfoWidget::do_tabWidget_currentChanged(int index) { /* 获取当前页的编号 */ QWidget* currentWidget = ui->tabWidget->currentWidget(); if(currentWidget == nullptr) { return; } /* 根据当前页的编号执行不同的操作 */ switch(index) { case 0: // 基础信息 break; case 1: // 对比项 break; case 2: // 噪音检测 break; case 3: // 数据库 break; case 4: // 检测时段 { /* 设置对比项到可选列表中 */ CheckPeriodWidget* checkPeriodWidget = qobject_cast(currentWidget); if(checkPeriodWidget) { checkPeriodWidget->updateCompareItemList(CIData.getCompareItemList()); } } break; default: break; } } /* 保存数据 */ void SetInfoWidget::saveData() { /* 获取当前页的编号 */ int currentIndex = ui->tabWidget->currentIndex(); QWidget* currentWidget = ui->tabWidget->currentWidget(); bool isSuccess = false; switch(currentIndex) { case 0: /* 基础信息 */ { BasicWidget* widget = qobject_cast(currentWidget); if(widget) { /* 保存基础信息 */ isSuccess = widget->saveBasicInfo(); } } break; case 1: /* 对比项 */ { AICompareWidget* widget = qobject_cast(currentWidget); if(widget) { /* 保存对比项信息 */ isSuccess = widget->saveConfig(); } } break; case 2: /* 噪音检测 */ { NoiseWidget* widget = qobject_cast(currentWidget); if(widget) { /* 保存噪音检测信息 */ isSuccess = widget->saveConfig(); } } break; case 3: /* 数据库 */ { DatabaseWidget* widget = qobject_cast(currentWidget); if(widget) { /* 保存数据库信息 */ isSuccess = widget->saveParams(); } } break; case 4: /* 检测时段 */ { CheckPeriodWidget* widget = qobject_cast(currentWidget); if(widget) { /* 保存检测时段信息 */ isSuccess = widget->saveSettings(); } } break; default: break; } if(isSuccess) { /* 保存成功 */ TipWidget::display(TipWidget::OPERATOR_OK, "设置保存成功", GInfo.getTopWindow()); }else { /* 保存失败 */ TipWidget::display(TipWidget::OPERATOR_FAIL, "设置保存失败", GInfo.getTopWindow()); } }