SCnFieldItem* SCnEditorScene::prevField(SCnFieldItem *field, bool withLevelChange) { SCnFieldItem *prevField; SCnFieldItem *nextField = 0; QGraphicsItem *parentItem = field->parentItem(); if (!parentItem) return 0; QList<QGraphicsItem *> items = withLevelChange ? this->items() : parentItem->childItems(); foreach (QGraphicsItem *item, items) { if (nextField->isSCnFieldType(item->type())) { prevField = nextField; nextField = static_cast<SCnFieldItem*>(item); if (nextField == field) return prevField; } } return 0; }
SCnFieldItem* SCnEditorScene::nextField(SCnFieldItem *field, bool withLevelChange) { SCnFieldItem *nextField = 0; bool prevFieldComingFlag = false; QGraphicsItem *parentItem = field->parentItem(); if (!parentItem) return 0; QList<QGraphicsItem *> items = withLevelChange ? this->items() : parentItem->childItems(); foreach(QGraphicsItem *item, items) { if (nextField->isSCnFieldType(item->type())) { nextField = static_cast<SCnFieldItem*>(item); if (prevFieldComingFlag) return nextField; if (nextField == field) prevFieldComingFlag = true; } } return 0; }