|
@@ -40,36 +40,18 @@ void CMindView::addNode(CNodeData n)
|
|
|
{
|
|
|
m_mind->addNode(n);
|
|
|
CNodeItem *item = new CNodeItem(n);
|
|
|
- connect(item, &CNodeItem::sigAddSubItem, this, &CMindView::createSubNode);
|
|
|
- connect(item, &CNodeItem::sigRemoveItem, this, &CMindView::removeNode);
|
|
|
+ connect(item, &CNodeItem::sigAddSubItem, this, &CMindView::slotAddSubNode);
|
|
|
+ connect(item, &CNodeItem::sigRemoveItem, this, &CMindView::slotRemoveNode);
|
|
|
+ connect(item, &CNodeItem::sigTextChanged, this, &CMindView::slotTextChanged);
|
|
|
|
|
|
if (m_root == nullptr) {
|
|
|
m_root = item;
|
|
|
} else {
|
|
|
+ m_root->endEditing();
|
|
|
m_root->addSubNode(item);
|
|
|
}
|
|
|
- refreshItems();
|
|
|
-}
|
|
|
-
|
|
|
-void CMindView::createSubNode(int pNumber)
|
|
|
-{
|
|
|
- if (pNumber < 0) {
|
|
|
- return;
|
|
|
- }
|
|
|
- CNodeData data = root()->data();
|
|
|
- CNodeData n = CNodeData(data.projectId, data.evalType, m_mind->maxNumber() + 1, pNumber);
|
|
|
-
|
|
|
- addNode(n);
|
|
|
-}
|
|
|
+ item->textItem()->beginEditing();
|
|
|
|
|
|
-void CMindView::removeNode(int number)
|
|
|
-{
|
|
|
- m_mind->removeNode(number);
|
|
|
- if (number == m_root->data().number) {
|
|
|
- clear();
|
|
|
- } else {
|
|
|
- m_root->removeNode(number);
|
|
|
- }
|
|
|
refreshItems();
|
|
|
}
|
|
|
|
|
@@ -154,9 +136,10 @@ void CMindView::refreshNodeGeometry(CNodeItem *node, QPointF topLeft)
|
|
|
node->rectItem()->setRect(borderRect);
|
|
|
|
|
|
/// 文本
|
|
|
- QPointF textPos = QPointF(borderRect.left() + m_hNodeSpace,
|
|
|
+ QPointF textPos = QPointF(borderRect.left() + node->xMargin(),
|
|
|
borderRect.top() + (node->borderHeight() - node->textHeight()) / 2);
|
|
|
node->textItem()->setPos(textPos);
|
|
|
+ node->textItem()->setTextWidth(borderRect.width() - node->xMargin() * 2);
|
|
|
|
|
|
node->rectItem()->setPos(QPoint(0, 0));
|
|
|
|
|
@@ -180,3 +163,41 @@ void CMindView::refreshNodeGeometry(CNodeItem *node, QPointF topLeft)
|
|
|
subNode->lineItem()->setEndPos(subNode->rectItem()->centerLeft());
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+void CMindView::mousePressEvent(QMouseEvent *event)
|
|
|
+{
|
|
|
+ QGraphicsItem *item = itemAt(event->pos());
|
|
|
+ CTextItem *text = dynamic_cast<CTextItem *>(item);
|
|
|
+ if (text == nullptr && m_root != nullptr && m_root->isEditing()) {
|
|
|
+ m_root->endEditing();
|
|
|
+ refreshItems();
|
|
|
+ }
|
|
|
+ QGraphicsView::mousePressEvent(event);
|
|
|
+}
|
|
|
+
|
|
|
+void CMindView::slotAddSubNode(int pNumber)
|
|
|
+{
|
|
|
+ if (pNumber < 0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ CNodeData data = root()->data();
|
|
|
+ CNodeData n = CNodeData(data.projectId, data.evalType, m_mind->maxNumber() + 1, pNumber);
|
|
|
+
|
|
|
+ addNode(n);
|
|
|
+}
|
|
|
+
|
|
|
+void CMindView::slotRemoveNode(int number)
|
|
|
+{
|
|
|
+ m_mind->removeNode(number);
|
|
|
+ if (number == m_root->data().number) {
|
|
|
+ clear();
|
|
|
+ } else {
|
|
|
+ m_root->removeNode(number);
|
|
|
+ }
|
|
|
+ refreshItems();
|
|
|
+}
|
|
|
+
|
|
|
+void CMindView::slotTextChanged()
|
|
|
+{
|
|
|
+ refreshItems();
|
|
|
+}
|