| 88 | } |
| 89 | |
| 90 | QQuickItem *TaskConnectionItem::findTaskItemRecursive(QQuickItem *item, BaseTask *task) |
| 91 | { |
| 92 | // Проверяем objectName и task property |
| 93 | if (item->objectName() == "TaskItem") { |
| 94 | QVariant taskProp = item->property("task"); |
| 95 | if (taskProp.isValid()) { |
| 96 | BaseTask *itemTask = taskProp.value<BaseTask *>(); |
| 97 | if (itemTask == task) { |
| 98 | return item; |
| 99 | } |
| 100 | } |
| 101 | } |
| 102 | |
| 103 | // Рекурсивно ищем в детях |
| 104 | auto children = item->childItems(); |
| 105 | |
| 106 | for (QQuickItem *child : children) { |
| 107 | if (QQuickItem *found = findTaskItemRecursive(child, task)) { |
| 108 | return found; |
| 109 | } |
| 110 | } |
| 111 | |
| 112 | return nullptr; |
| 113 | } |
| 114 | |
| 115 | QQuickItem *TaskConnectionItem::findPortItem(QQuickItem *taskItem, TaskPort *port) |
| 116 | { |