Long press implemented.

PlayTool -> SelectTool
SelectTool -> PlayTool
EraiserTool -> shows EraserPalette.
preferencesAboutTextFull
Aleksei Kanash 13 years ago
parent de18bf794e
commit 3fac754e2e
  1. 3
      src/board/UBBoardPaletteManager.h
  2. 72
      src/board/UBBoardView.cpp
  3. 6
      src/board/UBBoardView.h

@ -89,6 +89,8 @@ class UBBoardPaletteManager : public QObject
void slot_changeMainMode(UBApplicationController::MainMode); void slot_changeMainMode(UBApplicationController::MainMode);
void slot_changeDesktopMode(bool); void slot_changeDesktopMode(bool);
void toggleErasePalette(bool ckecked);
private: private:
void setupPalettes(); void setupPalettes();
@ -168,7 +170,6 @@ class UBBoardPaletteManager : public QObject
void erasePaletteButtonPressed(); void erasePaletteButtonPressed();
void erasePaletteButtonReleased(); void erasePaletteButtonReleased();
void toggleErasePalette(bool ckecked);
void erasePaletteClosed(); void erasePaletteClosed();
void togglePagePalette(bool ckecked); void togglePagePalette(bool ckecked);

@ -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,23 +69,33 @@ 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 ();
mStartLayer = pStartLayer; mStartLayer = pStartLayer;
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

@ -142,6 +142,11 @@ class UBBoardView : public QGraphicsView
QList<QGraphicsItem *> mRubberedItems; QList<QGraphicsItem *> mRubberedItems;
QSet<QGraphicsItem*> mJustSelectedItems; QSet<QGraphicsItem*> mJustSelectedItems;
int mLongPressInterval;
QTimer mLongPressTimer;
bool mIsDragInProgress;
private slots: private slots:
void settingChanged(QVariant newValue); void settingChanged(QVariant newValue);
@ -149,6 +154,7 @@ class UBBoardView : public QGraphicsView
public slots: public slots:
void virtualKeyboardActivated(bool b); void virtualKeyboardActivated(bool b);
void longPressEvent();
}; };

Loading…
Cancel
Save