diff options
author | Mateusz Piekos <mateuszpiekos@gmail.com> | 2012-07-26 15:46:45 (GMT) |
---|---|---|
committer | Mateusz Piekos <mateuszpiekos@gmail.com> | 2012-07-26 15:46:45 (GMT) |
commit | 2e9ba0fb5a68abd8fa44d9996ea321a77876af14 (patch) | |
tree | 23a1bdf024045ad619af906bf2438dd05fa3c8fe /Swift | |
parent | 833e544490a0e3ff5eeebe44fae2b9a8f98d4a78 (diff) | |
download | swift-contrib-2e9ba0fb5a68abd8fa44d9996ea321a77876af14.zip swift-contrib-2e9ba0fb5a68abd8fa44d9996ea321a77876af14.tar.bz2 |
Improved handling of operations IDs and transformations
Diffstat (limited to 'Swift')
-rw-r--r-- | Swift/QtUI/Whiteboard/GView.cpp | 13 | ||||
-rw-r--r-- | Swift/QtUI/Whiteboard/GView.h | 2 | ||||
-rw-r--r-- | Swift/QtUI/Whiteboard/QtWhiteboardWindow.cpp | 23 |
3 files changed, 22 insertions, 16 deletions
diff --git a/Swift/QtUI/Whiteboard/GView.cpp b/Swift/QtUI/Whiteboard/GView.cpp index 5f10329..163cab0 100644 --- a/Swift/QtUI/Whiteboard/GView.cpp +++ b/Swift/QtUI/Whiteboard/GView.cpp @@ -75,11 +75,11 @@ namespace Swift { item->stackBefore(temp); items_.insert(pos-1, item); } - std::cout << "items in:" << 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 << std::endl; + std::cout << std::endl;*/ } void GView::setIDPrefix(QString prefix) { @@ -90,6 +90,8 @@ namespace Swift { scene()->clear(); items_.clear(); itemsMap_.clear(); + lastItem = 0; + selectionRect = 0; } QGraphicsItem* GView::getItem(QString id) { @@ -249,8 +251,9 @@ namespace Swift { { QGraphicsItem* item = scene()->items(rect).first(); QString id = item->data(100).toString(); + int pos = items_.indexOf(item)+1; + itemDeleted(id, pos); deleteItem(id); - itemDeleted(id, items_.indexOf(item)+1); } } else if (mode == Circle) { @@ -354,11 +357,11 @@ namespace Swift { lastItem->setZValue(zValue++); items_.append(lastItem); itemsMap_.insert(lastItem->data(100).toString(), lastItem); - std::cout << "items out:" << 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; } - std::cout << std::endl; + std::cout << std::endl;*/ lastItemChanged(lastItem, items_.size(), New); } else if (selectionRect){ diff --git a/Swift/QtUI/Whiteboard/GView.h b/Swift/QtUI/Whiteboard/GView.h index 443b7ab..dc6a3c2 100644 --- a/Swift/QtUI/Whiteboard/GView.h +++ b/Swift/QtUI/Whiteboard/GView.h @@ -37,6 +37,7 @@ namespace Swift { void clear(); QGraphicsItem* getItem(QString id); void deleteItem(QString id); + QString getNewID(); public slots: void moveUpSelectedItem(); @@ -45,7 +46,6 @@ namespace Swift { private slots: void handleTextItemModified(QGraphicsTextItem*); private: - QString getNewID(); void changePenAndBrush(QGraphicsItem* item, QPen pen, QBrush brush); void setActualPenAndBrushFromItem(QGraphicsItem* item); diff --git a/Swift/QtUI/Whiteboard/QtWhiteboardWindow.cpp b/Swift/QtUI/Whiteboard/QtWhiteboardWindow.cpp index a2440ba..960254c 100644 --- a/Swift/QtUI/Whiteboard/QtWhiteboardWindow.cpp +++ b/Swift/QtUI/Whiteboard/QtWhiteboardWindow.cpp @@ -141,21 +141,21 @@ namespace Swift { if (insertOp) { WhiteboardElementDrawingVisitor visitor(graphicsView, operation->getPos(), GView::New); insertOp->getElement()->accept(visitor); - lastOpID = insertOp->getID(); } WhiteboardUpdateOperation::ref updateOp = boost::dynamic_pointer_cast<WhiteboardUpdateOperation>(operation); if (updateOp) { WhiteboardElementDrawingVisitor visitor(graphicsView, operation->getPos(), GView::Update); updateOp->getElement()->accept(visitor); - lastOpID = updateOp->getID(); } WhiteboardDeleteOperation::ref deleteOp = boost::dynamic_pointer_cast<WhiteboardDeleteOperation>(operation); if (deleteOp) { - graphicsView->deleteItem(P2QSTRING(deleteOp->getID())); - lastOpID = deleteOp->getID(); + if (deleteOp->getPos() != -1) { + graphicsView->deleteItem(P2QSTRING(deleteOp->getElementID())); + } } + lastOpID = operation->getID(); } void QtWhiteboardWindow::changeLineWidth(int i) @@ -343,29 +343,32 @@ namespace Swift { if (type == GView::New) { WhiteboardInsertOperation::ref insertOp = boost::make_shared<WhiteboardInsertOperation>(); - insertOp->setID(el->getID()); +// insertOp->setID(el->getID()); + insertOp->setID(Q2PSTRING(graphicsView->getNewID())); insertOp->setPos(pos); insertOp->setElement(el); insertOp->setParentID(lastOpID); - lastOpID = el->getID(); + lastOpID = insertOp->getID(); whiteboardSession_->sendOperation(insertOp); } else { WhiteboardUpdateOperation::ref updateOp = boost::make_shared<WhiteboardUpdateOperation>(); - updateOp->setID(el->getID()); +// updateOp->setID(el->getID()); + updateOp->setID(Q2PSTRING(graphicsView->getNewID())); updateOp->setPos(pos); updateOp->setElement(el); updateOp->setParentID(lastOpID); - lastOpID = el->getID(); + lastOpID = updateOp->getID(); whiteboardSession_->sendOperation(updateOp); } } void QtWhiteboardWindow::handleItemDeleted(QString id, int pos) { WhiteboardDeleteOperation::ref deleteOp = boost::make_shared<WhiteboardDeleteOperation>(); - deleteOp->setID(Q2PSTRING(id)); + deleteOp->setID(Q2PSTRING(graphicsView->getNewID())); + deleteOp->setElementID(Q2PSTRING(id)); deleteOp->setPos(pos); deleteOp->setParentID(lastOpID); - lastOpID = Q2PSTRING(id); + lastOpID = deleteOp->getID(); whiteboardSession_->sendOperation(deleteOp); } |