#ifndef CHECKPERIODWIDGET_H #define CHECKPERIODWIDGET_H #include #include #include #include #include "spdlog/spdlog.h" #include "GlobalVariable.h" #include "onedetectplan.h" #include "CompareItemData.h" #include "FromWebAPI.h" namespace Ui { class CheckPeriodWidget; } /** * @brief 检测周期设置界面 * * 该界面用于设置检测周期,包括添加检测计划和不检测计划 */ class CheckPeriodWidget : public QWidget { Q_OBJECT public: explicit CheckPeriodWidget(QWidget *parent = nullptr); ~CheckPeriodWidget(); /* 更新可选的对比项列表 */ void updateCompareItemList(const QList& compareItemList); /* 保存设置 */ bool saveSettings(); /* 设置WebAPI指针 */ void setWebAPI(FromWebAPI* api) { m_fromWebAPI = api; } 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); /* 修改了静音、反相、过载相关的设置 */ void do_checkBox_clicked(); /* 恢复配置项 */ void do_pBtn_restore_clicked(); private: /* 初始化QListWidget */ void initListWidget(); /* 添加一个检测计划 */ void addDetectPlan(const OnePlan_t& plan); /* 添加一个非检测计划 */ void addNoDetectPlan(const OnePlan_t& plan); /* 重新排序检测计划 */ void sortDetectPlanList(); /* 排序非检测日期列表 */ void sortNoDetectPlanList(); /* 更新当前的检测计划列表 */ QList updateDetectPlanList(int id); /* 清空当前检测计划布局中的控件 */ void removeAllDetectPlanWidgets(); /* 清空当前非检测计划布局中的控件 */ void removeAllNoDetectPlanWidgets(); /* 从当前列表中添加控件到布局 */ void addDetectPlanToLayout(); /* 从当前列表中添加非检测计划控件到布局 */ void addNoDetectPlanToLayout(); /* 更新所有对比项的计划周期 */ void updateCompareItemDetectPeriod(QMap& mapDetectConfig); private: Ui::CheckPeriodWidget *ui; std::shared_ptr m_logger = nullptr; QString m_qssPlan; /* 一条计划的样式表 */ FromWebAPI* m_fromWebAPI = nullptr; /* 用于从Web API获取数据 */ /* 检测计划 */ QVBoxLayout* m_layoutDetectPlans; /* 检测计划的布局,计划控件都在这里面 */ QList m_currentPlanList; /* 当前的计划列表 */ QList* m_pListcurrDetect = nullptr; /* 当前的检测计划列表 */ QMap*> m_mapDetectPlanList; /* 检测计划列表,key为对比项id,value为计划列表 */ /* 非检测计划 */ QVBoxLayout* m_layoutNoDetectPlans; /* 检测非检测计划日期的布局,计划控件都在这里面 */ QList* m_pListcurrNoDetect = nullptr; /* 当前的非检测计划日期列表 */ QMap*> m_mapNoDetectPlanList;/* 非检测计划列表,key为对比项id,value为计划列表 */ /* 非检测计划应用于静音、过载、反相 */ QMap m_mapNoDetectApply; /* 非检测计划应用于静音、过载、反相的配置,key为对比项id */ NoDetectPlanApply_t m_currNoDetectApply; /* 当前非检测计划应用配置 */ }; #endif // CHECKPERIODWIDGET_H