Consolidated create mode into states.

This commit is contained in:
Jim Evins
2015-09-20 12:59:31 -04:00
parent 1f4330ff6e
commit 267830e902
2 changed files with 142 additions and 163 deletions
+40 -61
View File
@@ -83,7 +83,6 @@ glabels::View::View( QScrollArea* scrollArea, QWidget* parent )
mMarkupVisible = true;
mGridVisible = true;
mGridSpacing = 18;
mInObjectCreateMode = false;
setMouseTracking( true );
}
@@ -300,7 +299,6 @@ glabels::View::arrowMode()
{
setCursor( Qt::ArrowCursor );
mInObjectCreateMode = false;
mState = IdleState;
}
@@ -313,9 +311,8 @@ glabels::View::createBoxMode()
{
setCursor( Cursors::Box() );
mInObjectCreateMode = true;
mCreateObjectType = Box;
mState = IdleState;
mState = CreateIdle;
}
@@ -369,13 +366,11 @@ glabels::View::mousePressEvent( QMouseEvent* event )
//
// LEFT BUTTON
//
if ( !mInObjectCreateMode )
switch (mState)
{
//
// NORMAL MODE
//
case IdleState:
{
LabelModelObject* object = 0;
Handle* handle = 0;
if ( mModel->isSelectionAtomic() &&
@@ -443,13 +438,10 @@ glabels::View::mousePressEvent( QMouseEvent* event )
update();
}
}
else
{
//
// OBJECT CREATION MODE
//
break;
if ( mState == IdleState )
case CreateIdle:
{
switch ( mCreateObjectType )
{
@@ -472,7 +464,7 @@ glabels::View::mousePressEvent( QMouseEvent* event )
// mCreateObject = new LabelModelBarcodeObject();
break;
default:
Q_ASSERT_X( false, "View::::mousePressEvent", "Invalid creation type" );
qDebug() << "View::mousePressEvent: Invalid creation type. Should not happen!";
break;
}
@@ -488,6 +480,14 @@ glabels::View::mousePressEvent( QMouseEvent* event )
mState = CreateDrag;
}
break;
default:
{
qDebug() << "View::mousePressEvent: Invalid state. Should not happen!";
}
break;
}
@@ -497,10 +497,13 @@ glabels::View::mousePressEvent( QMouseEvent* event )
//
// RIGHT BUTTON
//
if ( mState == IdleState )
{
emit contextMenuActivate();
}
}
}
}
///
@@ -534,14 +537,8 @@ glabels::View::mouseMoveEvent( QMouseEvent* event )
/*
* Handle event as appropriate for mode
* Handle event as appropriate for state
*/
if ( !mInObjectCreateMode )
{
///
/// NORMAL MODE
///
switch (mState)
{
@@ -578,21 +575,10 @@ glabels::View::mouseMoveEvent( QMouseEvent* event )
handleResizeMotion( xWorld, yWorld );
break;
default:
// Should not happen!
Q_ASSERT_X( false, "View::::mouseMoveEvent", "Invalid state" );
case CreateIdle:
break;
}
}
else
{
//
// OBJECT CREATION MODE
//
if ( mState != IdleState )
{
case CreateDrag:
switch (mCreateObjectType)
{
case Box:
@@ -610,11 +596,15 @@ glabels::View::mouseMoveEvent( QMouseEvent* event )
mCreateObject->setSize( xWorld - mCreateX0, yWorld - mCreateY0 );
break;
default:
// Should not happen!
Q_ASSERT_X( false, "View::::mouseMoveEvent", "Invalid creation mode" );
qDebug() << "View::mouseMoveEvent: Invalid creation mode. Should not happen!";
break;
}
}
break;
default:
qDebug() << "View::mouseMoveEvent: Invalid state. Should not happen!";
break;
}
}
}
@@ -646,13 +636,6 @@ glabels::View::mouseReleaseEvent( QMouseEvent* event )
//
// LEFT BUTTON Release
//
if ( !mInObjectCreateMode )
{
///
/// NORMAL MODE
///
switch (mState)
{
@@ -671,19 +654,7 @@ glabels::View::mouseReleaseEvent( QMouseEvent* event )
update();
break;
default:
mState = IdleState;
break;
}
}
else
{
//
// OBJECT CREATION MODE
//
case CreateDrag:
if ( (fabs(mCreateObject->w()) < 4) && (fabs(mCreateObject->h()) < 4) )
{
switch (mCreateObjectType)
@@ -700,8 +671,16 @@ glabels::View::mouseReleaseEvent( QMouseEvent* event )
}
}
arrowMode();
setCursor( Qt::ArrowCursor );
mState = IdleState;
break;
default:
mState = IdleState;
break;
}
}
}
}
@@ -800,7 +779,7 @@ glabels::View::handleResizeMotion( double xWorld, double yWorld )
y0 = y0 + y1;
break;
default:
Q_ASSERT_X( false, "View::handleResizeMotion", "Invalid Handle Location" );
qDebug() << "View::handleResizeMotion: Invalid Handle Location. Should not happen!";
}
/*
+1 -1
View File
@@ -156,6 +156,7 @@ namespace glabels
ArrowSelectRegion,
ArrowMove,
ArrowResize,
CreateIdle,
CreateDrag
};
@@ -199,7 +200,6 @@ namespace glabels
bool mResizeHonorAspect;
/* CreateDrag state */
bool mInObjectCreateMode;
CreateType mCreateObjectType;
LabelModelObject* mCreateObject;
double mCreateX0;