123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- #ifndef CHECKPERIODWIDGET_H
- #define CHECKPERIODWIDGET_H
- #include <QWidget>
- #include <QVBoxLayout>
- #include <qboxlayout.h>
- #include <QMap>
- #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<CompareItemInfo_t>& 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<OnePlan_t> updateDetectPlanList(int id);
- /* 清空当前检测计划布局中的控件 */
- void removeAllDetectPlanWidgets();
- /* 清空当前非检测计划布局中的控件 */
- void removeAllNoDetectPlanWidgets();
- /* 从当前列表中添加控件到布局 */
- void addDetectPlanToLayout();
- /* 从当前列表中添加非检测计划控件到布局 */
- void addNoDetectPlanToLayout();
- /* 更新所有对比项的计划周期 */
- void updateCompareItemDetectPeriod(QMap<int, DetectPeriodConfig_t>& mapDetectConfig);
- private:
- Ui::CheckPeriodWidget *ui;
- std::shared_ptr<spdlog::logger> m_logger = nullptr;
- QString m_qssPlan; /* 一条计划的样式表 */
- FromWebAPI* m_fromWebAPI = nullptr; /* 用于从Web API获取数据 */
- /* 检测计划 */
- QVBoxLayout* m_layoutDetectPlans; /* 检测计划的布局,计划控件都在这里面 */
- QList<OnePlan_t> m_currentPlanList; /* 当前的计划列表 */
- QList<OneDetectPlan*>* m_pListcurrDetect = nullptr; /* 当前的检测计划列表 */
- QMap<int, QList<OneDetectPlan*>*> m_mapDetectPlanList; /* 检测计划列表,key为对比项id,value为计划列表 */
- /* 非检测计划 */
- QVBoxLayout* m_layoutNoDetectPlans; /* 检测非检测计划日期的布局,计划控件都在这里面 */
- QList<OneDetectPlan*>* m_pListcurrNoDetect = nullptr; /* 当前的非检测计划日期列表 */
- QMap<int, QList<OneDetectPlan*>*> m_mapNoDetectPlanList;/* 非检测计划列表,key为对比项id,value为计划列表 */
- /* 非检测计划应用于静音、过载、反相 */
- QMap<int, NoDetectPlanApply_t> m_mapNoDetectApply; /* 非检测计划应用于静音、过载、反相的配置,key为对比项id */
- NoDetectPlanApply_t m_currNoDetectApply; /* 当前非检测计划应用配置 */
- };
- #endif // CHECKPERIODWIDGET_H
|