addperioddialog.cpp 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. #include "addperioddialog.h"
  2. #include "ui_addperiodwidget.h"
  3. #include "timewidget.h"
  4. #include "calendardtedit.h"
  5. #include "customcombobox.h"
  6. #include "tipwidget.h"
  7. #include "checkperiodfunc.h"
  8. AddPeriodDialog::AddPeriodDialog(ePeriodType type, QWidget *parent) :
  9. DialogBase(true, parent),
  10. ui(new Ui::AddPeriodWidget), m_type(type)
  11. {
  12. QWidget* contentWidget = new QWidget(this);
  13. ui->setupUi(contentWidget);
  14. /* 设置内容 */
  15. this->setContentWidget(contentWidget);
  16. /* 设置标题 */
  17. setTitle("添加检测周期");
  18. if(type == PERIOD_WEEK)
  19. {
  20. ui->widgetDate->hide();
  21. } else
  22. {
  23. ui->widgetWeek->hide();
  24. }
  25. /* 设置下拉框阴影 */
  26. ui->comboBox->setViewShadowEffect();
  27. /* 设置时间框默认时间 */
  28. ui->timeEdit_start->setTime(QTime(0, 0, 0));
  29. ui->timeEdit_end->setTime(QTime(23, 59, 59));
  30. ui->timeEdit_start->SetMainWindow(this);
  31. ui->timeEdit_end->SetMainWindow(this);
  32. /* 设置日期格式,设置默认日期 */
  33. ui->dateEdit->setDisplayFormat("yyyy-MM-dd");
  34. ui->dateEdit->setDate(QDate::currentDate());
  35. /* 禁用comboBox滚动修改 */
  36. ui->comboBox->setWheelDisabled(true);
  37. /* 给下拉框设置可选项 */
  38. for(auto it = MapWeekTypeToString.begin(); it != MapWeekTypeToString.end(); ++it)
  39. {
  40. if(it.key() == eWeekType::Week_Special)
  41. {
  42. continue; // 跳过特殊日
  43. }
  44. ui->comboBox->addItem(it.value(), QVariant::fromValue(it.key()));
  45. }
  46. /* 设置QSS */
  47. setQSS();
  48. }
  49. AddPeriodDialog::~AddPeriodDialog()
  50. {
  51. delete ui;
  52. }
  53. /* 设置QSS */
  54. void AddPeriodDialog::setQSS()
  55. {
  56. QString qssPath = UIStyle.getQSSPath() + "/addperiodwidget.qss";
  57. QFile file(qssPath);
  58. if(file.open(QFile::ReadOnly))
  59. {
  60. this->setStyleSheet(file.readAll());
  61. file.close();
  62. } else
  63. {
  64. SPDLOG_LOGGER_WARN(m_logger, "打开QSS文件失败: {}", qssPath.toStdString());
  65. }
  66. }
  67. /* 更新计划 */
  68. void AddPeriodDialog::updatePlan()
  69. {
  70. m_plan.weekType = ui->comboBox->currentData().value<eWeekType>();
  71. m_plan.date = ui->dateEdit->date();
  72. m_plan.timeStart = ui->timeEdit_start->getTime();
  73. m_plan.timeEnd = ui->timeEdit_end->getTime();
  74. }
  75. /* 重载点击OK按钮之后的操作 */
  76. bool AddPeriodDialog::isOKClicked()
  77. {
  78. /* 更新计划 */
  79. updatePlan();
  80. /* 先检查时间是否相等,前后冲突 */
  81. if(m_plan.timeStart >= m_plan.timeEnd)
  82. {
  83. TipWidget::display(TipWidget::OPERATOR_WARN, "开始时间不能大于或等于结束时间!", this);
  84. return false;
  85. }
  86. if(m_type == ePeriodType::PERIOD_WEEK)
  87. {
  88. if(isWeekPlanDuplicate(m_planList, m_plan))
  89. {
  90. TipWidget::display(TipWidget::OPERATOR_WARN, "计划时间不允许重叠!", this);
  91. return false;
  92. }
  93. } else
  94. {
  95. if(isDatePlanDuplicate(m_planList, m_plan))
  96. {
  97. TipWidget::display(TipWidget::OPERATOR_WARN, "计划时间不允许重叠!", this);
  98. return false;
  99. }
  100. }
  101. return true;
  102. }