//--------------------------------------------------------------------------------------------------------------------- int VDetail::Edge(const quint32 &p1, const quint32 &p2) const { if (OnEdge(p1, p2) == false) { qDebug()<<"Points don't on edge."; return -1; } QVector<VNodeDetail> list = listNodePoint(); int i = indexOfNode(list, p1); int j = indexOfNode(list, p2); int min = qMin(i, j); if (min == 0 && (i == list.size() - 1 || j == list.size() - 1)) { return list.size() - 1; } else { return min; } }
void ProjectTreeViewBase::moveItems (OwnedArray <Project::Item>& selectedNodes, Project::Item destNode, int insertIndex) { for (int i = selectedNodes.size(); --i >= 0;) { Project::Item* const n = selectedNodes.getUnchecked(i); if (destNode == *n || destNode.state.isAChildOf (n->state)) // Check for recursion. return; if (! destNode.canContain (*n)) selectedNodes.remove (i); } // Don't include any nodes that are children of other selected nodes.. for (int i = selectedNodes.size(); --i >= 0;) { Project::Item* const n = selectedNodes.getUnchecked(i); for (int j = selectedNodes.size(); --j >= 0;) { if (j != i && n->state.isAChildOf (selectedNodes.getUnchecked(j)->state)) { selectedNodes.remove (i); break; } } } // Remove and re-insert them one at a time.. for (int i = 0; i < selectedNodes.size(); ++i) { Project::Item* selectedNode = selectedNodes.getUnchecked(i); if (selectedNode->state.getParent() == destNode.state && indexOfNode (destNode.state, selectedNode->state) < insertIndex) --insertIndex; selectedNode->removeItemFromProject(); destNode.addChild (*selectedNode, insertIndex++); } }
//--------------------------------------------------------------------------------------------------------------------- bool VDetail::OnEdge(const quint32 &p1, const quint32 &p2) const { QVector<VNodeDetail> list = listNodePoint(); if (list.size() < 3) { qDebug()<<"Not enough points."; return false; } int i = indexOfNode(list, p1); int j1 = 0, j2 = 0; if (i == list.size() - 1) { j1 = i-1; j2 = 0; } else if (i == 0) { j1 = list.size() - 1; j2 = i + 1; } else { j1 = i - 1; j2 = i + 1; } if (list.at(j1).getId() == p2 || list.at(j2).getId() == p2) { return true; } else { return false; } }
//--------------------------------------------------------------------------------------------------------------------- int VDetail::indexOfNode(const quint32 &id) const { return indexOfNode(d->nodes, id); }