CMind.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #ifndef CMIND_H
  2. #define CMIND_H
  3. #include "CNode.h"
  4. #include <QObject>
  5. class CMind : public QObject
  6. {
  7. Q_OBJECT
  8. public:
  9. explicit CMind(QObject *parent = nullptr);
  10. // 节点数据
  11. QList<CNodeData> nodeList() const;
  12. void setNodeList(QList<CNodeData> list);
  13. bool isNodeValid(CNodeData n) const;
  14. CNodeData node(int number) const;
  15. bool containsNode(int number) const;
  16. bool canAddNode(CNodeData n);
  17. void addNode(CNodeData n);
  18. void removeNode(int number);
  19. void updateNode(CNodeData n);
  20. CNodeData root() const;
  21. bool hasAncestor(int childNumber, int ancestorNumber) const;
  22. // 最大的节点编号, 创建节点时, 编号递增
  23. int maxNumber() const;
  24. // 最小的节点编号, 由于创建节点时编号递增, 所以此为根节点
  25. int minNumber() const;
  26. void clear();
  27. // 节点所在层级
  28. int levelOfNode(CNodeData n) const;
  29. // 节点图层级数
  30. int levels() const;
  31. // 某一层节点列表, 第1层为根节点
  32. QList<CNodeData> nodesInLevel(int i) const;
  33. // 子节点列表
  34. QList<CNodeData> subNodes(CNodeData n) const;
  35. // 某节点的叶子节点个数或包含的分支数
  36. int leavesCountOfNode(CNodeData n) const;
  37. // 脑图的叶子节点个数或包含的分支数
  38. int leavesCount() const;
  39. // 某节点的叶子节点列表, 即最外层节点
  40. QList<CNodeData> leavesOfNode(CNodeData n) const;
  41. // 脑图的叶子节点列表
  42. QList<CNodeData> leaves() const;
  43. signals:
  44. void sigRemoveNode(int id);
  45. private:
  46. QList<int> numberList() const; // 节点编号列表
  47. private:
  48. QList<CNodeData> m_nodeList; // 节点列表
  49. };
  50. #endif // CMIND_H