DVEventAddShape : add a cross for help drawing

git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@3339 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
blacksun
2014-09-28 11:42:08 +00:00
parent 8eaa2949c6
commit 7ebdf8cf00
2 changed files with 42 additions and 1 deletions

View File

@@ -31,7 +31,9 @@
DVEventAddShape::DVEventAddShape(DiagramView *dv, QetShapeItem::ShapeType shape_type) :
DVEventInterface(dv),
m_shape_type (shape_type),
m_shape_item (nullptr)
m_shape_item (nullptr),
m_help_horiz (nullptr),
m_help_verti (nullptr)
{}
/**
@@ -42,6 +44,8 @@ DVEventAddShape::~DVEventAddShape() {
m_diagram -> removeItem(m_shape_item);
delete m_shape_item;
}
delete m_help_horiz;
delete m_help_verti;
m_dv -> setContextMenuPolicy(Qt::DefaultContextMenu);
}
@@ -104,6 +108,7 @@ bool DVEventAddShape::mousePressEvent(QMouseEvent *event) {
* @return : true if this event is managed, otherwise false
*/
bool DVEventAddShape::mouseMoveEvent(QMouseEvent *event) {
updateHelpCross(event->pos());
if (!m_running) return false;
if (m_shape_item && event -> buttons() == Qt::NoButton) {
m_shape_item -> setP2 (m_dv -> mapToScene (event -> pos()));
@@ -128,3 +133,35 @@ bool DVEventAddShape::mouseReleaseEvent(QMouseEvent *event) {
}
return false;
}
/**
* @brief DVEventAddShape::updateHelpCross
* Create and update the position of the cross to help user for draw new shape
* @param event
*/
void DVEventAddShape::updateHelpCross(const QPoint &p) {
//If line isn't created yet, we create it.
if (!m_help_horiz || !m_help_verti) {
QPen pen;
pen.setColor(Qt::yellow);
//Add +5 for each line, because the topleft of diagram isn't draw at position (0:0) but (5:5)
if (!m_help_horiz) {
m_help_horiz = new QGraphicsLineItem(m_diagram -> border_and_titleblock.rowsHeaderWidth() + 5, 0,
m_diagram -> border_and_titleblock.diagramWidth() + 5, 0,
0, m_diagram);
m_help_horiz->setPen(pen);
}
if (!m_help_verti) {
m_help_verti = new QGraphicsLineItem(0, m_diagram -> border_and_titleblock.columnsHeaderHeight() + 5,
0, m_diagram -> border_and_titleblock.diagramHeight() + 5,
0, m_diagram);
m_help_verti->setPen(pen);
}
}
//Update the position of the cross
QPointF point = Diagram::snapToGrid(m_dv->mapToScene(p));
m_help_horiz->setY(point.y());
m_help_verti->setX(point.x());
}