-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsquaremovecmd.cpp
34 lines (30 loc) · 1.05 KB
/
squaremovecmd.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include "squaremovecmd.h"
SquareMoveCmd::SquareMoveCmd(FortuneAvenueGraphicsScene *scene, const QMap<int, QPointF> &oldPositions, const QMap<int, QPointF> &newPositions, const std::function<void (const QMap<int, QPointF> &)> &updateFn)
: scene(scene), oldPositions(oldPositions), newPositions(newPositions), updateFn(updateFn)
{
setText("Move Squares");
}
void SquareMoveCmd::undo()
{
int oldSnapSize = scene->getSnapSize();
scene->setSnapSize(1);
auto sqItems = scene->squareItems();
for (auto it=oldPositions.begin(); it!=oldPositions.end(); ++it) {
sqItems[it.key()]->setPos(it.value());
}
scene->setSnapSize(oldSnapSize);
scene->update();
updateFn(oldPositions);
}
void SquareMoveCmd::redo()
{
int oldSnapSize = scene->getSnapSize();
scene->setSnapSize(1);
auto sqItems = scene->squareItems();
for (auto it=newPositions.begin(); it!=newPositions.end(); ++it) {
sqItems[it.key()]->setPos(it.value());
}
scene->setSnapSize(oldSnapSize);
scene->update();
updateFn(newPositions);
}