#include "checkperiodwidget.h" #include "ui_checkperiodwidget.h" #include "addperioddialog.h" #include "UIStyleManager.h" #include "customcombobox.h" #include #include CheckPeriodWidget::CheckPeriodWidget(QWidget *parent) : QWidget(parent), ui(new Ui::CheckPeriodWidget) { ui->setupUi(this); m_logger = spdlog::get("ACASetting"); if(m_logger == nullptr) { fmt::print("CheckPeriodWidget: Logger ACASetting not found\n"); return; } /* 下拉框设置阴影 */ ui->comboBox_selectCompareItem->setViewShadowEffect(); connect(ui->pBtn_addDetectPlan, &QPushButton::clicked, this, &CheckPeriodWidget::do_pBtn_addDetectPlan_clicked); connect(ui->pBtn_addNoDetectPlan, &QPushButton::clicked, this, &CheckPeriodWidget::do_pBtn_addNoDetectPlan_clicked); /* 设置UI */ UIStyle.registerWidget(this); QString qssPath = UIStyle.getQSSPath() + "/onedetectplan.qss"; QFile file(qssPath); if(file.open(QFile::ReadOnly)) { m_qssPlan = file.readAll(); file.close(); } else { SPDLOG_LOGGER_WARN(m_logger, "打开QSS文件失败: {}", qssPath.toStdString()); } /* 初始化列表 */ initListWidget(); } CheckPeriodWidget::~CheckPeriodWidget() { UIStyle.unregisterWidget(this); delete ui; } /* 获取计划列表 */ QList CheckPeriodWidget::getDetectPlanList() { m_planList.clear(); for(int i = 0; i < ui->listWidget_detectPlan->count(); ++i) { QListWidgetItem *item = ui->listWidget_detectPlan->item(i); OneDetectPlan *detectPlan = qobject_cast(ui->listWidget_detectPlan->itemWidget(item)); if(detectPlan) { m_planList.append(detectPlan->getPlan()); } } return m_planList; } /* 设置计划列表 */ void CheckPeriodWidget::setDetectPlanList(const QList& planList) { m_planList = planList; ui->listWidget_detectPlan->clear(); for(const auto& plan : m_planList) { addDetectPlan(plan); } } /* 添加一个检测计划 */ void CheckPeriodWidget::do_pBtn_addDetectPlan_clicked() { AddPeriodDialog dlg(PERIOD_WEEK); /* 更新计划列表 */ getDetectPlanList(); /* 设置计划列表 */ dlg.setPlanList(m_planList); dlg.exec(); if(!dlg.isOK()) { return; } OnePlan_t plan = dlg.getPlan(); addDetectPlan(plan); } /* 添加一个不检测计划 */ void CheckPeriodWidget::do_pBtn_addNoDetectPlan_clicked() { AddPeriodDialog dlg(PERIOD_DATE); dlg.exec(); } /* 删除一个检测计划 */ void CheckPeriodWidget::do_pBtn_deleteDetectPlan_clicked() { } /* 删除一个不检测计划 */ void CheckPeriodWidget::do_pBtn_deleteNoDetectPlan_clicked() { } /* 初始化QListWidget */ void CheckPeriodWidget::initListWidget() { ui->listWidget_detectPlan->clear(); ui->listWidget_noDetectPlan->clear(); /* 禁用横向滚动条 */ ui->listWidget_detectPlan->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); ui->listWidget_noDetectPlan->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); /* 设置行间距为16 */ ui->listWidget_detectPlan->setSpacing(8); ui->listWidget_noDetectPlan->setSpacing(8); /* 添加检测计划 */ // for (int i = 0; i < 8; ++i) { // OnePlan_t plan; // addDetectPlan(plan); // } } /* 添加一个检测计划 */ void CheckPeriodWidget::addDetectPlan(const OnePlan_t& plan) { OneDetectPlan *detectPlan = new OneDetectPlan(ui->listWidget_detectPlan); detectPlan->setQSS(m_qssPlan); detectPlan->setPlan(plan); connect(detectPlan, &OneDetectPlan::signal_oneDetectPlanCloseClicked, this, &CheckPeriodWidget::do_pBtn_deleteDetectPlan_clicked); /* 将数据插入到列表中 */ QListWidgetItem *item = new QListWidgetItem(ui->listWidget_detectPlan); item->setSizeHint(detectPlan->sizeHint()); ui->listWidget_detectPlan->setItemWidget(item, detectPlan); }