onedetectplan.cpp 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. #include "onedetectplan.h"
  2. #include "ui_onedetectplan.h"
  3. #include "timewidget.h"
  4. #include "customcombobox.h"
  5. #include "GlobalVariable.h"
  6. OneDetectPlan::OneDetectPlan(QWidget *parent) :
  7. QWidget(parent),
  8. ui(new Ui::OneDetectPlan)
  9. {
  10. ui->setupUi(this);
  11. /* 设置下拉框阴影 */
  12. ui->comboBox->setViewShadowEffect();
  13. /* 设置时间框默认时间 */
  14. // ui->timeEdit_start->setDefaultStyle();
  15. // ui->timeEdit_end->setDefaultStyle();
  16. ui->timeEdit_start->setTime(QTime(0, 0, 0));
  17. ui->timeEdit_end->setTime(QTime(23, 59, 59));
  18. /* 禁用comboBox滚动修改 */
  19. ui->comboBox->setWheelDisabled(true);
  20. /* 禁用QTimeEdit滚轮编辑 */
  21. ui->timeEdit_start->setWheelDisabled(true);
  22. ui->timeEdit_end->setWheelDisabled(true);
  23. ui->timeEdit_start->SetMainWindow(parent->window());
  24. ui->timeEdit_end->SetMainWindow(parent->window());
  25. /* 禁止使用时间图标清空时间 */
  26. ui->timeEdit_start->setDisableClear(true);
  27. ui->timeEdit_end->setDisableClear(true);
  28. /* 给下拉框设置可选项 */
  29. for(auto it = MapWeekTypeToString.begin(); it != MapWeekTypeToString.end(); ++it)
  30. {
  31. if(it.key() == eWeekType::Week_Special)
  32. {
  33. continue; // 跳过特殊日
  34. }
  35. ui->comboBox->addItem(it.value(), QVariant::fromValue(it.key()));
  36. }
  37. /* 连接信号和槽 */
  38. connect(ui->timeEdit_start, &TimeWidget::signal_formerTimer, this, &OneDetectPlan::do_formerTime);
  39. connect(ui->timeEdit_start, &TimeWidget::signal_nowTime, this, &OneDetectPlan::do_afterTime);
  40. connect(ui->pBtn_close, &QPushButton::clicked, this, &OneDetectPlan::signal_oneDetectPlanCloseClicked);
  41. }
  42. OneDetectPlan::~OneDetectPlan()
  43. {
  44. delete ui;
  45. }
  46. /* 设置QSS */
  47. void OneDetectPlan::setQSS(const QString &qss)
  48. {
  49. if(qss.isEmpty())
  50. {
  51. return;
  52. }
  53. /* 设置QSS */
  54. this->setStyleSheet(qss);
  55. }
  56. /* 设置计划 */
  57. void OneDetectPlan::setPlan(const OnePlan_t &plan)
  58. {
  59. m_plan = plan;
  60. /* 设置周几 */
  61. ui->comboBox->setCurrentText(MapWeekTypeToString.value(plan.weekType));
  62. /* 设置日期 */
  63. ui->timeEdit_start->setTime(plan.timeStart);
  64. ui->timeEdit_end->setTime(plan.timeEnd);
  65. }
  66. /* 获取计划 */
  67. OnePlan_t OneDetectPlan::getPlan()
  68. {
  69. /* 更新计划 */
  70. m_plan.weekType = ui->comboBox->currentData().value<eWeekType>();
  71. m_plan.timeStart = ui->timeEdit_start->getTime();
  72. m_plan.timeEnd = ui->timeEdit_end->getTime();
  73. return m_plan;
  74. }
  75. /* 修改前的时间 */
  76. void OneDetectPlan::do_formerTime(const QTime &time)
  77. {
  78. if(sender() == ui->timeEdit_start)
  79. {
  80. m_startFormerTime = time;
  81. }
  82. else if(sender() == ui->timeEdit_end)
  83. {
  84. m_endFormerTime = time;
  85. }
  86. }
  87. /* 修改后的计划时间 */
  88. void OneDetectPlan::do_afterTime(const QTime &time)
  89. {
  90. OnePlan_t formerPlan = m_plan;
  91. getPlan(); // 更新计划
  92. emit signal_planModified(formerPlan, m_plan);
  93. }