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; mMarkupVisible = true;
mGridVisible = true; mGridVisible = true;
mGridSpacing = 18; mGridSpacing = 18;
mInObjectCreateMode = false;
setMouseTracking( true ); setMouseTracking( true );
} }
@@ -300,7 +299,6 @@ glabels::View::arrowMode()
{ {
setCursor( Qt::ArrowCursor ); setCursor( Qt::ArrowCursor );
mInObjectCreateMode = false;
mState = IdleState; mState = IdleState;
} }
@@ -313,9 +311,8 @@ glabels::View::createBoxMode()
{ {
setCursor( Cursors::Box() ); setCursor( Cursors::Box() );
mInObjectCreateMode = true;
mCreateObjectType = Box; mCreateObjectType = Box;
mState = IdleState; mState = CreateIdle;
} }
@@ -369,13 +366,11 @@ glabels::View::mousePressEvent( QMouseEvent* event )
// //
// LEFT BUTTON // LEFT BUTTON
// //
switch (mState)
if ( !mInObjectCreateMode )
{ {
//
// NORMAL MODE
//
case IdleState:
{
LabelModelObject* object = 0; LabelModelObject* object = 0;
Handle* handle = 0; Handle* handle = 0;
if ( mModel->isSelectionAtomic() && if ( mModel->isSelectionAtomic() &&
@@ -443,13 +438,10 @@ glabels::View::mousePressEvent( QMouseEvent* event )
update(); update();
} }
} }
else break;
{
//
// OBJECT CREATION MODE
//
if ( mState == IdleState )
case CreateIdle:
{ {
switch ( mCreateObjectType ) switch ( mCreateObjectType )
{ {
@@ -472,7 +464,7 @@ glabels::View::mousePressEvent( QMouseEvent* event )
// mCreateObject = new LabelModelBarcodeObject(); // mCreateObject = new LabelModelBarcodeObject();
break; break;
default: default:
Q_ASSERT_X( false, "View::::mousePressEvent", "Invalid creation type" ); qDebug() << "View::mousePressEvent: Invalid creation type. Should not happen!";
break; break;
} }
@@ -488,6 +480,14 @@ glabels::View::mousePressEvent( QMouseEvent* event )
mState = CreateDrag; mState = CreateDrag;
} }
break;
default:
{
qDebug() << "View::mousePressEvent: Invalid state. Should not happen!";
}
break;
} }
@@ -497,10 +497,13 @@ glabels::View::mousePressEvent( QMouseEvent* event )
// //
// RIGHT BUTTON // RIGHT BUTTON
// //
if ( mState == IdleState )
{
emit contextMenuActivate(); 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) switch (mState)
{ {
@@ -578,21 +575,10 @@ glabels::View::mouseMoveEvent( QMouseEvent* event )
handleResizeMotion( xWorld, yWorld ); handleResizeMotion( xWorld, yWorld );
break; break;
default: case CreateIdle:
// Should not happen!
Q_ASSERT_X( false, "View::::mouseMoveEvent", "Invalid state" );
break; break;
} case CreateDrag:
}
else
{
//
// OBJECT CREATION MODE
//
if ( mState != IdleState )
{
switch (mCreateObjectType) switch (mCreateObjectType)
{ {
case Box: case Box:
@@ -610,11 +596,15 @@ glabels::View::mouseMoveEvent( QMouseEvent* event )
mCreateObject->setSize( xWorld - mCreateX0, yWorld - mCreateY0 ); mCreateObject->setSize( xWorld - mCreateX0, yWorld - mCreateY0 );
break; break;
default: default:
// Should not happen! qDebug() << "View::mouseMoveEvent: Invalid creation mode. Should not happen!";
Q_ASSERT_X( false, "View::::mouseMoveEvent", "Invalid creation mode" );
break; break;
} }
} break;
default:
qDebug() << "View::mouseMoveEvent: Invalid state. Should not happen!";
break;
} }
} }
} }
@@ -646,13 +636,6 @@ glabels::View::mouseReleaseEvent( QMouseEvent* event )
// //
// LEFT BUTTON Release // LEFT BUTTON Release
// //
if ( !mInObjectCreateMode )
{
///
/// NORMAL MODE
///
switch (mState) switch (mState)
{ {
@@ -671,19 +654,7 @@ glabels::View::mouseReleaseEvent( QMouseEvent* event )
update(); update();
break; break;
default: case CreateDrag:
mState = IdleState;
break;
}
}
else
{
//
// OBJECT CREATION MODE
//
if ( (fabs(mCreateObject->w()) < 4) && (fabs(mCreateObject->h()) < 4) ) if ( (fabs(mCreateObject->w()) < 4) && (fabs(mCreateObject->h()) < 4) )
{ {
switch (mCreateObjectType) 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; y0 = y0 + y1;
break; break;
default: 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, ArrowSelectRegion,
ArrowMove, ArrowMove,
ArrowResize, ArrowResize,
CreateIdle,
CreateDrag CreateDrag
}; };
@@ -199,7 +200,6 @@ namespace glabels
bool mResizeHonorAspect; bool mResizeHonorAspect;
/* CreateDrag state */ /* CreateDrag state */
bool mInObjectCreateMode;
CreateType mCreateObjectType; CreateType mCreateObjectType;
LabelModelObject* mCreateObject; LabelModelObject* mCreateObject;
double mCreateX0; double mCreateX0;