#ifndef CHECKPERIODWIDGET_H #define CHECKPERIODWIDGET_H #include #include #include #include #include "spdlog/spdlog.h" #include "GlobalVariable.h" #include "onedetectplan.h" #include "CompareItemData.h" namespace Ui { class CheckPeriodWidget; } /** * @brief 检测周期设置界面 * * 该界面用于设置检测周期,包括添加检测计划和不检测计划 */ class CheckPeriodWidget : public QWidget { Q_OBJECT public: explicit CheckPeriodWidget(QWidget *parent = nullptr); ~CheckPeriodWidget(); /* 更新可选的对比项列表 */ void updateCompareItemList(const QList& compareItemList); /* 设置计划列表 */ void setDetectPlanList(const QList& planList); private slots: /* 选择了一个对比项 */ void do_comboBox_selectCompareItem_currentIndexChanged(int index); /* 添加一个检测计划 */ void do_pBtn_addDetectPlan_clicked(); /* 添加一个不检测计划 */ void do_pBtn_addNoDetectPlan_clicked(); /* 删除一个检测计划 */ void do_pBtn_deleteDetectPlan_clicked(); /* 删除一个不检测计划 */ void do_pBtn_deleteNoDetectPlan_clicked(); /* 修改了日期或周几,检测是否冲突 */ void do_detectPlanModifiedWeek(OnePlan_t formerPlan, OnePlan_t newPlan); /* 点击了检测计划的时间按钮,在这里修改时间 */ void do_detectPlanModifiedTime(QPoint pBtnSize, bool isStartTime); private: /* 初始化QListWidget */ void initListWidget(); /* 添加一个检测计划 */ void addDetectPlan(const OnePlan_t& plan); /* 重新排序检测计划 */ void sortDetectPlanList(); /* 更新当前的检测计划列表 */ QList updateDetectPlanList(int id); /* 清空当前检测计划布局中的控件 */ void removeAllDetectPlanWidgets(); /* 从当前列表中添加控件到布局 */ void addDetectPlanToLayout(); private: Ui::CheckPeriodWidget *ui; std::shared_ptr m_logger = nullptr; QVBoxLayout* m_layoutDetectPlans; /* 检测计划的布局,计划控件都在这里面 */ QString m_qssPlan; /* 一条计划的样式表 */ QList m_currentPlanList; /* 当前的计划列表 */ QList* m_pListcurrDetect = nullptr; /* 当前的检测计划列表 */ QMap*> m_mapDetectPlanList; /* 检测计划列表,key为对比项id,value为计划列表 */ }; #endif // CHECKPERIODWIDGET_H