Files
mapmap/Commands.cpp
2015-01-23 20:36:30 +00:00

99 lines
2.6 KiB
C++

#include "Commands.h"
AddShapesCommand::AddShapesCommand(MainWindow *mainWindow, uid mappingId, QUndoCommand *parent):
QUndoCommand(parent)
{
m_mainWindow = mainWindow;
m_mappingId = mappingId;
}
void AddShapesCommand::undo()
{
m_mappingPtr = m_mainWindow->getMappingManager().getMappingById(m_mappingId);
m_mainWindow->deleteMapping(m_mappingId);
}
void AddShapesCommand::redo()
{
if(m_mappingPtr != NULL)
{
uint currentId = m_mainWindow->getMappingManager().addMapping(m_mappingPtr);
m_mainWindow->addMappingItem(currentId);
}
}
MoveVertexCommand::MoveVertexCommand(MapperGLCanvas *mapperGLCanvas, int activeVertex, const QPointF &point, QUndoCommand *parent) :
QUndoCommand(parent)
{
m_mapperGLCanvas = mapperGLCanvas;
m_shape = m_mapperGLCanvas->getCurrentShape();
m_activeVertex = activeVertex;
vertexPosition = point;
}
void MoveVertexCommand::undo()
{
m_shape->setVertex(m_activeVertex, vertexPosition);
m_mapperGLCanvas->update();
emit m_mapperGLCanvas->shapeChanged(m_mapperGLCanvas->getCurrentShape());
}
void MoveVertexCommand::redo()
{
m_shape->setVertex(m_activeVertex, vertexPosition);
m_mapperGLCanvas->update();
emit m_mapperGLCanvas->shapeChanged(m_mapperGLCanvas->getCurrentShape());
}
MoveShapesCommand::MoveShapesCommand(MapperGLCanvas *mapperGLCanvas, QMouseEvent *event, const QPointF &point, QUndoCommand *parent) :
QUndoCommand(parent)
{
m_mapperGLCanvas = mapperGLCanvas;
m_shape = m_mapperGLCanvas->getCurrentShape();
m_event = event;
newPosition = point;
}
void MoveShapesCommand::undo()
{
m_shape->translate(oldPosition.x(), oldPosition.y());
m_mapperGLCanvas->update();
emit m_mapperGLCanvas->shapeChanged(m_mapperGLCanvas->getCurrentShape());
}
void MoveShapesCommand::redo()
{
m_shape->translate(m_event->x() - newPosition.x(), m_event->y() - newPosition.y());
m_mapperGLCanvas->update();
emit m_mapperGLCanvas->shapeChanged(m_mapperGLCanvas->getCurrentShape());
oldPosition.setX(newPosition.x() - m_event->x());
oldPosition.setY(newPosition.y() - m_event->y());
}
DeleteMappingCommand::DeleteMappingCommand(MainWindow *mainWindow, uid mappingId, QUndoCommand *parent) :
QUndoCommand(parent)
{
m_mainWindow = mainWindow;
m_mappingId = mappingId;
}
void DeleteMappingCommand::undo()
{
if(m_mappingPtr != NULL)
{
uint currentId = m_mainWindow->getMappingManager().addMapping(m_mappingPtr);
m_mainWindow->addMappingItem(currentId);
}
}
void DeleteMappingCommand::redo()
{
m_mappingPtr = m_mainWindow->getMappingManager().getMappingById(m_mappingId);
m_mainWindow->deleteMapping(m_mappingId);
}