void SCnEditorScene::selectPrevField(SCnFieldItem *field) { SCnFieldItem *prev = prevField(field); if (prev != 0) { unselectItems(); prev->setSelected(true); views().first()->centerOn(prev); } }
void SCnEditorScene::selectNextField(SCnFieldItem *field) { SCnFieldItem *next = nextField(field); if (next != 0) { unselectItems(); next->setSelected(true); views().first()->centerOn(next); } }
SCnEditorScene::SCnEditorScene(QObject *parent) : QGraphicsScene(parent), mLevelOffset(30), mLevelDistance(10) { SCnFieldItem *pitem = new SCnFieldGlobalIdtf(this); pitem->setValue("test"); appendField(pitem); for (quint32 i = 0; i < 5; i++) { SCnFieldItem *item = new SCnFieldGlobalIdtf(pitem); item->setValue(QString("test %1").arg(i)); item->setParentItem(pitem); for (quint32 j = 0; j < 5; j++) { SCnFieldItem *jitem = new SCnFieldGlobalIdtf(item); jitem->setValue(QString("test %1_%2").arg(i).arg(j)); jitem->setParentItem(item); } } inputDialog = new SCnInputDialog(); connect(inputDialog, SIGNAL(textRecieved(QString)), this, SLOT(setTextForSelectedField(QString))); }
void SCnFieldItem::updateOnChilds() { qreal offset = childsOffset(); QGraphicsItem *child = 0; QList<QGraphicsItem*> _childItems = childItems(); foreach(child, _childItems) { if (!isSCnFieldType(child->type())) return; // skip non scn-fields SCnFieldItem *item = static_cast<SCnFieldItem*>(child); item->setPos(30, offset); offset += 10 + item->boundingRect().height(); } }
void SCnEditorScene::removeField(SCnFieldItem *field) { if (!mFields.contains(field)) { SCnFieldItem* parent = parentField(field); removeItem(field); delete field; while (parent) { parent->updateOnChilds(); parent = parentField(parent); } updateFieldsPositions(); } }
void SCnEditorScene::updateFieldsPositions() { SCnFieldItem *field = 0; qreal y_offset = 40.f; qreal max_width = 0.f; foreach(field, mFields) { QRectF rect = field->boundingRect(); // calculate new position QPointF pos; pos.setX(20); pos.setY(y_offset); y_offset += mLevelDistance + rect.height(); qreal w = rect.width(); max_width = qMax(w, max_width); field->setPos(pos); }
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; }
SCnEditorScene::SCnEditorScene(QObject *parent) : QGraphicsScene(parent), mLevelOffset(30), mLevelDistance(10) { SCnFieldItem *pitem = new SCnFieldGlobalIdtf(this); pitem->setValue("test"); appendField(pitem); for (quint32 i = 0; i < 10; i++) { SCnFieldItem *item = new SCnFieldGlobalIdtf(pitem); item->setValue(QString("test %1").arg(i)); item->setParentItem(pitem); for (quint32 j = 0; j < 10; j++) { SCnFieldItem *jitem = new SCnFieldGlobalIdtf(pitem); jitem->setValue(QString("test %1_%2").arg(i).arg(j)); jitem->setParentItem(item); } } }