@ -40,6 +40,7 @@
# include "gui/UBTeacherGuideWidgetsTools.h"
# include "gui/UBTeacherGuideWidgetsTools.h"
# include "board/UBBoardController.h"
# include "board/UBBoardController.h"
# include "board/UBBoardPaletteManager.h"
# include "domain/UBGraphicsTextItem.h"
# include "domain/UBGraphicsTextItem.h"
# include "domain/UBGraphicsPixmapItem.h"
# include "domain/UBGraphicsPixmapItem.h"
@ -68,16 +69,23 @@ UBBoardView::UBBoardView (UBBoardController* pController, QWidget* pParent)
, mIsCreatingSceneGrabZone ( false )
, mIsCreatingSceneGrabZone ( false )
, mOkOnWidget ( false )
, mOkOnWidget ( false )
, suspendedMousePressEvent ( NULL )
, suspendedMousePressEvent ( NULL )
, mLongPressInterval ( 1000 )
, mIsDragInProgress ( false )
{
{
init ( ) ;
init ( ) ;
mFilterZIndex = false ;
mFilterZIndex = false ;
mLongPressTimer . setInterval ( mLongPressInterval ) ;
mLongPressTimer . setSingleShot ( true ) ;
}
}
UBBoardView : : UBBoardView ( UBBoardController * pController , int pStartLayer , int pEndLayer , QWidget * pParent )
UBBoardView : : UBBoardView ( UBBoardController * pController , int pStartLayer , int pEndLayer , QWidget * pParent )
: QGraphicsView ( pParent )
: QGraphicsView ( pParent )
, mController ( pController )
, mController ( pController )
, suspendedMousePressEvent ( NULL )
, suspendedMousePressEvent ( NULL )
, mLongPressInterval ( 1000 )
, mIsDragInProgress ( false )
{
{
init ( ) ;
init ( ) ;
@ -85,6 +93,9 @@ UBBoardView::UBBoardView (UBBoardController* pController, int pStartLayer, int p
mEndLayer = pEndLayer ;
mEndLayer = pEndLayer ;
mFilterZIndex = true ;
mFilterZIndex = true ;
mLongPressTimer . setInterval ( mLongPressInterval ) ;
mLongPressTimer . setSingleShot ( true ) ;
}
}
UBBoardView : : ~ UBBoardView ( ) {
UBBoardView : : ~ UBBoardView ( ) {
@ -621,10 +632,7 @@ void UBBoardView::rubberItems()
void UBBoardView : : moveRubberedItems ( QPointF movingVector )
void UBBoardView : : moveRubberedItems ( QPointF movingVector )
{
{
// QRect bandRect = mUBRubberBand->geometry();
//
QRectF invalidateRect = scene ( ) - > itemsBoundingRect ( ) ;
QRectF invalidateRect = scene ( ) - > itemsBoundingRect ( ) ;
// QList<QGraphicsItem *> rubberItems = items(bandRect);
foreach ( QGraphicsItem * item , mRubberedItems )
foreach ( QGraphicsItem * item , mRubberedItems )
{
{
@ -644,8 +652,35 @@ void UBBoardView::moveRubberedItems(QPointF movingVector)
scene ( ) - > invalidate ( invalidateRect ) ;
scene ( ) - > invalidate ( invalidateRect ) ;
}
}
void UBBoardView : : longPressEvent ( )
{
UBDrawingController * drawingController = UBDrawingController : : drawingController ( ) ;
UBStylusTool : : Enum currentTool = ( UBStylusTool : : Enum ) UBDrawingController : : drawingController ( ) - > stylusTool ( ) ;
disconnect ( & mLongPressTimer , SIGNAL ( timeout ( ) ) , this , SLOT ( longPressEvent ( ) ) ) ;
if ( UBStylusTool : : Selector = = currentTool )
{
drawingController - > setStylusTool ( UBStylusTool : : Play ) ;
}
else
if ( currentTool = = UBStylusTool : : Play )
{
drawingController - > setStylusTool ( UBStylusTool : : Selector ) ;
}
else
if ( UBStylusTool : : Eraser = = currentTool )
{
UBApplication : : boardController - > paletteManager ( ) - > toggleErasePalette ( true ) ;
}
}
void UBBoardView : : mousePressEvent ( QMouseEvent * event )
void UBBoardView : : mousePressEvent ( QMouseEvent * event )
{
{
mIsDragInProgress = false ;
if ( isAbsurdPoint ( event - > pos ( ) ) )
if ( isAbsurdPoint ( event - > pos ( ) ) )
{
{
event - > accept ( ) ;
event - > accept ( ) ;
@ -680,10 +715,18 @@ void UBBoardView::mousePressEvent (QMouseEvent *event)
mPreviousPoint = event - > posF ( ) ;
mPreviousPoint = event - > posF ( ) ;
event - > accept ( ) ;
event - > accept ( ) ;
}
}
else if ( currentTool = = UBStylusTool : : Eraser )
{
connect ( & mLongPressTimer , SIGNAL ( timeout ( ) ) , this , SLOT ( longPressEvent ( ) ) ) ;
mLongPressTimer . start ( ) ;
}
else if ( currentTool = = UBStylusTool : : Selector | | currentTool = = UBStylusTool : : Play )
else if ( currentTool = = UBStylusTool : : Selector | | currentTool = = UBStylusTool : : Play )
{
{
movingItem = scene ( ) - > itemAt ( this - > mapToScene ( event - > posF ( ) . toPoint ( ) ) ) ;
movingItem = scene ( ) - > itemAt ( this - > mapToScene ( event - > posF ( ) . toPoint ( ) ) ) ;
connect ( & mLongPressTimer , SIGNAL ( timeout ( ) ) , this , SLOT ( longPressEvent ( ) ) ) ;
mLongPressTimer . start ( ) ;
if ( ! movingItem ) {
if ( ! movingItem ) {
// Rubberband selection implementation
// Rubberband selection implementation
if ( ! mUBRubberBand ) {
if ( ! mUBRubberBand ) {
@ -692,6 +735,10 @@ void UBBoardView::mousePressEvent (QMouseEvent *event)
mUBRubberBand - > setGeometry ( QRect ( mMouseDownPos , QSize ( ) ) ) ;
mUBRubberBand - > setGeometry ( QRect ( mMouseDownPos , QSize ( ) ) ) ;
mUBRubberBand - > show ( ) ;
mUBRubberBand - > show ( ) ;
}
}
else
{
mUBRubberBand - > hide ( ) ;
}
handleItemMousePress ( event ) ;
handleItemMousePress ( event ) ;
event - > accept ( ) ;
event - > accept ( ) ;
@ -760,6 +807,12 @@ void UBBoardView::mousePressEvent (QMouseEvent *event)
void
void
UBBoardView : : mouseMoveEvent ( QMouseEvent * event )
UBBoardView : : mouseMoveEvent ( QMouseEvent * event )
{
{
if ( ! mIsDragInProgress & & ( ( mapToScene ( event - > pos ( ) ) - mLastPressedMousePos ) . manhattanLength ( ) < QApplication : : startDragDistance ( ) ) )
{
return ;
}
mIsDragInProgress = true ;
UBStylusTool : : Enum currentTool = ( UBStylusTool : : Enum ) UBDrawingController : : drawingController ( ) - > stylusTool ( ) ;
UBStylusTool : : Enum currentTool = ( UBStylusTool : : Enum ) UBDrawingController : : drawingController ( ) - > stylusTool ( ) ;
if ( isAbsurdPoint ( event - > pos ( ) ) )
if ( isAbsurdPoint ( event - > pos ( ) ) )
@ -777,12 +830,18 @@ UBBoardView::mouseMoveEvent (QMouseEvent *event)
mPreviousPoint = eventPosition ;
mPreviousPoint = eventPosition ;
event - > accept ( ) ;
event - > accept ( ) ;
}
}
else if ( currentTool = = UBStylusTool : : Eraser )
{
mLongPressTimer . stop ( ) ;
}
else if ( currentTool = = UBStylusTool : : Selector | | currentTool = = UBStylusTool : : Play )
else if ( currentTool = = UBStylusTool : : Selector | | currentTool = = UBStylusTool : : Play )
{
{
if ( ( event - > pos ( ) - mLastPressedMousePos ) . manhattanLength ( ) < QApplication : : startDragDistance ( ) ) {
if ( ( event - > pos ( ) - mLastPressedMousePos ) . manhattanLength ( ) < QApplication : : startDragDistance ( ) ) {
return ;
return ;
}
}
mLongPressTimer . stop ( ) ;
if ( ! movingItem & & ( mMouseButtonIsPressed | | mTabletStylusIsPressed ) & & mUBRubberBand & & mUBRubberBand - > isVisible ( ) ) {
if ( ! movingItem & & ( mMouseButtonIsPressed | | mTabletStylusIsPressed ) & & mUBRubberBand & & mUBRubberBand - > isVisible ( ) ) {
QRect bandRect ( mMouseDownPos , event - > pos ( ) ) ;
QRect bandRect ( mMouseDownPos , event - > pos ( ) ) ;
@ -963,6 +1022,7 @@ UBBoardView::mouseReleaseEvent (QMouseEvent *event)
mPendingStylusReleaseEvent = false ;
mPendingStylusReleaseEvent = false ;
mTabletStylusIsPressed = false ;
mTabletStylusIsPressed = false ;
mLongPressTimer . stop ( ) ;
}
}
void
void