|
@@ -24,7 +24,12 @@ bool CNodeData::hasParent() const
|
|
|
return pNumber >= 0;
|
|
|
}
|
|
|
|
|
|
-CMind::CMind(int projId, int evalType, QObject *parent) : QObject(parent), m_projectId(projId), m_evalType(evalType) { }
|
|
|
+bool CNodeData::isSameMind(CNodeData n) const
|
|
|
+{
|
|
|
+ return projectId == n.projectId && evalType == n.evalType;
|
|
|
+}
|
|
|
+
|
|
|
+CMind::CMind(QObject *parent) : QObject(parent) { }
|
|
|
|
|
|
QList<CNodeData> CMind::nodeList() const
|
|
|
{
|
|
@@ -41,8 +46,13 @@ void CMind::setNodeList(QList<CNodeData> list)
|
|
|
|
|
|
bool CMind::isNodeValid(CNodeData n) const
|
|
|
{
|
|
|
- bool v = n.isValid() && n.projectId == m_projectId && n.evalType == m_evalType;
|
|
|
- return v;
|
|
|
+ CNodeData root = node(minNumber());
|
|
|
+ if (root.isValid()) {
|
|
|
+ bool v = n.isValid() && n.isSameMind(root);
|
|
|
+ return v;
|
|
|
+ }
|
|
|
+
|
|
|
+ return n.isValid();
|
|
|
}
|
|
|
|
|
|
CNodeData CMind::node(int number) const
|
|
@@ -59,21 +69,19 @@ bool CMind::containsNode(int number) const
|
|
|
return numberList().contains(number);
|
|
|
}
|
|
|
|
|
|
-CNodeData CMind::createNode(int pNumber) const
|
|
|
-{
|
|
|
- CNodeData n;
|
|
|
- if (containsNode(pNumber) || (pNumber < 0 && m_nodeList.count() <= 0)) {
|
|
|
- n = CNodeData(m_projectId, m_evalType, maxNumber() + 1, pNumber);
|
|
|
- }
|
|
|
- return n;
|
|
|
-}
|
|
|
-
|
|
|
void CMind::addNode(CNodeData n)
|
|
|
{
|
|
|
+ // 节点无效, 不添加
|
|
|
if (isNodeValid(n) == false) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ // 指明了父节点, 但父节点无效, 不添加
|
|
|
+ if (n.hasParent() && containsNode(n.pNumber) == false) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 节点编号重复, 不添加
|
|
|
if (numberList().contains(n.number)) {
|
|
|
return;
|
|
|
}
|
|
@@ -104,6 +112,12 @@ void CMind::removeNode(int number)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+CNodeData CMind::root() const
|
|
|
+{
|
|
|
+ return node(minNumber());
|
|
|
+ ;
|
|
|
+}
|
|
|
+
|
|
|
bool CMind::hasAncestor(int childNumber, int ancestorNumber) const
|
|
|
{
|
|
|
CNodeData c = node(childNumber);
|