123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- #ifndef CMIND_H
- #define CMIND_H
- #include "CNode.h"
- #include <QObject>
- struct SeqNode
- {
- QString name;
- QStringList childs;
- };
- class CMind : public QObject
- {
- Q_OBJECT
- public:
- explicit CMind(QObject *parent = nullptr);
- // 节点数据
- QList<CNodeData> nodeList() const;
- void setNodeList(QList<CNodeData> list);
- bool isNodeValid(CNodeData n) const;
- CNodeData node(int number) const;
- bool containsNode(int number) const;
- bool canAddNode(CNodeData n);
- void addNode(CNodeData n);
- void removeNode(int number);
- void updateNode(CNodeData n);
- CNodeData root() const;
- bool hasAncestor(int childNumber, int ancestorNumber) const;
- /// 节点是否被设置为无效
- /// 节点被设置为无效时, 其后代节点也被视为无效
- ///
- bool isInvalidated(int number) const;
- // 最大的节点编号, 创建节点时, 编号递增
- int maxNumber() const;
- // 最小的节点编号, 由于创建节点时编号递增, 所以此为根节点
- int minNumber() const;
- void clear();
- // 节点所在层级
- int levelOfNode(CNodeData n) const;
- // 节点图层级数
- int levels() const;
- // 某一层节点列表, 第1层为根节点
- QList<CNodeData> nodesInLevel(int i) const;
- // 子节点列表
- QList<CNodeData> subNodes(CNodeData n) const;
- // 某节点的叶子节点个数或包含的分支数
- int leavesCountOfNode(CNodeData n) const;
- // 脑图的叶子节点个数或包含的分支数
- int leavesCount() const;
- // 某节点的叶子节点列表, 即最外层节点
- QList<CNodeData> leavesOfNode(CNodeData n) const;
- // 脑图的叶子节点列表
- QList<CNodeData> leaves() const;
- void getSeqNodes(QList<QList<SeqNode>> &seqNodes) const; // 序列所有节点
- const CNode *nodeObject() const;
- signals:
- void sigRemoveNode(int id);
- private:
- QList<int> numberList() const; // 节点编号列表
- private:
- QList<CNodeData> m_nodeList; // 节点列表
- };
- #endif // CMIND_H
|