diff options
Diffstat (limited to 'Swift/QtUI/Whiteboard/GView.cpp')
-rw-r--r-- | Swift/QtUI/Whiteboard/GView.cpp | 62 |
1 files changed, 20 insertions, 42 deletions
diff --git a/Swift/QtUI/Whiteboard/GView.cpp b/Swift/QtUI/Whiteboard/GView.cpp index 1e77b62..eead3c7 100644 --- a/Swift/QtUI/Whiteboard/GView.cpp +++ b/Swift/QtUI/Whiteboard/GView.cpp @@ -48,33 +48,21 @@ namespace Swift { } void GView::addItem(QGraphicsItem* item, QString id, int pos) { -// QList<QGraphicsItem*> items = scene()->items(); -// std::cout << "pos: " << pos << " size: " << items.size() << std::endl; -// if (mousePressed && pos >= items_.size()) { -// pos++; -// } itemsMap_.insert(id, item); if (pos > items_.size()) { item->setZValue(zValue++); scene()->addItem(item); items_.append(item); } else { - QList<QGraphicsItem*>::iterator it = items_.begin(); - for (int i = 1; i < pos; i++) { - ++it; - } - // std::cout << id.toStdString() << " before: " << (*it)->data(100).toString().toStdString() << std::endl; - item->setZValue((*it)->zValue()); + QGraphicsItem* temp = items_.at(pos-1); + item->setZValue(temp->zValue()); scene()->addItem(item); - item->stackBefore(*it); - // --it; - items_.insert(it, item); + item->stackBefore(temp); + items_.insert(pos-1, item); } - -// items = scene()->items(); - std::cout << "items:" << std::endl; + std::cout << "items in:" << std::endl; for (QList<QGraphicsItem*>::const_iterator it = items_.begin(); it != items_.end(); ++it) { - std::cout << (*it)->data(100).toString().toStdString() << std::endl; + std::cout << "item: " << (*it)->data(100).toString().toStdString() << std::endl; } std::cout << std::endl; } @@ -86,6 +74,7 @@ namespace Swift { void GView::clear() { scene()->clear(); items_.clear(); + itemsMap_.clear(); } QGraphicsItem* GView::getItem(QString id) { @@ -247,15 +236,15 @@ namespace Swift { QGraphicsItem* item = scene()->items(rect).first(); QString id = item->data(100).toString(); deleteItem(id); - int i = 1; +/* int i = 1; QList<QGraphicsItem*>::const_iterator it; for (it = items_.begin(); it != items_.end(); ++it) { if (*it == item) { break; } i++; - } - itemDeleted(id, i); + }*/ + itemDeleted(id, items_.indexOf(item)+1); } } else if (mode == Circle) { @@ -301,13 +290,13 @@ namespace Swift { QPointF point = this->mapToScene(event->pos()); QGraphicsTextItem* item = scene()->addText(""); QString id = getNewID(); - items_.append(item); - item->setZValue(zValue++); +// items_.append(item); +// item->setZValue(zValue++); item->setData(100, id); item->setData(101, items_.size()); item->setDefaultTextColor(pen.color()); textDialog = new TextDialog(item, this); - connect(textDialog, SIGNAL(accepted(QGraphicsItem*)), this, SIGNAL(lastItemChanged(QGraphicsItem*))); + connect(textDialog, SIGNAL(accepted(QGraphicsTextItem*)), this, SLOT(handleTextItemModified(QGraphicsTextItem*))); textDialog->setAttribute(Qt::WA_DeleteOnClose); textDialog->show(); item->setPos(point); @@ -362,20 +351,13 @@ namespace Swift { mousePressed = false; QGraphicsPolygonItem* polygon = dynamic_cast<QGraphicsPolygonItem*>(lastItem); if (polygon && polygon->polygon().size() >= 3) { - int i = 1; - for (QList<QGraphicsItem*>::const_iterator it = items_.begin(); it != items_.end(); ++it) { - if (*it == polygon) { - break; - } - i++; - } - lastItemChanged(polygon, i, Update); + lastItemChanged(polygon, items_.indexOf(polygon)+1, Update); } else if (lastItem) { zValue++; lastItem->setZValue(zValue++); items_.append(lastItem); itemsMap_.insert(lastItem->data(100).toString(), lastItem); - std::cout << "items:" << std::endl; + std::cout << "items out:" << std::endl; for (QList<QGraphicsItem*>::const_iterator it = items_.begin(); it != items_.end(); ++it) { std::cout << (*it)->data(100).toString().toStdString() << std::endl; } @@ -384,19 +366,15 @@ namespace Swift { lastItemChanged(lastItem, items_.size(), New); } else if (selectionRect){ QGraphicsItem* item = selectionRect->data(1).value<QGraphicsItem*>(); - int i = 1; - for (QList<QGraphicsItem*>::const_iterator it = items_.begin(); it != items_.end(); ++it) { - if (*it == item) { - break; - } - i++; - } - lastItemChanged(item, i, Update); + lastItemChanged(item, items_.indexOf(item)+1, Update); } -// lastItem = 0; } + void GView::handleTextItemModified(QGraphicsTextItem* item) { + lastItemChanged(item, item->data(101).toInt(), Update); + } + void GView::moveUpSelectedItem() { QGraphicsItem* item = selectionRect->data(1).value<QGraphicsItem*>(); |