CMind.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #ifndef CMIND_H
  2. #define CMIND_H
  3. #include <QObject>
  4. struct CNodeData
  5. {
  6. int id = -1; // 节点 id, 对应数据库节点表中的 id, 数据库自动生成
  7. int projectId = -1; // 项目 id, 对应数据库项目表中的 id, 为脑图所属项目, 数据库自动生成
  8. int evalType = 0; // 评估类型
  9. int number = -1; // 节点编号, 作用域为当前脑图, 0 为根节点
  10. int pNumber = -1; // 父节点编号
  11. QString name; // 名称
  12. QString remark; // 备注
  13. CNodeData(int projId = -1, int evalType = 0, int number = -1, int pNumber = -1, int id = -1);
  14. bool isValid() const;
  15. bool isNull() const;
  16. bool isCached() const;
  17. bool hasParent() const;
  18. };
  19. class CMind : public QObject
  20. {
  21. Q_OBJECT
  22. public:
  23. explicit CMind(int projId = -1, int evalType = 0, QObject *parent = nullptr);
  24. // 节点数据
  25. QList<CNodeData> nodeList() const;
  26. void setNodeList(QList<CNodeData> list);
  27. bool isNodeValid(CNodeData n) const;
  28. CNodeData node(int number) const;
  29. bool containsNode(int number) const;
  30. /// 指定父节点, 创建节点
  31. CNodeData createNode(int pNumber = -1) const;
  32. void addNode(CNodeData n);
  33. void removeNode(int number);
  34. bool hasAncestor(int childNumber, int ancestorNumber) const;
  35. private:
  36. QList<int> numberList() const; // 节点编号列表
  37. // 最大的节点编号, 创建节点时, 编号递增
  38. int maxNumber() const;
  39. // 最小的节点编号, 由于创建节点时编号递增, 所以此为根节点
  40. int minNumber() const;
  41. private:
  42. QList<CNodeData> m_nodeList; // 节点列表
  43. int m_projectId = -1;
  44. int m_evalType = 0;
  45. };
  46. #endif // CMIND_H