diff options
author | Mateusz Piekos <mateuszpiekos@gmail.com> | 2012-06-24 18:37:27 (GMT) |
---|---|---|
committer | Mateusz Piekos <mateuszpiekos@gmail.com> | 2012-06-24 18:37:27 (GMT) |
commit | 06bbc72598ece3e62b82471e474b0753d5439f00 (patch) | |
tree | b1af2cd0717aff4e8d3427e22873b87410375cd2 /Swift/QtUI/Whiteboard/GView.cpp | |
parent | 286a3d119ec95b235b09935296450ec36e640aeb (diff) | |
download | swift-contrib-06bbc72598ece3e62b82471e474b0753d5439f00.zip swift-contrib-06bbc72598ece3e62b82471e474b0753d5439f00.tar.bz2 |
Added handling of rects and basic handling of polygons
Diffstat (limited to 'Swift/QtUI/Whiteboard/GView.cpp')
-rw-r--r-- | Swift/QtUI/Whiteboard/GView.cpp | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/Swift/QtUI/Whiteboard/GView.cpp b/Swift/QtUI/Whiteboard/GView.cpp index 478dee0..e904b32 100644 --- a/Swift/QtUI/Whiteboard/GView.cpp +++ b/Swift/QtUI/Whiteboard/GView.cpp @@ -45,6 +45,10 @@ namespace Swift { lastItem = 0; } + QGraphicsItem* GView::getItem(const QString id) const { + return items_.value(id); + } + void GView::mouseMoveEvent(QMouseEvent* event) { if (!mousePressed) { @@ -144,17 +148,19 @@ namespace Swift { QPointF point = this->mapToScene(event->pos()); QGraphicsItem* item = scene()->addLine(point.x(), point.y(), point.x(), point.y(), pen); QString id = QString::fromStdString(idGenerator.generateID()); + items_.insert(id, item); item->setZValue(zValue++); item->setData(0, id); - items_.insert(id, item); 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 = QString::fromStdString(idGenerator.generateID()); + items_.insert(id, item); item->setZValue(zValue++); item->setData(0, point); + item->setData(1, id); lastItem = item; } else if (mode == Rubber) { @@ -172,16 +178,22 @@ namespace Swift { else if (mode == Circle) { QPointF point = this->mapToScene(event->pos()); QGraphicsPathItem* item = scene()->addPath(QPainterPath(), pen, brush); + QString id = QString::fromStdString(idGenerator.generateID()); + items_.insert(id, item); item->setZValue(zValue++); item->setData(0, point); + item->setData(1, id); lastItem = item; } else if (mode == HandLine) { QPointF point = this->mapToScene(event->pos()); FreehandLineItem* item = new FreehandLineItem; + QString id = QString::fromStdString(idGenerator.generateID()); + items_.insert(id, item); item->setPen(pen); item->setStartPoint(point); item->setZValue(zValue++); + item->setData(0, id); scene()->addItem(item); lastItem = item; } @@ -189,19 +201,26 @@ namespace Swift { QPointF point = this->mapToScene(event->pos()); QPainterPath path; QGraphicsPathItem* item = scene()->addPath(path, pen, brush); + QString id = QString::fromStdString(idGenerator.generateID()); + items_.insert(id, item); item->setZValue(zValue++); item->setData(0, point); + item->setData(1, id); lastItem = item; } else if (mode == Text) { QPointF point = this->mapToScene(event->pos()); QGraphicsTextItem* item = scene()->addText(""); + QString id = QString::fromStdString(idGenerator.generateID()); + items_.insert(id, item); item->setZValue(zValue++); + item->setData(0, id); item->setDefaultTextColor(pen.color()); textDialog = new TextDialog(item, this); textDialog->setAttribute(Qt::WA_DeleteOnClose); textDialog->show(); item->setPos(point); + lastItem = item; } else if (mode == Polygon) { QPointF point = this->mapToScene(event->pos()); @@ -211,7 +230,10 @@ namespace Swift { polygon.append(point); polygon.append(point); item = scene()->addPolygon(polygon, pen, brush); + QString id = QString::fromStdString(idGenerator.generateID()); + items_.insert(id, item); item->setZValue(zValue++); + item->setData(0, id); lastItem = item; } else { |