plancard.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #ifndef PLANCARD_H
  2. #define PLANCARD_H
  3. #include <QWidget>
  4. #include <QStandardItemModel>
  5. #include <QSortFilterProxyModel>
  6. #include "TransmitterSwitchInfo.h"
  7. namespace Ui {
  8. class PlanCard;
  9. }
  10. /**
  11. * @brief 用户枚举值
  12. *
  13. */
  14. enum QtUserRole
  15. {
  16. UserRole_WeekDay = Qt::UserRole + 1, /* 周几 */
  17. UserRole_Time, /* 时间 */
  18. UserRole_OnOff /* 开关机 */
  19. };
  20. /**
  21. * @brief 自定义排序类
  22. *
  23. */
  24. class CSortModel : public QSortFilterProxyModel
  25. {
  26. Q_OBJECT
  27. public:
  28. explicit CSortModel(QObject *parent = nullptr) : QSortFilterProxyModel(parent) {}
  29. ~CSortModel() {}
  30. protected:
  31. /* 重载比较函数 */
  32. bool lessThan(const QModelIndex &left, const QModelIndex &right) const override;
  33. };
  34. class PlanCard : public QWidget
  35. {
  36. Q_OBJECT
  37. public:
  38. explicit PlanCard(QWidget *parent = nullptr);
  39. ~PlanCard();
  40. /* 设置频率信息 */
  41. void setChannelInfo(const ChannelInfo& info);
  42. /* 获取频率信息 */
  43. ChannelInfo& getChannelInfo() { return m_channelInfo; }
  44. /* 添加一项 */
  45. void addPlanItem(const enum_WeekDay weekDay, const QDateTime& time, const enum_OnOff onOff);
  46. /* 取出所有的计划信息 */
  47. void getAllPlanInfo(QList<ExecPlanItemInfo>& list);
  48. /* 设置计划列表 */
  49. void setPlanList(const QList<ExecPlanItemInfo>& list);
  50. private slots:
  51. /* 更改UI外观 */
  52. void do_setUIStyle();
  53. private:
  54. Ui::PlanCard *ui;
  55. ChannelInfo m_channelInfo; /* 频率信息 */
  56. QStandardItemModel* m_model; /* 表格模型,存储数据 */
  57. CSortModel* m_sortModel; /* 排序模型 */
  58. };
  59. #endif // PLANCARD_H