summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMateusz Piekos <mateuszpiekos@gmail.com>2012-06-29 07:32:51 (GMT)
committerMateusz Piekos <mateuszpiekos@gmail.com>2012-06-29 07:33:48 (GMT)
commita8f57139d663a176af87d7bc71dd85c62f6274cf (patch)
treee1c4def39b63d64e6f4ad7baefceae0f154789ce /Swift/QtUI/Whiteboard
parentdc04410eb678b8db257dc04b04662f974f6b3b83 (diff)
downloadswift-contrib-a8f57139d663a176af87d7bc71dd85c62f6274cf.zip
swift-contrib-a8f57139d663a176af87d7bc71dd85c62f6274cf.tar.bz2
Improved handling of IDs
Added ID parsing to every element and added function to get prefixes from session to be able to distinguish elements between clients
Diffstat (limited to 'Swift/QtUI/Whiteboard')
-rw-r--r--Swift/QtUI/Whiteboard/GView.cpp36
-rw-r--r--Swift/QtUI/Whiteboard/GView.h6
-rw-r--r--Swift/QtUI/Whiteboard/QtWhiteboardWindow.cpp13
-rw-r--r--Swift/QtUI/Whiteboard/WhiteboardElementDrawingVisitor.h25
4 files changed, 53 insertions, 27 deletions
diff --git a/Swift/QtUI/Whiteboard/GView.cpp b/Swift/QtUI/Whiteboard/GView.cpp
index 588f369..fe0e5f9 100644
--- a/Swift/QtUI/Whiteboard/GView.cpp
+++ b/Swift/QtUI/Whiteboard/GView.cpp
@@ -55,6 +55,14 @@ namespace Swift {
items_.insert(id, item);
}
+ void GView::setIDPrefix(QString prefix) {
+ idPrefix = prefix;
+ }
+
+ QString GView::getNewID() {
+ return idPrefix + P2QSTRING(idGenerator.generateID());
+ }
+
void GView::mouseMoveEvent(QMouseEvent* event)
{
if (!mousePressed) {
@@ -168,20 +176,20 @@ namespace Swift {
if (mode == Line) {
QPointF point = this->mapToScene(event->pos());
QGraphicsItem* item = scene()->addLine(point.x(), point.y(), point.x(), point.y(), pen);
- QString id = P2QSTRING(idGenerator.generateID());
+ QString id = getNewID();
items_.insert(id, item);
item->setZValue(zValue++);
- item->setData(0, id);
+ item->setData(100, id);
lastItem = item;
}
else if (mode == Rect) {
QPointF point = this->mapToScene(event->pos());
QGraphicsRectItem* item = scene()->addRect(point.x(), point.y(), 0, 0, pen, brush);
- QString id = P2QSTRING(idGenerator.generateID());
+ QString id = getNewID();
items_.insert(id, item);
item->setZValue(zValue++);
item->setData(0, point);
- item->setData(1, id);
+ item->setData(100, id);
lastItem = item;
}
else if (mode == Rubber) {
@@ -199,22 +207,22 @@ namespace Swift {
else if (mode == Circle) {
QPointF point = this->mapToScene(event->pos());
QGraphicsEllipseItem* item = scene()->addEllipse(point.x(), point.y(), 0, 0, pen, brush);
- QString id = P2QSTRING(idGenerator.generateID());
+ QString id = getNewID();
items_.insert(id, item);
item->setZValue(zValue++);
item->setData(0, point);
- item->setData(1, id);
+ item->setData(100, id);
lastItem = item;
}
else if (mode == HandLine) {
QPointF point = this->mapToScene(event->pos());
FreehandLineItem* item = new FreehandLineItem;
- QString id = P2QSTRING(idGenerator.generateID());
+ QString id = getNewID();
items_.insert(id, item);
item->setPen(pen);
item->setStartPoint(point);
item->setZValue(zValue++);
- item->setData(0, id);
+ item->setData(100, id);
scene()->addItem(item);
lastItem = item;
}
@@ -222,20 +230,20 @@ namespace Swift {
QPointF point = this->mapToScene(event->pos());
QPainterPath path;
QGraphicsPathItem* item = scene()->addPath(path, pen, brush);
- QString id = P2QSTRING(idGenerator.generateID());
+ QString id = getNewID();
items_.insert(id, item);
item->setZValue(zValue++);
item->setData(0, point);
- item->setData(1, id);
+ item->setData(100, id);
lastItem = item;
}
else if (mode == Text) {
QPointF point = this->mapToScene(event->pos());
QGraphicsTextItem* item = scene()->addText("");
- QString id = P2QSTRING(idGenerator.generateID());
+ QString id = getNewID();
items_.insert(id, item);
item->setZValue(zValue++);
- item->setData(0, id);
+ item->setData(100, id);
item->setDefaultTextColor(pen.color());
textDialog = new TextDialog(item, this);
connect(textDialog, SIGNAL(accepted(QGraphicsItem*)), this, SIGNAL(lastItemChanged(QGraphicsItem*)));
@@ -252,10 +260,10 @@ namespace Swift {
polygon.append(point);
polygon.append(point);
item = scene()->addPolygon(polygon, pen, brush);
- QString id = P2QSTRING(idGenerator.generateID());
+ QString id = getNewID();
items_.insert(id, item);
item->setZValue(zValue++);
- item->setData(0, id);
+ item->setData(100, id);
lastItem = item;
}
else {
diff --git a/Swift/QtUI/Whiteboard/GView.h b/Swift/QtUI/Whiteboard/GView.h
index 8b416a1..4830381 100644
--- a/Swift/QtUI/Whiteboard/GView.h
+++ b/Swift/QtUI/Whiteboard/GView.h
@@ -33,12 +33,15 @@ namespace Swift {
void mouseReleaseEvent(QMouseEvent* event);
QGraphicsItem* getItem(const QString id) const;
void addItem(QGraphicsItem* item, QString id);
+ void setIDPrefix(QString prefix);
public slots:
void moveUpSelectedItem();
void moveDownSelectedItem();
private:
+ QString getNewID();
+
int zValue;
bool mousePressed;
QPen pen;
@@ -47,8 +50,9 @@ namespace Swift {
QGraphicsItem* lastItem;
QGraphicsRectItem* selectionRect;
TextDialog* textDialog;
- QHash<QString, QGraphicsItem*> items_;
+ QMap<QString, QGraphicsItem*> items_;
SimpleIDGenerator idGenerator;
+ QString idPrefix;
signals:
void lastItemChanged(QGraphicsItem* item);
diff --git a/Swift/QtUI/Whiteboard/QtWhiteboardWindow.cpp b/Swift/QtUI/Whiteboard/QtWhiteboardWindow.cpp
index 6e259a2..9aa6eb0 100644
--- a/Swift/QtUI/Whiteboard/QtWhiteboardWindow.cpp
+++ b/Swift/QtUI/Whiteboard/QtWhiteboardWindow.cpp
@@ -205,6 +205,7 @@ namespace Swift {
void QtWhiteboardWindow::setSession(WhiteboardSession::ref session) {
whiteboardSession_ = session;
+ graphicsView->setIDPrefix(P2QSTRING(whiteboardSession_->getClientID()));
whiteboardSession_->onElementReceived.connect(boost::bind(&QtWhiteboardWindow::handleWhiteboardElementReceive, this, _1));
whiteboardSession_->onRequestAccepted.connect(boost::bind(&QWidget::show, this));
whiteboardSession_->onSessionTerminateReceived.connect(boost::bind(&QtWhiteboardWindow::handleSessionTerminate, this));
@@ -224,7 +225,7 @@ namespace Swift {
element->setColor(Color(color.red(), color.green(), color.blue(), color.alpha()));
element->setPenWidth(lineItem->pen().width());
- element->setID(lineItem->data(0).toString().toStdString());
+ element->setID(lineItem->data(100).toString().toStdString());
whiteboardSession_->sendElement(element);
}
@@ -242,7 +243,7 @@ namespace Swift {
element->setPenWidth(freehandLineItem->pen().width());
element->setPoints(points);
- element->setID(freehandLineItem->data(0).toString().toStdString());
+ element->setID(freehandLineItem->data(100).toString().toStdString());
whiteboardSession_->sendElement(element);
}
@@ -257,7 +258,7 @@ namespace Swift {
element->setPenColor(Color(penColor.red(), penColor.green(), penColor.blue(), penColor.alpha()));
element->setPenWidth(rectItem->pen().width());
- element->setID(rectItem->data(1).toString().toStdString());
+ element->setID(rectItem->data(100).toString().toStdString());
whiteboardSession_->sendElement(element);
}
@@ -270,7 +271,7 @@ namespace Swift {
QColor color = textItem->defaultTextColor();
element->setColor(Color(color.red(), color.green(), color.blue(), color.alpha()));
- element->setID(rectItem->data(0).toString().toStdString());
+ element->setID(rectItem->data(100).toString().toStdString());
whiteboardSession_->sendElement(element);
}
@@ -292,7 +293,7 @@ namespace Swift {
element->setBrushColor(Color(brushColor.red(), brushColor.green(), brushColor.blue(), brushColor.alpha()));
element->setPenWidth(polygonItem->pen().width());
- element->setID(polygonItem->data(0).toString().toStdString());
+ element->setID(polygonItem->data(100).toString().toStdString());
whiteboardSession_->sendElement(element);
}
@@ -311,7 +312,7 @@ namespace Swift {
element->setBrushColor(Color(brushColor.red(), brushColor.green(), brushColor.blue(), brushColor.alpha()));
element->setPenWidth(ellipseItem->pen().width());
- element->setID(ellipseItem->data(1).toString().toStdString());
+ element->setID(ellipseItem->data(100).toString().toStdString());
whiteboardSession_->sendElement(element);
}
}
diff --git a/Swift/QtUI/Whiteboard/WhiteboardElementDrawingVisitor.h b/Swift/QtUI/Whiteboard/WhiteboardElementDrawingVisitor.h
index f3d2526..38ed676 100644
--- a/Swift/QtUI/Whiteboard/WhiteboardElementDrawingVisitor.h
+++ b/Swift/QtUI/Whiteboard/WhiteboardElementDrawingVisitor.h
@@ -27,7 +27,9 @@ namespace Swift {
pen.setColor(QColor(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()));
pen.setWidth(element.getPenWidth());
item->setPen(pen);
- graphicsView_->scene()->addItem(item);
+ QString id = P2QSTRING(element.getID());
+ item->setData(100, id);
+ graphicsView_->addItem(item, id);
}
void visit(WhiteboardFreehandPathElement& element) {
@@ -44,7 +46,9 @@ namespace Swift {
item->lineTo(QPointF(it->first, it->second));
}
- graphicsView_->scene()->addItem(item);
+ QString id = P2QSTRING(element.getID());
+ item->setData(100, id);
+ graphicsView_->addItem(item, id);
}
void visit(WhiteboardRectElement& element) {
@@ -58,7 +62,9 @@ namespace Swift {
brush.setColor(QColor(brushColor.getRed(), brushColor.getGreen(), brushColor.getBlue(), brushColor.getAlpha()));
item->setPen(pen);
item->setBrush(brush);
- graphicsView_->scene()->addItem(item);
+ QString id = P2QSTRING(element.getID());
+ item->setData(100, id);
+ graphicsView_->addItem(item, id);
}
void visit(WhiteboardPolygonElement& element) {
@@ -74,7 +80,9 @@ namespace Swift {
brush.setColor(QColor(brushColor.getRed(), brushColor.getGreen(), brushColor.getBlue(), brushColor.getAlpha()));
item->setPen(pen);
item->setBrush(brush);
- graphicsView_->addItem(item, P2QSTRING(element.getID()));
+ QString id = P2QSTRING(element.getID());
+ item->setData(100, id);
+ graphicsView_->addItem(item, id);
}
QPolygonF polygon;
std::vector<std::pair<int, int> >::const_iterator it = element.getPoints().begin();
@@ -92,7 +100,10 @@ namespace Swift {
item->setFont(font);
Color color = element.getColor();
item->setDefaultTextColor(QColor(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()));
- graphicsView_->scene()->addItem(item);
+
+ QString id = P2QSTRING(element.getID());
+ item->setData(100, id);
+ graphicsView_->addItem(item, id);
}
void visit(WhiteboardEllipseElement& element) {
@@ -111,7 +122,9 @@ namespace Swift {
brush.setColor(QColor(brushColor.getRed(), brushColor.getGreen(), brushColor.getBlue(), brushColor.getAlpha()));
item->setPen(pen);
item->setBrush(brush);
- graphicsView_->scene()->addItem(item);
+ QString id = P2QSTRING(element.getID());
+ item->setData(100, id);
+ graphicsView_->addItem(item, id);
}
private: