templatemanager.h 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. #ifndef TEMPLATEMANAGER_H
  2. #define TEMPLATEMANAGER_H
  3. #include <QDialog>
  4. #include <QCheckBox>
  5. #include <QTableWidgetItem>
  6. #include <QMap>
  7. #include <QStyledItemDelegate>
  8. #include <QLineEdit>
  9. class TemplateItem;
  10. struct OneTemplateInfo;
  11. class FromWebAPI;
  12. struct OnePlanItemInfo;
  13. class FromSQLite;
  14. namespace Ui {
  15. class TemplateManager;
  16. }
  17. /* 限制QLineEdit字数的代理类 */
  18. class LineEditDelegate : public QStyledItemDelegate {
  19. public:
  20. explicit LineEditDelegate(int maxLength, QObject* parent = nullptr)
  21. : QStyledItemDelegate(parent), m_maxLength(maxLength) {}
  22. QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const override
  23. {
  24. QLineEdit* editor = new QLineEdit(parent);
  25. /* 设置最大输入长度 */
  26. editor->setMaxLength(m_maxLength);
  27. return editor;
  28. }
  29. private:
  30. int m_maxLength;
  31. };
  32. class TemplateManager : public QDialog
  33. {
  34. Q_OBJECT
  35. public:
  36. explicit TemplateManager(QWidget *parent = nullptr);
  37. ~TemplateManager();
  38. /* 是否点下了OK */
  39. bool isOk() const { return m_isOk; }
  40. /* 获取的已删除的模板列表 */
  41. QList<OneTemplateInfo>& getDeleteTemplateList() { return m_listDeleteTemplate; }
  42. /* 获取已修改的模版列表 */
  43. QMap<OneTemplateInfo, QList<OnePlanItemInfo>>& getModifyTemplateList() { return m_mapModifyTemplate; }
  44. /* 获取修改名称的列表 */
  45. QMap<OneTemplateInfo, QString>& getModifyTemplateNameList() { return m_mapModifyTemplateName; }
  46. /* 设置模版列表 */
  47. void setTemplateList(const QMultiMap<int, OneTemplateInfo>& mapTemplate);
  48. /* 设置QSS */
  49. void setQSSPath(const QString& qssPath);
  50. /* 设置WebAPI指针 */
  51. void setWebAPI(FromWebAPI* webAPI);
  52. /* 设置FromSQLite指针 */
  53. void setFromSQLite(FromSQLite* sqlite);
  54. signals:
  55. private:
  56. /* 添加一行 */
  57. void createRow(const OneTemplateInfo& info);
  58. /* 修改模版 */
  59. void modifyTemplate(QTableWidgetItem* item);
  60. /* 删除模版 */
  61. void deleteTemplate(QTableWidgetItem* item);
  62. /* 预览 */
  63. void previewTemplate(QTableWidgetItem* item);
  64. private slots:
  65. /* 点击了OK */
  66. void do_ok();
  67. /* 点击了一个单元格 */
  68. void do_clickedItem(int row, int column);
  69. /* 单元格内容改变了 */
  70. void do_itemChanged(QTableWidgetItem* item);
  71. protected:
  72. /* 显示事件 */
  73. void showEvent(QShowEvent *event) override;
  74. /* 事件过滤器 */
  75. bool eventFilter(QObject *watched, QEvent *event) override;
  76. /* 鼠标点击事件 */
  77. void mousePressEvent(QMouseEvent *event) override;
  78. /* 鼠标移动事件 */
  79. void mouseMoveEvent(QMouseEvent *event) override;
  80. /* 鼠标释放事件 */
  81. void mouseReleaseEvent(QMouseEvent *event) override;
  82. private:
  83. Ui::TemplateManager *ui;
  84. FromWebAPI* m_fromWebAPI = nullptr; /* WebAPI操作类 */
  85. FromSQLite* m_fromSQLite = nullptr; /* SQLite操作类 */
  86. bool m_isOk = false; /* 是否点下了OK */
  87. // QString m_templateName; /* 模版名称 */
  88. int m_type = -1; /* 模版类型 */
  89. QPoint m_lastPos; /* 鼠标点击的位置 */
  90. const int m_roleChnID = Qt::UserRole + 1; /* 角色名称 */
  91. const int m_roleTemplateName = Qt::UserRole + 2; /* 模板名称,传进来的模板名称 */
  92. const int m_roleTemplateNameNow = Qt::UserRole + 3; /* 模板名称,当前的模板名称 */
  93. QList<OneTemplateInfo> m_listTemplate; /* 模版列表 */
  94. QList<OneTemplateInfo> m_listDeleteTemplate; /* 删除的模版列表 */
  95. QMap<OneTemplateInfo, QList<OnePlanItemInfo>> m_mapModifyTemplate; /* 修改的模版列表 */
  96. QMap<OneTemplateInfo, QString> m_mapModifyTemplateName; /* 修改的模版名称,OneTemplateInfo中的是原名,QString中的是新模板名字 */
  97. };
  98. #endif // TEMPLATEMANAGER_H