123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- #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(0, 0, 0));
- ui->timeEdit_start->SetMainWindow(this);
- ui->timeEdit_end->SetMainWindow(this);
- /* 设置日期格式,设置默认日期 */
- ui->dateEdit->setDisplayFormat("yyyy-MM-dd");
- ui->dateEdit->setDate(QDate::currentDate());
- /* 设置图标生效 */
- ui->dateEdit->setCalendarPopup(true);
- /* 禁用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<eWeekType>();
- 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;
- }
|