summaryrefslogtreecommitdiffstats
path: root/Swift
diff options
context:
space:
mode:
authorMateusz Piekos <mateuszpiekos@gmail.com>2012-07-26 15:46:45 (GMT)
committerMateusz Piekos <mateuszpiekos@gmail.com>2012-07-26 15:46:45 (GMT)
commit2e9ba0fb5a68abd8fa44d9996ea321a77876af14 (patch)
tree23a1bdf024045ad619af906bf2438dd05fa3c8fe /Swift
parent833e544490a0e3ff5eeebe44fae2b9a8f98d4a78 (diff)
downloadswift-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.cpp13
-rw-r--r--Swift/QtUI/Whiteboard/GView.h2
-rw-r--r--Swift/QtUI/Whiteboard/QtWhiteboardWindow.cpp23
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);
}