summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swift/QtUI/Whiteboard/GView.cpp')
-rw-r--r--Swift/QtUI/Whiteboard/GView.cpp62
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*>();