#include "dcvterminalfromaxonmodehandler.h"
#include "dcglvisualizerwidget.h"
-#include "dcvcomponent.h"
#include "dcvcpage.h"
#include "dcscene.h"
#include "dccreator.h"
DCVTerminalFromAxonModeHandler::DCVTerminalFromAxonModeHandler(DCUIGraphicsScene *widget, DCCreator *creator, DCScene *scene, DCAxon *editAxon, DCVCEditModeCursor *cursor) :
- DCVEventHandler(widget, creator, scene), d_draggedObject(NULL), d_inResigingDrag(false), d_editAxon(editAxon), d_cursor(cursor)
+ DCVEventHandler(widget, creator, scene), d_inResigingDrag(false), d_editAxon(editAxon), d_cursor(cursor)
{
switch(getScene()->getEditMode())
{
QPointF mousePos = event->scenePos();
+ d_draggedObject.assign(NULL);
+
DCVComponent *obj = getView()->getObjectAt(mousePos.x(), mousePos.y(), d_cursor);
if (!obj)
return;
return;
if (obj != getScene()->getTerminalEditCursor() && obj != page)
- return;
+ return;
switch(getScene()->getPersMode())
{
{
getScene()->updateVisiblity();
getView()->requestRedraw(true);
- d_draggedObject = obj;
+ d_draggedObject.assign(obj);
d_inResigingDrag = false;
}
}
}
else
{
- d_draggedObject = obj;
+ d_draggedObject.assign(obj);
d_inResigingDrag = false;
}
}
getScene()->updateVisiblity();
getView()->requestRedraw(true);
}
- d_draggedObject = obj;
+ d_draggedObject.assign(obj);
d_inResigingDrag = false;
}
break;
void DCVTerminalFromAxonModeHandler::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
{
- DCVComponent *obj = d_draggedObject;
+ DCVComponent *obj = d_draggedObject.ref();
if (!obj)
return;
case DCScene::DCV_PERSMODE_NAVIGATION:
{
getController()->changePersMode(this, DCCreator::DC_PERSMODE_PAGEEDIT);
- d_draggedObject = NULL;
+ d_draggedObject.assign(NULL);
}
break;
if (obj == page)
{
getController()->changePersMode(this, DCCreator::DC_PERSMODE_NAVIGATION);
- d_draggedObject = NULL;
+ d_draggedObject.assign(NULL);
}
else if (obj == d_cursor)
{
float dy = mousePos.y() - mousePrevPos.y();
- if (canProcessHeavyTask && d_draggedObject && d_draggedObject != d_draggedObject->getPageBelonging())
+ if (canProcessHeavyTask && d_draggedObject.ref() && d_draggedObject.ref() != d_draggedObject.ref()->getPageBelonging())
{
- d_draggedObject->setSelectable(false);
+ d_draggedObject.ref()->setSelectable(false);
DCVComponent *obj = getView()->getObjectAt(mousePos.x(), mousePos.y());
- d_draggedObject->setSelectable(true);
+ d_draggedObject.ref()->setSelectable(true);
if (d_cursor->getDropTarget() && d_cursor->getDropTarget() != obj)
{
getController()->unselectCellObject(this, d_cursor->getDropTarget());
getController()->selectCellObject(this, d_editAxon->getOwnerCell()->getVComponent());
}
- if (obj && obj != obj->getPageBelonging() && obj->getPageBelonging() == d_draggedObject->getPageBelonging())
+ if (obj && obj != obj->getPageBelonging() && obj->getPageBelonging() == d_draggedObject.ref()->getPageBelonging())
{
getController()->selectCellObject(this, obj, true);
d_cursor->setDropTarget(obj);
switch(getScene()->getPersMode())
{
case DCScene::DCV_PERSMODE_NAVIGATION:
- if (d_draggedObject && d_draggedObject->getPageBelonging() && d_draggedObject != d_draggedObject->getPageBelonging())
+ if (d_draggedObject.ref() && d_draggedObject.ref()->getPageBelonging() && d_draggedObject.ref() != d_draggedObject.ref()->getPageBelonging())
{
float pageX, pageZ;
- getView()->toObjectCoordinateXZ(mousePos.x(), mousePos.y(), d_draggedObject->getPageBelonging(), &pageX, &pageZ);
+ getView()->toObjectCoordinateXZ(mousePos.x(), mousePos.y(), d_draggedObject.ref()->getPageBelonging(), &pageX, &pageZ);
- if (d_draggedObject->dragging(pageX, 0, pageZ, false))
+ if (d_draggedObject.ref()->dragging(pageX, 0, pageZ, false))
{
DCGLWidget::singleton()->setCursor(Qt::OpenHandCursor);
getView()->requestRedraw(false);
break;
case DCScene::DCV_PERSMODE_PAGEEDIT:
- if (d_draggedObject && d_draggedObject->getPageBelonging())
+ if (d_draggedObject.ref() && d_draggedObject.ref()->getPageBelonging())
{
- if (d_draggedObject == d_draggedObject->getPageBelonging())
+ if (d_draggedObject.ref() == d_draggedObject.ref()->getPageBelonging())
{
getController()->translateEditModeScene(this, dx, dy);
}
else
{
float pageX, pageZ;
- getView()->toObjectCoordinateXZ(mousePos.x(), mousePos.y(), d_draggedObject->getPageBelonging(), &pageX, &pageZ);
- if (d_draggedObject->dragging(pageX, 0, pageZ, false))
+ getView()->toObjectCoordinateXZ(mousePos.x(), mousePos.y(), d_draggedObject.ref()->getPageBelonging(), &pageX, &pageZ);
+ if (d_draggedObject.ref()->dragging(pageX, 0, pageZ, false))
{
DCGLWidget::singleton()->setCursor(Qt::OpenHandCursor);
getView()->requestRedraw(false);
bool shift = event->modifiers() & Qt::ShiftModifier;
QPointF mousePos = event->scenePos();
- if (d_draggedObject && d_draggedObject->getPageBelonging())
+ if (d_draggedObject.ref() && d_draggedObject.ref()->getPageBelonging())
{
float pageX, pageZ;
- getView()->toObjectCoordinateXZ(mousePos.x(), mousePos.y(), d_draggedObject->getPageBelonging(), &pageX, &pageZ);
- d_draggedObject->endDrag(pageX, 0, pageZ, d_inResigingDrag);
+ getView()->toObjectCoordinateXZ(mousePos.x(), mousePos.y(), d_draggedObject.ref()->getPageBelonging(), &pageX, &pageZ);
+ d_draggedObject.ref()->endDrag(pageX, 0, pageZ, d_inResigingDrag);
}
switch(getScene()->getPersMode())
case DCScene::DCV_PERSMODE_NAVIGATION:
{
DCVCPage *page = NULL;
- if (d_draggedObject)
+ if (d_draggedObject.ref())
{
- page = d_draggedObject->getPageBelonging();
+ page = d_draggedObject.ref()->getPageBelonging();
}
if (wasDrag)
void DCVTerminalFromAxonModeHandler::keyPressEvent(QKeyEvent *event)
{
+ (void)event;
}
void DCVTerminalFromAxonModeHandler::keyReleaseEvent(QKeyEvent *event)
{
+ (void)event;
}
+void DCVTerminalFromAxonModeHandler::showContextMenu(const QPoint &pos)
+{
+ (void)pos;
+
+}
+
+void DCVTerminalFromAxonModeHandler::selectedPageChanged(const void *requester)
+{
+ if (requester == this)
+ return;
+
+ QList<DCVCPage*> pages = getScene()->getSelectedPages();
+ if (pages.length() == 0)
+ return;
+
+ if (d_cursor->getPageBelonging() != pages.at(0))
+ d_cursor->changePageBelonging(pages.at(0));
+
+}