addperioddialog.cpp 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  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. /* 禁用comboBox滚动修改 */
  33. ui->comboBox->setWheelDisabled(true);
  34. /* 给下拉框设置可选项 */
  35. for(auto it = MapWeekTypeToString.begin(); it != MapWeekTypeToString.end(); ++it)
  36. {
  37. if(it.key() == eWeekType::Week_Special)
  38. {
  39. continue; // 跳过特殊日
  40. }
  41. ui->comboBox->addItem(it.value(), QVariant::fromValue(it.key()));
  42. }
  43. /* 设置QSS */
  44. setQSS();
  45. }
  46. AddPeriodDialog::~AddPeriodDialog()
  47. {
  48. delete ui;
  49. }
  50. /* 设置QSS */
  51. void AddPeriodDialog::setQSS()
  52. {
  53. QString qssPath = UIStyle.getQSSPath() + "/addperiodwidget.qss";
  54. QFile file(qssPath);
  55. if(file.open(QFile::ReadOnly))
  56. {
  57. this->setStyleSheet(file.readAll());
  58. file.close();
  59. } else
  60. {
  61. SPDLOG_LOGGER_WARN(m_logger, "打开QSS文件失败: {}", qssPath.toStdString());
  62. }
  63. }
  64. /* 更新计划 */
  65. void AddPeriodDialog::updatePlan()
  66. {
  67. m_plan.weekType = ui->comboBox->currentData().value<eWeekType>();
  68. m_plan.date = ui->dateEdit->date();
  69. m_plan.timeStart = ui->timeEdit_start->getTime();
  70. m_plan.timeEnd = ui->timeEdit_end->getTime();
  71. }
  72. /* 重载点击OK按钮之后的操作 */
  73. bool AddPeriodDialog::isOKClicked()
  74. {
  75. /* 更新计划 */
  76. updatePlan();
  77. /* 先检查时间是否相等,前后冲突 */
  78. if(m_plan.timeStart >= m_plan.timeEnd)
  79. {
  80. TipWidget::display(TipWidget::OPERATOR_WARN, "开始时间不能大于或等于结束时间!", this);
  81. return false;
  82. }
  83. if(m_type == ePeriodType::PERIOD_WEEK)
  84. {
  85. if(isWeekPlanDuplicate(m_planList, m_plan))
  86. {
  87. TipWidget::display(TipWidget::OPERATOR_WARN, "计划时间不允许重叠!", this);
  88. return false;
  89. }
  90. } else
  91. {
  92. if(isDatePlanDuplicate(m_planList, m_plan))
  93. {
  94. TipWidget::display(TipWidget::OPERATOR_WARN, "计划时间不允许重叠!", this);
  95. return false;
  96. }
  97. }
  98. return true;
  99. }