#include "addperioddialog.h" #include "ui_addperiodwidget.h" #include "timewidget.h" #include "calendardtedit.h" #include "customcombobox.h" #include "tipwidget.h" #include "checkperiodfunc.h" AddPeriodDialog::AddPeriodDialog(ePeriodType type, QWidget *parent) : DialogBase(true, parent), ui(new Ui::AddPeriodWidget), m_type(type) { QWidget* contentWidget = new QWidget(this); ui->setupUi(contentWidget); /* 设置内容 */ this->setContentWidget(contentWidget); /* 设置标题 */ setTitle("添加检测周期"); if(type == PERIOD_WEEK) { ui->widgetDate->hide(); } else { ui->widgetWeek->hide(); } /* 设置下拉框阴影 */ ui->comboBox->setViewShadowEffect(); /* 设置时间框默认时间 */ ui->timeEdit_start->setTime(QTime(0, 0, 0)); ui->timeEdit_end->setTime(QTime(23, 59, 59)); ui->timeEdit_start->SetMainWindow(this); ui->timeEdit_end->SetMainWindow(this); /* 设置日期格式,设置默认日期 */ ui->dateEdit->setDisplayFormat("yyyy-MM-dd"); ui->dateEdit->setDate(QDate::currentDate()); /* 禁用comboBox滚动修改 */ ui->comboBox->setWheelDisabled(true); /* 给下拉框设置可选项 */ for(auto it = MapWeekTypeToString.begin(); it != MapWeekTypeToString.end(); ++it) { if(it.key() == eWeekType::Week_Special) { continue; // 跳过特殊日 } ui->comboBox->addItem(it.value(), QVariant::fromValue(it.key())); } /* 设置QSS */ setQSS(); } AddPeriodDialog::~AddPeriodDialog() { delete ui; } /* 设置QSS */ void AddPeriodDialog::setQSS() { QString qssPath = UIStyle.getQSSPath() + "/addperiodwidget.qss"; QFile file(qssPath); if(file.open(QFile::ReadOnly)) { this->setStyleSheet(file.readAll()); file.close(); } else { SPDLOG_LOGGER_WARN(m_logger, "打开QSS文件失败: {}", qssPath.toStdString()); } } /* 更新计划 */ void AddPeriodDialog::updatePlan() { m_plan.weekType = ui->comboBox->currentData().value(); m_plan.date = ui->dateEdit->date(); m_plan.timeStart = ui->timeEdit_start->getTime(); m_plan.timeEnd = ui->timeEdit_end->getTime(); } /* 重载点击OK按钮之后的操作 */ bool AddPeriodDialog::isOKClicked() { /* 更新计划 */ updatePlan(); /* 先检查时间是否相等,前后冲突 */ if(m_plan.timeStart >= m_plan.timeEnd) { TipWidget::display(TipWidget::OPERATOR_WARN, "开始时间不能大于或等于结束时间!", this); return false; } if(m_type == ePeriodType::PERIOD_WEEK) { if(isWeekPlanDuplicate(m_planList, m_plan)) { TipWidget::display(TipWidget::OPERATOR_WARN, "计划时间不允许重叠!", this); return false; } } else { if(isDatePlanDuplicate(m_planList, m_plan)) { TipWidget::display(TipWidget::OPERATOR_WARN, "计划时间不允许重叠!", this); return false; } } return true; }