CMind.h 2.0 KB

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