From 869e4cddd0c410b151a1fdbd27f305b07f740568 Mon Sep 17 00:00:00 2001 From: Claudio Valerio Date: Tue, 2 Jul 2013 17:44:55 +0200 Subject: [PATCH] hacked the frame bahaviour. To be removed --- src/board/UBBoardView.cpp | 250 ++++++++++------------ src/domain/UBGraphicsItemDelegate.cpp | 1 + src/domain/UBGraphicsTextItem.cpp | 3 +- src/domain/UBGraphicsTextItemDelegate.cpp | 2 +- 4 files changed, 117 insertions(+), 139 deletions(-) diff --git a/src/board/UBBoardView.cpp b/src/board/UBBoardView.cpp index e59b189f..c9bd7e6b 100644 --- a/src/board/UBBoardView.cpp +++ b/src/board/UBBoardView.cpp @@ -989,16 +989,6 @@ void UBBoardView::mousePressEvent (QMouseEvent *event) if (!movingItem && !mController->cacheIsVisible()) mLongPressTimer.start(); - if (!movingItem) { - // Rubberband selection implementation - // if (!mUBRubberBand) { - // mUBRubberBand = new UBRubberBand(QRubberBand::Rectangle, this); - // } - // mUBRubberBand->setGeometry (QRect (mMouseDownPos, QSize ())); - // mUBRubberBand->show(); - // scene()->updateMultipleSelectionFrame(); - } - if(mUBRubberBand) { mUBRubberBand->hide(); } @@ -1131,7 +1121,6 @@ void UBBoardView::mouseMoveEvent (QMouseEvent *event) if (!mUBRubberBand) { mUBRubberBand = new UBRubberBand(QRubberBand::Rectangle, this); } - // mUBRubberBand->setGeometry (QRect (mMouseDownPos, QSize ())); mUBRubberBand->setGeometry(bandRect); mUBRubberBand->show(); @@ -1209,112 +1198,18 @@ void UBBoardView::mouseReleaseEvent (QMouseEvent *event) { UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController ()->stylusTool (); - setToolCursor (currentTool); - // first/ propagate device release to the scene - if (scene()) - scene()->inputDeviceRelease(); - - if (currentTool == UBStylusTool::Selector) - { - if (bIsDesktop) { - event->ignore(); - return; - } - - UBGraphicsItem *graphicsItem = dynamic_cast(movingItem); - if (graphicsItem) - graphicsItem->Delegate()->commitUndoStep(); - - bool bReleaseIsNeed = true; - if (movingItem != determineItemToPress(scene()->itemAt(this->mapToScene(event->posF().toPoint())))) - { - movingItem = NULL; - bReleaseIsNeed = false; - } - if (mWidgetMoved) - { - mWidgetMoved = false; - movingItem = NULL; - } - else - if (movingItem && (!isCppTool(movingItem) || UBGraphicsCurtainItem::Type == movingItem->type())) - { - if (suspendedMousePressEvent) - { - QGraphicsView::mousePressEvent(suspendedMousePressEvent); // suspendedMousePressEvent is deleted by old Qt event loop - movingItem = NULL; - delete suspendedMousePressEvent; - suspendedMousePressEvent = NULL; - bReleaseIsNeed = true; - } - else - { - if (isUBItem(movingItem) && - DelegateButton::Type != movingItem->type() && - QGraphicsSvgItem::Type != movingItem->type() && - UBGraphicsDelegateFrame::Type != movingItem->type() && - UBGraphicsCache::Type != movingItem->type() && - QGraphicsWebView::Type != movingItem->type() && // for W3C widgets as Tools. - !(!isMultipleSelectionEnabled() && movingItem->parentItem() && UBGraphicsWidgetItem::Type == movingItem->type() && UBGraphicsGroupContainerItem::Type == movingItem->parentItem()->type())) - { - bReleaseIsNeed = false; - if (movingItem->isSelected() && isMultipleSelectionEnabled()) - movingItem->setSelected(false); - else - if (movingItem->parentItem() && movingItem->parentItem()->isSelected() && isMultipleSelectionEnabled()) - movingItem->parentItem()->setSelected(false); - else - { - if (movingItem->isSelected()) - bReleaseIsNeed = true; - - movingItem->setSelected(true); - } - - } - } - } - else - bReleaseIsNeed = true; - - if (mUBRubberBand && mUBRubberBand->isVisible()) { - mUBRubberBand->hide(); - } - - if (bReleaseIsNeed) - { - QGraphicsView::mouseReleaseEvent (event); - } - } - else if (currentTool == UBStylusTool::Play) - { - if (bIsDesktop) { - event->ignore(); - return; - } - - if (mWidgetMoved) - { - movingItem = NULL; - mWidgetMoved = false; - } - else - { - if (suspendedMousePressEvent) - { - QGraphicsView::mousePressEvent(suspendedMousePressEvent); // suspendedMousePressEvent is deleted by old Qt event loop - movingItem = NULL; - delete suspendedMousePressEvent; - suspendedMousePressEvent = NULL; - } - } - QGraphicsView::mouseReleaseEvent (event); - } - else if (currentTool == UBStylusTool::Text) + setToolCursor (currentTool); + // first/ propagate device release to the scene + if (scene()) + scene()->inputDeviceRelease(); + + if (currentTool == UBStylusTool::Selector) { - if (mRubberBand) { - mRubberBand->hide (); - } + if (bIsDesktop) { + event->ignore(); + return; + } + UBGraphicsItem *graphicsItem = dynamic_cast(movingItem); if (graphicsItem) graphicsItem->Delegate()->commitUndoStep(); @@ -1325,7 +1220,6 @@ void UBBoardView::mouseReleaseEvent (QMouseEvent *event) movingItem = NULL; bReleaseIsNeed = false; } - if (mWidgetMoved) { mWidgetMoved = false; @@ -1381,18 +1275,22 @@ void UBBoardView::mouseReleaseEvent (QMouseEvent *event) QGraphicsView::mouseReleaseEvent (event); } } - else if (currentTool == UBStylusTool::Play) { + else if (currentTool == UBStylusTool::Play) + { if (bIsDesktop) { event->ignore(); return; } - if (mWidgetMoved) { + if (mWidgetMoved) + { movingItem = NULL; mWidgetMoved = false; } - else { - if (suspendedMousePressEvent) { + else + { + if (suspendedMousePressEvent) + { QGraphicsView::mousePressEvent(suspendedMousePressEvent); // suspendedMousePressEvent is deleted by old Qt event loop movingItem = NULL; delete suspendedMousePressEvent; @@ -1401,32 +1299,109 @@ void UBBoardView::mouseReleaseEvent (QMouseEvent *event) } QGraphicsView::mouseReleaseEvent (event); } - else if (currentTool == UBStylusTool::Text) { - if (mRubberBand) - mRubberBand->hide (); + else if (currentTool == UBStylusTool::Text) + { + UBGraphicsItem *graphicsItem = dynamic_cast(movingItem); + if (graphicsItem) + graphicsItem->Delegate()->commitUndoStep(); - if (scene () && mRubberBand && mIsCreatingTextZone) { - QRect rubberRect = mRubberBand->geometry (); + bool bReleaseIsNeed = true; + if (movingItem != determineItemToPress(scene()->itemAt(this->mapToScene(event->posF().toPoint())))) + { + movingItem = NULL; + bReleaseIsNeed = false; + } - UBGraphicsTextItem* textItem = scene()->addTextHtml ("", mapToScene (rubberRect.topLeft ())); - event->accept (); + if (mWidgetMoved) + { + mWidgetMoved = false; + movingItem = NULL; + if (scene () && mRubberBand && mIsCreatingTextZone) { + QRect rubberRect = mRubberBand->geometry (); - UBDrawingController::drawingController ()->setStylusTool (UBStylusTool::Selector); + UBGraphicsTextItem* textItem = scene()->addTextHtml ("", mapToScene (rubberRect.topLeft ())); + event->accept (); + + UBDrawingController::drawingController ()->setStylusTool (UBStylusTool::Selector); - textItem->setTextInteractionFlags(Qt::TextEditorInteraction); - textItem->setSelected (true); - textItem->setFocus(); + textItem->setTextInteractionFlags(Qt::TextEditorInteraction); + textItem->setSelected (true); + textItem->setFocus(); + } + } + else if (movingItem && (!isCppTool(movingItem) || UBGraphicsCurtainItem::Type == movingItem->type())) + { + if (suspendedMousePressEvent) + { + QGraphicsView::mousePressEvent(suspendedMousePressEvent); // suspendedMousePressEvent is deleted by old Qt event loop + movingItem = NULL; + delete suspendedMousePressEvent; + suspendedMousePressEvent = NULL; + bReleaseIsNeed = true; + } + else{ + if (isUBItem(movingItem) && + DelegateButton::Type != movingItem->type() && + QGraphicsSvgItem::Type != movingItem->type() && + UBGraphicsDelegateFrame::Type != movingItem->type() && + UBGraphicsCache::Type != movingItem->type() && + QGraphicsWebView::Type != movingItem->type() && // for W3C widgets as Tools. + !(!isMultipleSelectionEnabled() && movingItem->parentItem() && UBGraphicsWidgetItem::Type == movingItem->type() && UBGraphicsGroupContainerItem::Type == movingItem->parentItem()->type())) + { + bReleaseIsNeed = false; + if (movingItem->isSelected() && isMultipleSelectionEnabled()) + movingItem->setSelected(false); + else + if (movingItem->parentItem() && movingItem->parentItem()->isSelected() && isMultipleSelectionEnabled()) + movingItem->parentItem()->setSelected(false); + else + { + if (movingItem->isSelected()) + bReleaseIsNeed = true; + + movingItem->setSelected(true); + } + + } + } } else + bReleaseIsNeed = true; + + if (mUBRubberBand && mUBRubberBand->isVisible()) { + mUBRubberBand->hide(); + } + + if (bReleaseIsNeed) + { QGraphicsView::mouseReleaseEvent (event); + } + } + else if (currentTool == UBStylusTool::Play) { + if (bIsDesktop) { + event->ignore(); + return; + } - mIsCreatingTextZone = false; + if (mWidgetMoved) { + movingItem = NULL; + mWidgetMoved = false; + } + else { + if (suspendedMousePressEvent) { + QGraphicsView::mousePressEvent(suspendedMousePressEvent); // suspendedMousePressEvent is deleted by old Qt event loop + movingItem = NULL; + delete suspendedMousePressEvent; + suspendedMousePressEvent = NULL; + } + } + QGraphicsView::mouseReleaseEvent (event); } else if (currentTool == UBStylusTool::Capture) { - if (mRubberBand) { - mRubberBand->hide (); - } + if (mRubberBand) + mRubberBand->hide (); + if (scene () && mRubberBand && mIsCreatingSceneGrabZone && mRubberBand->geometry ().width () > 16) { QRect rect = mRubberBand->geometry (); @@ -1558,7 +1533,8 @@ void UBBoardView::dropEvent (QDropEvent *event) QGraphicsItem *onItem = itemAt(event->pos().x(),event->pos().y()); if (onItem && onItem->type() == UBGraphicsWidgetItem::Type) { QGraphicsView::dropEvent(event); - } else { + } + else { if (!event->source() || qobject_cast(event->source()) || qobject_cast(event->source()) diff --git a/src/domain/UBGraphicsItemDelegate.cpp b/src/domain/UBGraphicsItemDelegate.cpp index 2f7977cd..0a68af2d 100644 --- a/src/domain/UBGraphicsItemDelegate.cpp +++ b/src/domain/UBGraphicsItemDelegate.cpp @@ -641,6 +641,7 @@ void UBGraphicsItemDelegate::onZoomChanged() void UBGraphicsItemDelegate::buildButtons() { } + void UBGraphicsItemDelegate::freeButtons() { //Previously deleted with the frame diff --git a/src/domain/UBGraphicsTextItem.cpp b/src/domain/UBGraphicsTextItem.cpp index 8fc2cf8c..5137eeee 100644 --- a/src/domain/UBGraphicsTextItem.cpp +++ b/src/domain/UBGraphicsTextItem.cpp @@ -46,13 +46,14 @@ UBGraphicsTextItem::UBGraphicsTextItem(QGraphicsItem * parent) : { setDelegate(new UBGraphicsTextItemDelegate(this, 0)); + // TODO claudio remove this because in contrast with the fact the frame should be created on demand. + Delegate()->createControls(); Delegate()->frame()->setOperationMode(UBGraphicsDelegateFrame::Resizing); Delegate()->setUBFlag(GF_FLIPPABLE_ALL_AXIS, false); Delegate()->setUBFlag(GF_REVOLVABLE, true); mTypeTextHereLabel = tr(""); - setData(UBGraphicsItemData::ItemLayerType, UBItemLayerType::Object); setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::ObjectItem)); //Necessary to set if we want z value to be assigned correctly diff --git a/src/domain/UBGraphicsTextItemDelegate.cpp b/src/domain/UBGraphicsTextItemDelegate.cpp index 86b196cb..119553fa 100644 --- a/src/domain/UBGraphicsTextItemDelegate.cpp +++ b/src/domain/UBGraphicsTextItemDelegate.cpp @@ -42,7 +42,7 @@ const int UBGraphicsTextItemDelegate::sMinPixelSize = 8; const int UBGraphicsTextItemDelegate::sMinPointSize = 8; UBGraphicsTextItemDelegate::UBGraphicsTextItemDelegate(UBGraphicsTextItem* pDelegated, QObject *) - : UBGraphicsItemDelegate(pDelegated,0, GF_COMMON | GF_REVOLVABLE) + : UBGraphicsItemDelegate(pDelegated,0, GF_COMMON | GF_REVOLVABLE | GF_TOOLBAR_USED) , mLastFontPixelSize(-1) , delta(5) {