diff --git a/resources/images/close.svg b/resources/images/close.svg
index 5fa855a2..f552d322 100644
--- a/resources/images/close.svg
+++ b/resources/images/close.svg
@@ -5,6 +5,5 @@
width="26px" height="26px" viewBox="0 0 26 26" style="enable-background:new 0 0 26 26;" xml:space="preserve">
-
+
diff --git a/resources/images/cursors/magnifier.png b/resources/images/cursors/magnifier.png
deleted file mode 100644
index f2decb01..00000000
Binary files a/resources/images/cursors/magnifier.png and /dev/null differ
diff --git a/resources/images/decrease.svg b/resources/images/decrease.svg
new file mode 100644
index 00000000..2f81bf5a
--- /dev/null
+++ b/resources/images/decrease.svg
@@ -0,0 +1,9 @@
+
+
+
+
diff --git a/resources/images/increase.svg b/resources/images/increase.svg
new file mode 100644
index 00000000..23a4cf44
--- /dev/null
+++ b/resources/images/increase.svg
@@ -0,0 +1,9 @@
+
+
+
+
diff --git a/resources/images/stylusPalette/magnifier.png b/resources/images/stylusPalette/magnifier.png
deleted file mode 100644
index f17b51c7..00000000
Binary files a/resources/images/stylusPalette/magnifier.png and /dev/null differ
diff --git a/resources/images/stylusPalette/magnifierOn.png b/resources/images/stylusPalette/magnifierOn.png
deleted file mode 100644
index 5e454e7f..00000000
Binary files a/resources/images/stylusPalette/magnifierOn.png and /dev/null differ
diff --git a/resources/images/toolPalette/magnifierTool.png b/resources/images/toolPalette/magnifierTool.png
new file mode 100644
index 00000000..a0a19206
Binary files /dev/null and b/resources/images/toolPalette/magnifierTool.png differ
diff --git a/resources/images/toolbar/largeMagnifierSize.png b/resources/images/toolbar/largeMagnifierSize.png
deleted file mode 100644
index ef67e2d4..00000000
Binary files a/resources/images/toolbar/largeMagnifierSize.png and /dev/null differ
diff --git a/resources/images/toolbar/largeMagnifierZoom.png b/resources/images/toolbar/largeMagnifierZoom.png
deleted file mode 100644
index a5035a13..00000000
Binary files a/resources/images/toolbar/largeMagnifierZoom.png and /dev/null differ
diff --git a/resources/images/toolbar/mediumMagnifierSize.png b/resources/images/toolbar/mediumMagnifierSize.png
deleted file mode 100644
index feacbdee..00000000
Binary files a/resources/images/toolbar/mediumMagnifierSize.png and /dev/null differ
diff --git a/resources/images/toolbar/mediumMagnifierZoom.png b/resources/images/toolbar/mediumMagnifierZoom.png
deleted file mode 100644
index 5cad3740..00000000
Binary files a/resources/images/toolbar/mediumMagnifierZoom.png and /dev/null differ
diff --git a/resources/images/toolbar/smallMagnifierSize.png b/resources/images/toolbar/smallMagnifierSize.png
deleted file mode 100644
index 9d49d8e7..00000000
Binary files a/resources/images/toolbar/smallMagnifierSize.png and /dev/null differ
diff --git a/resources/images/toolbar/smallMagnifierZoom.png b/resources/images/toolbar/smallMagnifierZoom.png
deleted file mode 100644
index df7f8d56..00000000
Binary files a/resources/images/toolbar/smallMagnifierZoom.png and /dev/null differ
diff --git a/resources/sankore.qrc b/resources/sankore.qrc
index b622f343..ebd0fc91 100644
--- a/resources/sankore.qrc
+++ b/resources/sankore.qrc
@@ -3,6 +3,8 @@
images/uniboard.png
images/bigUniboard.png
images/close.svg
+ images/increase.svg
+ images/decrease.svg
images/resize.svg
images/play.svg
images/pause.svg
@@ -121,12 +123,6 @@
images/toolbar/eraserTool.png
images/toolbar/lineTool.png
images/toolbar/tools.png
- images/toolbar/largeMagnifierSize.png
- images/toolbar/mediumMagnifierSize.png
- images/toolbar/smallMagnifierSize.png
- images/toolbar/largeMagnifierZoom.png
- images/toolbar/mediumMagnifierZoom.png
- images/toolbar/smallMagnifierZoom.png
images/stylusPalette/arrow.png
images/stylusPalette/arrowOn.png
images/stylusPalette/eraser.png
@@ -150,8 +146,6 @@
images/stylusPalette/textOn.png
images/stylusPalette/captureArea.png
images/stylusPalette/captureAreaOn.png
- images/stylusPalette/magnifier.png
- images/stylusPalette/magnifierOn.png
images/backgroundPalette/background1.svg
images/backgroundPalette/background1On.svg
images/backgroundPalette/background2.svg
@@ -167,6 +161,7 @@
images/toolPalette/protractorTool.png
images/toolPalette/compassTool.png
images/toolPalette/maskTool.png
+ images/toolPalette/magnifierTool.png
images/extraPalette/blackout.png
images/extraPalette/keyboard.png
images/extraPalette/trapFlash.png
@@ -185,7 +180,6 @@
images/cursors/resize.png
images/cursors/drawCompass.png
images/cursors/drawRulerLine.png
- images/cursors/magnifier.png
images/print/onepage.png
images/print/thumbnails.png
images/print/twopages.png
diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp
index c037db93..43c9088c 100644
--- a/src/board/UBBoardController.cpp
+++ b/src/board/UBBoardController.cpp
@@ -36,6 +36,7 @@
#include "gui/UBMainWindow.h"
#include "gui/UBToolWidget.h"
#include "gui/UBKeyboardPalette.h"
+#include "gui/UBMagnifer.h"
#include "domain/UBGraphicsPixmapItem.h"
#include "domain/UBGraphicsItemUndoCommand.h"
@@ -312,42 +313,6 @@ void UBBoardController::setupToolbar()
//-----------------------------------------------------------//
- QList magnifierZoomActions;
- magnifierZoomActions.append(mMainWindow->actionMagnifierZoomSmall);
- magnifierZoomActions.append(mMainWindow->actionMagnifierZoomMedium);
- magnifierZoomActions.append(mMainWindow->actionMagnifierZoomLarge);
-
- UBToolbarButtonGroup *magnifierZoomChoice =
- new UBToolbarButtonGroup(mMainWindow->boardToolBar, magnifierZoomActions);
-
- mMainWindow->boardToolBar->insertWidget(mMainWindow->actionBackgrounds, magnifierZoomChoice);
-
- connect(settings->appToolBarDisplayText, SIGNAL(changed(QVariant)), magnifierZoomChoice, SLOT(displayText(QVariant)));
- connect(magnifierZoomChoice, SIGNAL(activated(int)), UBDrawingController::drawingController(), SLOT(setMagnifierZoomIndex(int)));
-
- magnifierZoomChoice->displayText(QVariant(settings->appToolBarDisplayText->get().toBool()));
- magnifierZoomChoice->setCurrentIndex(settings->magnifierZoomIndex());
-
- QList magnifierSizeActions;
- magnifierSizeActions.append(mMainWindow->actionMagnifierSizeSmall);
- magnifierSizeActions.append(mMainWindow->actionMagnifierSizeMedium);
- magnifierSizeActions.append(mMainWindow->actionMagnifierSizeLarge);
-
- UBToolbarButtonGroup *magnifierSizeChoice =
- new UBToolbarButtonGroup(mMainWindow->boardToolBar, magnifierSizeActions);
-
- mMainWindow->boardToolBar->insertWidget(mMainWindow->actionBackgrounds, magnifierSizeChoice);
-
- connect(settings->appToolBarDisplayText, SIGNAL(changed(QVariant)), magnifierSizeChoice, SLOT(displayText(QVariant)));
- connect(magnifierSizeChoice, SIGNAL(activated(int)), UBDrawingController::drawingController(), SLOT(setMagnifierSizeIndex(int)));
-
- magnifierSizeChoice->displayText(QVariant(settings->appToolBarDisplayText->get().toBool()));
- magnifierSizeChoice->setCurrentIndex(settings->magnifierSizeIndex());
-
- mMainWindow->boardToolBar->insertSeparator(mMainWindow->actionBackgrounds);
-
- //-----------------------------------------------------------//
-
UBApplication::app()->insertSpaceToToolbarBeforeAction(mMainWindow->boardToolBar, mMainWindow->actionBoard);
UBApplication::app()->insertSpaceToToolbarBeforeAction(mMainWindow->tutorialToolBar, mMainWindow->actionBoard);
@@ -1056,9 +1021,14 @@ void UBBoardController::downloadFinished(bool pSuccess, QUrl sourceUrl, QString
mActiveScene->addTriangle(pPos);
UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
}
- else if(sourceUrl.toString() == UBToolsManager::manager()->cache.id)
+ else if (sourceUrl.toString() == UBToolsManager::manager()->magnifier.id)
{
- mActiveScene->addCache();
+ UBMagnifierParams params;
+ params.x = controlContainer()->geometry().width() / 2;
+ params.y = controlContainer()->geometry().height() / 2;
+ params.zoom = 2;
+ params.sizePercentFromScene = 20;
+ mActiveScene->addMagnifier(params);
UBDrawingController::drawingController()->setStylusTool(UBStylusTool::Selector);
}
else if (sourceUrl.toString() == UBToolsManager::manager()->mask.id)
@@ -1179,7 +1149,7 @@ void UBBoardController::setActiveDocumentScene(UBDocumentProxy* pDocumentProxy,
}
// Notify the navigator palette that the document has changed
- mPaletteManager->leftPalette()->pageNavigator()->setDocument(pDocumentProxy);
+ mPaletteManager->leftPalette()->pageNavigator()->setDocument(pDocumentProxy);
if (sceneChange)
emit activeSceneChanged();
diff --git a/src/board/UBBoardController.h b/src/board/UBBoardController.h
index 5e1e0260..ebcffb33 100644
--- a/src/board/UBBoardController.h
+++ b/src/board/UBBoardController.h
@@ -81,6 +81,11 @@ class UBBoardController : public QObject
return mDisplayView;
}
+ UBGraphicsScene* activeScene()
+ {
+ return mActiveScene;
+ }
+
void setPenColorOnDarkBackground(const QColor& pColor)
{
if (mPenColorOnDarkBackground == pColor)
diff --git a/src/board/UBBoardView.cpp b/src/board/UBBoardView.cpp
index d38df42c..c7d18ea5 100644
--- a/src/board/UBBoardView.cpp
+++ b/src/board/UBBoardView.cpp
@@ -857,9 +857,6 @@ UBBoardView::setToolCursor (int tool)
case UBStylusTool::Eraser:
controlViewport->setCursor (UBResources::resources ()->eraserCursor);
break;
- case UBStylusTool::Magnifier:
- controlViewport->setCursor (UBResources::resources ()->magnifierCursor);
- break;
case UBStylusTool::Marker:
controlViewport->setCursor (UBResources::resources ()->markerCursor);
break;
diff --git a/src/board/UBDrawingController.cpp b/src/board/UBDrawingController.cpp
index 61196338..5d170470 100644
--- a/src/board/UBDrawingController.cpp
+++ b/src/board/UBDrawingController.cpp
@@ -44,7 +44,6 @@ UBDrawingController::UBDrawingController(QObject * parent)
connect(UBApplication::mainWindow->actionPen, SIGNAL(triggered(bool)), this, SLOT(penToolSelected(bool)));
connect(UBApplication::mainWindow->actionEraser, SIGNAL(triggered(bool)), this, SLOT(eraserToolSelected(bool)));
- connect(UBApplication::mainWindow->actionMagnifier, SIGNAL(triggered(bool)), this, SLOT(magnifierToolSelected(bool)));
connect(UBApplication::mainWindow->actionMarker, SIGNAL(triggered(bool)), this, SLOT(markerToolSelected(bool)));
connect(UBApplication::mainWindow->actionSelector, SIGNAL(triggered(bool)), this, SLOT(selectorToolSelected(bool)));
connect(UBApplication::mainWindow->actionHand, SIGNAL(triggered(bool)), this, SLOT(handToolSelected(bool)));
@@ -103,8 +102,6 @@ void UBDrawingController::setStylusTool(int tool)
UBApplication::mainWindow->actionPen->setChecked(true);
else if (mStylusTool == UBStylusTool::Eraser)
UBApplication::mainWindow->actionEraser->setChecked(true);
- else if (mStylusTool == UBStylusTool::Magnifier)
- UBApplication::mainWindow->actionMagnifier->setChecked(true);
else if (mStylusTool == UBStylusTool::Marker)
UBApplication::mainWindow->actionMarker->setChecked(true);
else if (mStylusTool == UBStylusTool::Selector)
@@ -265,21 +262,6 @@ void UBDrawingController::setEraserWidthIndex(int index)
UBSettings::settings()->setEraserWidthIndex(index);
}
-
-void UBDrawingController::setMagnifierZoomIndex(int index)
-{
- setStylusTool(UBStylusTool::Magnifier);
- UBSettings::settings()->setMagnifierZoomIndex(index);
-}
-
-
-void UBDrawingController::setMagnifierSizeIndex(int index)
-{
- setStylusTool(UBStylusTool::Magnifier);
- UBSettings::settings()->setMagnifierSizeIndex(index);
-}
-
-
void UBDrawingController::setPenColor(bool onDarkBackground, const QColor& color, int pIndex)
{
if (onDarkBackground)
@@ -340,12 +322,6 @@ void UBDrawingController::eraserToolSelected(bool checked)
setStylusTool(UBStylusTool::Eraser);
}
-void UBDrawingController::magnifierToolSelected(bool checked)
-{
- if (checked)
- setStylusTool(UBStylusTool::Magnifier);
-}
-
void UBDrawingController::markerToolSelected(bool checked)
{
if (checked)
diff --git a/src/board/UBDrawingController.h b/src/board/UBDrawingController.h
index 2e4e4394..2f6e8f3e 100644
--- a/src/board/UBDrawingController.h
+++ b/src/board/UBDrawingController.h
@@ -57,8 +57,6 @@ class UBDrawingController : public QObject
void setLineWidthIndex(int index);
void setColorIndex(int index);
void setEraserWidthIndex(int index);
- void setMagnifierZoomIndex(int index);
- void setMagnifierSizeIndex(int index);
signals:
void stylusToolChanged(int tool);
@@ -77,7 +75,6 @@ class UBDrawingController : public QObject
void penToolSelected(bool checked);
void eraserToolSelected(bool checked);
- void magnifierToolSelected(bool checked);
void markerToolSelected(bool checked);
void selectorToolSelected(bool checked);
void handToolSelected(bool checked);
diff --git a/src/core/UB.h b/src/core/UB.h
index 72fed56e..07ae8ecc 100644
--- a/src/core/UB.h
+++ b/src/core/UB.h
@@ -26,8 +26,7 @@ struct UBStylusTool
{
Pen = 0,
Eraser,
- Magnifier,
- Marker,
+ Marker,
Selector,
Hand,
ZoomIn,
diff --git a/src/core/UBSettings.cpp b/src/core/UBSettings.cpp
index 2e8997b6..373b22b9 100644
--- a/src/core/UBSettings.cpp
+++ b/src/core/UBSettings.cpp
@@ -624,170 +624,6 @@ qreal UBSettings::currentEraserWidth()
return width;
}
-//----------------------------------------//
-// magnifier
-
-//-------------//
-// zoom index
-
-int UBSettings::magnifierZoomIndex()
-{
- return value("Board/MagnifierZoomIndex", 1).toInt();
-}
-
-void UBSettings::setMagnifierZoomIndex(int index)
-{
- setValue("Board/MagnifierZoomIndex", index);
-}
-
-//-------------//
-// small zoom
-
-qreal UBSettings::magnifierSmallZoom()
-{
- return value("Board/MagnifierSmallZoom", 2).toDouble();
-}
-
-void UBSettings::setMagnifierSmallZoom(qreal xZoom)
-{
- setValue("Board/MagnifierSmallZoom", xZoom);
-}
-
-//-------------//
-// medium zoom
-
-qreal UBSettings::magnifierMediumZoom()
-{
- return value("Board/MagnifierMediumZoom", 3).toDouble();
-}
-
-void UBSettings::setMagnifierMediumZoom(qreal xZoom)
-{
- setValue("Board/MagnifierMediumZoom", xZoom);
-}
-
-//-------------//
-// large zoom
-
-qreal UBSettings::magnifierLargeZoom()
-{
- return value("Board/MagnifierLargeZoom", 4).toDouble();
-}
-
-void UBSettings::setMagnifierLargeZoom(qreal xZoom)
-{
- setValue("Board/MagnifierLargeZoom", xZoom);
-}
-
-//-------------//
-
-qreal UBSettings::currentMagnifierZoom()
-{
- qreal zoom = 0;
-
- switch (magnifierZoomIndex())
- {
- case UBZoom::Small:
- zoom = magnifierSmallZoom();
- break;
- case UBZoom::Medium:
- zoom = magnifierMediumZoom();
- break;
- case UBZoom::Large:
- zoom = magnifierLargeZoom();
- break;
- default:
- Q_ASSERT(false);
- //failsafe
- zoom = magnifierSmallZoom();
- break;
- }
-
- return zoom;
-}
-
-//-------------//
-// size index
-
-int UBSettings::magnifierSizeIndex()
-{
- return value("Board/MagnifierSizeIndex", 1).toInt();
-}
-
-void UBSettings::setMagnifierSizeIndex(int index)
-{
- setValue("Board/MagnifierSizeIndex", index);
-}
-
-//-------------//
-// small zoom
-
-qreal UBSettings::magnifierSmallSize()
-{
- return value("Board/MagnifierSmallSize", 10).toDouble();
-}
-
-void UBSettings::setMagnifierSmallSize(qreal xSize)
-{
- setValue("Board/MagnifierSmallSize", xSize);
-}
-
-//-------------//
-// medium zoom
-
-qreal UBSettings::magnifierMediumSize()
-{
- return value("Board/MagnifierMediumSize", 20).toDouble();
-}
-
-void UBSettings::setMagnifierMediumSize(qreal xSize)
-{
- setValue("Board/MagnifierMediumSize", xSize);
-}
-
-//-------------//
-// large zoom
-
-qreal UBSettings::magnifierLargeSize()
-{
- return value("Board/MagnifierLargeSize", 30).toDouble();
-}
-
-void UBSettings::setMagnifierLargeSize(qreal xSize)
-{
- setValue("Board/MagnifierLargeSize", xSize);
-}
-
-//-------------//
-
-qreal UBSettings::currentMagnifierSize()
-{
- qreal size = 0;
-
- switch (magnifierSizeIndex())
- {
- case UBSize::Small:
- size = magnifierSmallSize();
- break;
- case UBSize::Medium:
- size = magnifierMediumSize();
- break;
- case UBSize::Large:
- size = magnifierLargeSize();
- break;
- default:
- Q_ASSERT(false);
- //failsafe
- size = magnifierSmallSize();
- break;
- }
-
- return size;
-}
-
-//----------------------------------------//
-
-
bool UBSettings::isDarkBackground()
{
return value("Board/DarkBackground", 0).toBool();
diff --git a/src/core/UBSettings.h b/src/core/UBSettings.h
index 67afc057..6b7a8961 100644
--- a/src/core/UBSettings.h
+++ b/src/core/UBSettings.h
@@ -66,19 +66,6 @@ class UBSettings : public QObject
qreal eraserStrongWidth();
qreal currentEraserWidth();
- // Magnifier related
- int magnifierZoomIndex();
- qreal magnifierSmallZoom();
- qreal magnifierMediumZoom();
- qreal magnifierLargeZoom();
- qreal currentMagnifierZoom();
-
- int magnifierSizeIndex();
- qreal magnifierSmallSize();
- qreal magnifierMediumSize();
- qreal magnifierLargeSize();
- qreal currentMagnifierSize();
-
// Background related
bool isDarkBackground();
bool isCrossedBackground();
@@ -360,18 +347,7 @@ class UBSettings : public QObject
void setEraserMediumWidth(qreal width);
void setEraserStrongWidth(qreal width);
- void setMagnifierZoomIndex(int index);
- void setMagnifierSmallZoom(qreal xZoom);
- void setMagnifierMediumZoom(qreal xZoom);
- void setMagnifierLargeZoom(qreal xZoom);
-
- void setMagnifierSizeIndex(int index);
- void setMagnifierSmallSize(qreal xSize);
- void setMagnifierMediumSize(qreal xSize);
- void setMagnifierLargeSize(qreal xSize);
-
-
- void setStylusPaletteVisible(bool visible);
+ void setStylusPaletteVisible(bool visible);
void setPenPressureSensitive(bool sensitive);
void setMarkerPressureSensitive(bool sensitive);
diff --git a/src/domain/UBGraphicsScene.cpp b/src/domain/UBGraphicsScene.cpp
index 33e430ba..f908c9e6 100644
--- a/src/domain/UBGraphicsScene.cpp
+++ b/src/domain/UBGraphicsScene.cpp
@@ -36,7 +36,6 @@
#include "tools/UBGraphicsCompass.h"
#include "tools/UBGraphicsTriangle.h"
#include "tools/UBGraphicsCurtainItem.h"
-#include "tools/UBGraphicsCache.h"
#include "document/UBDocumentProxy.h"
@@ -71,7 +70,6 @@ qreal UBGraphicsScene::toolOffsetProtractor = 100;
qreal UBGraphicsScene::toolOffsetTriangle = 100;
qreal UBGraphicsScene::toolOffsetCompass = 100;
qreal UBGraphicsScene::toolOffsetEraser = 200;
-qreal UBGraphicsScene::toolOffsetCache = 1000;
qreal UBGraphicsScene::toolOffsetCurtain = 1000;
qreal UBGraphicsScene::toolOffsetPointer = 1100;
@@ -138,13 +136,13 @@ UBGraphicsScene::UBGraphicsScene(UBDocumentProxy* parent)
}
connect(this, SIGNAL(selectionChanged()), this, SLOT(selectionChangedProcessing()));
- mHasCache = false;
}
UBGraphicsScene::~UBGraphicsScene()
{
// NOOP
+ DisposeMagnifierQWidgets();
}
void UBGraphicsScene::selectionChangedProcessing()
@@ -238,15 +236,6 @@ bool UBGraphicsScene::inputDevicePress(const QPointF& scenePos, const qreal& pre
drawPointer(scenePos);
accepted = true;
}
- else if (currentTool == UBStylusTool::Magnifier)
- {
- CreateMagnifierQWidgets();
- magniferControlViewWidget->grabNMove(QCursor::pos(), true);
- magniferDisplayViewWidget->grabNMove(scenePos, true);
- magniferControlViewWidget->show();
- magniferDisplayViewWidget->show();
- accepted = true;
- }
}
return accepted;
@@ -320,11 +309,6 @@ bool UBGraphicsScene::inputDeviceMove(const QPointF& scenePos, const qreal& pres
{
drawPointer(position);
}
- else if (currentTool == UBStylusTool::Magnifier)
- {
- magniferControlViewWidget->grabNMove(QCursor::pos(), false);
- magniferDisplayViewWidget->grabNMove(position, false);
- }
accepted = true;
}
@@ -363,13 +347,7 @@ bool UBGraphicsScene::inputDeviceRelease()
{
mCurrentStroke = 0;
}
- else
- if (currentTool == UBStylusTool::Magnifier)
- {
- DisposeMagnifierQWidgets();
- //qDebug() << "deleted";
- }
-
+
if (mRemovedItems.size() > 0 || mAddedItems.size() > 0)
{
UBGraphicsItemUndoCommand* udcmd = new UBGraphicsItemUndoCommand(this, mRemovedItems, mAddedItems); //deleted by the undoStack
@@ -425,24 +403,6 @@ void UBGraphicsScene::drawPointer(const QPointF &pPoint)
}
}
-// call this function when user press mouse button in Magnifier mode
-void UBGraphicsScene::CreateMagnifierQWidgets()
-{
- UBApplication::app()->setOverrideCursor( QCursor( Qt::BlankCursor ) );
-
- magniferControlViewWidget = new UBMagnifer((QWidget*)(UBApplication::boardController->controlContainer()));
- magniferControlViewWidget->setGrabView((QGraphicsView*)UBApplication::boardController->controlView());
- magniferControlViewWidget->setMoveView((QGraphicsView*)UBApplication::boardController->controlContainer());
- magniferControlViewWidget->setSize(UBSettings::settings()->currentMagnifierSize());
- magniferControlViewWidget->setZoom(UBSettings::settings()->currentMagnifierZoom());
-
- magniferDisplayViewWidget = new UBMagnifer((QWidget*)(UBApplication::boardController->displayView()));
- magniferDisplayViewWidget->setGrabView((QGraphicsView*)UBApplication::boardController->controlView());
- magniferDisplayViewWidget->setMoveView((QGraphicsView*)UBApplication::boardController->displayView());
- magniferDisplayViewWidget->setSize(UBSettings::settings()->currentMagnifierSize());
- magniferDisplayViewWidget->setZoom(UBSettings::settings()->currentMagnifierZoom());
-}
-
// call this function when user release mouse button in Magnifier mode
void UBGraphicsScene::DisposeMagnifierQWidgets()
{
@@ -1536,6 +1496,119 @@ void UBGraphicsScene::addTriangle(QPointF center)
setModified(true);
}
+void UBGraphicsScene::addMagnifier(UBMagnifierParams params)
+{
+ // can have only one magnifier at one time
+ if(magniferControlViewWidget) return;
+
+ QWidget *cContainer = (QWidget*)(UBApplication::boardController->controlContainer());
+ QGraphicsView *cView = (QGraphicsView*)UBApplication::boardController->controlView();
+ QGraphicsView *dView = (QGraphicsView*)UBApplication::boardController->displayView();
+
+ QPoint ccZeroPoint = cContainer->mapToGlobal(QPoint(0,0));
+ QPoint cvZeroPoint = cView->mapToGlobal(QPoint(0,0));
+ QPoint dvZeroPoint = dView->mapToGlobal(QPoint(0,0));
+
+ int cvW = cView->width();
+ int dvW = dView->width();
+ qreal wCoeff = (qreal)dvW / (qreal)cvW;
+
+ int cvH = cView->height();
+ int dvH = dView->height();
+ qreal hCoeff = (qreal)dvH / (qreal)cvH;
+
+ QPoint ccPoint(params.x,params.y);
+ QPoint globalPoint = cContainer->mapToGlobal(ccPoint);
+ QPoint cvPoint = cView->mapFromGlobal(globalPoint);
+ QPoint dvPoint( cvPoint.x() * wCoeff + dvZeroPoint.x(), cvPoint.y() * hCoeff + dvZeroPoint.y());
+
+ magniferControlViewWidget = new UBMagnifier((QWidget*)(UBApplication::boardController->controlContainer()), true);
+ magniferControlViewWidget->setGrabView((QGraphicsView*)UBApplication::boardController->controlView());
+ magniferControlViewWidget->setMoveView((QWidget*)(UBApplication::boardController->controlContainer()));
+ magniferControlViewWidget->setSize(params.sizePercentFromScene);
+ magniferControlViewWidget->setZoom(params.zoom);
+
+ magniferDisplayViewWidget = new UBMagnifier((QWidget*)(UBApplication::boardController->displayView()), false);
+ magniferDisplayViewWidget->setGrabView((QGraphicsView*)UBApplication::boardController->controlView());
+ magniferDisplayViewWidget->setMoveView((QGraphicsView*)UBApplication::boardController->displayView());
+ magniferDisplayViewWidget->setSize(params.sizePercentFromScene);
+ magniferDisplayViewWidget->setZoom(params.zoom);
+
+ magniferControlViewWidget->grabNMove(globalPoint, globalPoint, true);
+ magniferDisplayViewWidget->grabNMove(globalPoint, dvPoint, true);
+ magniferControlViewWidget->show();
+ magniferDisplayViewWidget->show();
+
+ connect(magniferControlViewWidget, SIGNAL(magnifierMoved_Signal(QPoint)), this, SLOT(moveMagnifier(QPoint)));
+ connect(magniferControlViewWidget, SIGNAL(magnifierClose_Signal()), this, SLOT(closeMagnifier()));
+ connect(magniferControlViewWidget, SIGNAL(magnifierZoomIn_Signal()), this, SLOT(zoomInMagnifier()));
+ connect(magniferControlViewWidget, SIGNAL(magnifierZoomOut_Signal()), this, SLOT(zoomOutMagnifier()));
+ connect(magniferControlViewWidget, SIGNAL(magnifierResized_Signal(qreal)), this, SLOT(resizedMagnifier(qreal)));
+
+ setModified(true);
+}
+
+void UBGraphicsScene::moveMagnifier(QPoint newPos)
+{
+ QWidget *cContainer = (QWidget*)(UBApplication::boardController->controlContainer());
+ QGraphicsView *cView = (QGraphicsView*)UBApplication::boardController->controlView();
+ QGraphicsView *dView = (QGraphicsView*)UBApplication::boardController->displayView();
+
+ QPoint ccZeroPoint = cContainer->mapToGlobal(QPoint(0,0));
+ QPoint cvZeroPoint = cView->mapToGlobal(QPoint(0,0));
+ QPoint dvZeroPoint = dView->mapToGlobal(QPoint(0,0));
+
+ int cvW = cView->width();
+ int dvW = dView->width();
+ qreal wCoeff = (qreal)dvW / (qreal)cvW;
+
+ int cvH = cView->height();
+ int dvH = dView->height();
+ qreal hCoeff = (qreal)dvH / (qreal)cvH;
+
+ QPoint globalPoint = cContainer->mapToGlobal(newPos);
+ QPoint cvPoint = cView->mapFromGlobal(globalPoint);
+ QPoint dvPoint( cvPoint.x() * wCoeff + dvZeroPoint.x(), cvPoint.y() * hCoeff + dvZeroPoint.y());
+
+ magniferControlViewWidget->grabNMove(globalPoint, globalPoint, false, false);
+ magniferDisplayViewWidget->grabNMove(globalPoint, dvPoint, false, true);
+
+ setModified(true);
+}
+
+void UBGraphicsScene::closeMagnifier()
+{
+ DisposeMagnifierQWidgets();
+}
+
+void UBGraphicsScene::zoomInMagnifier()
+{
+ if(magniferControlViewWidget->params.zoom < 8)
+ {
+ magniferControlViewWidget->setZoom(magniferControlViewWidget->params.zoom + 0.5);
+ magniferDisplayViewWidget->setZoom(magniferDisplayViewWidget->params.zoom + 0.5);
+ }
+}
+
+void UBGraphicsScene::zoomOutMagnifier()
+{
+ if(magniferControlViewWidget->params.zoom > 1)
+ {
+ magniferControlViewWidget->setZoom(magniferControlViewWidget->params.zoom - 0.5);
+ magniferDisplayViewWidget->setZoom(magniferDisplayViewWidget->params.zoom - 0.5);
+ }
+}
+
+void UBGraphicsScene::resizedMagnifier(qreal newPercent)
+{
+ if(newPercent > 18 && newPercent < 50)
+ {
+ magniferControlViewWidget->setSize(newPercent);
+ magniferControlViewWidget->grabPoint();
+ magniferDisplayViewWidget->setSize(newPercent);
+ magniferDisplayViewWidget->grabPoint();
+ }
+}
void UBGraphicsScene::addCompass(QPointF center)
{
@@ -1553,24 +1626,6 @@ void UBGraphicsScene::addCompass(QPointF center)
setModified(true);
}
-void UBGraphicsScene::addCache()
-{
- UBGraphicsCache* cache = new UBGraphicsCache();
- mTools << cache;
- QGraphicsView* view;
-
- if(UBApplication::applicationController->displayManager()->hasDisplay())
- {
- view = (QGraphicsView*)(UBApplication::boardController->displayView());
- }
- else
- {
- view = (QGraphicsView*)(UBApplication::boardController->controlView());
- }
- addItem(cache);
- cache->setVisible(true);
- cache->setSelected(true);
-}
void UBGraphicsScene::addMask()
{
diff --git a/src/domain/UBGraphicsScene.h b/src/domain/UBGraphicsScene.h
index d1eb1b58..5a5ffe2e 100644
--- a/src/domain/UBGraphicsScene.h
+++ b/src/domain/UBGraphicsScene.h
@@ -44,8 +44,8 @@ class UBAbstractWidget;
class UBDocumentProxy;
class UBGraphicsCurtainItem;
class UBGraphicsStroke;
-class UBGraphicsCache;
-class UBMagnifer;
+class UBMagnifierParams;
+class UBMagnifier;
const double PI = 4.0 * atan(1.0);
@@ -166,10 +166,10 @@ class UBGraphicsScene: public UBCoreGraphicsScene, public UBItem
qreal getNextObjectZIndex();
void addRuler(QPointF center);
- void addTriangle(QPointF center);
void addProtractor(QPointF center);
void addCompass(QPointF center);
- void addCache();
+ void addTriangle(QPointF center);
+ void addMagnifier(UBMagnifierParams params);
void addMask();
@@ -247,7 +247,6 @@ class UBGraphicsScene: public UBCoreGraphicsScene, public UBItem
static qreal toolOffsetCompass;
static qreal toolOffsetCurtain;
static qreal toolOffsetTriangle;
- static qreal toolOffsetCache;
QSet tools(){ return mTools;}
@@ -277,6 +276,11 @@ class UBGraphicsScene: public UBCoreGraphicsScene, public UBItem
void selectionChangedProcessing();
+ void moveMagnifier(QPoint newPos);
+ void closeMagnifier();
+ void zoomInMagnifier();
+ void zoomOutMagnifier();
+ void resizedMagnifier(qreal newPercent);
signals:
@@ -292,7 +296,6 @@ class UBGraphicsScene: public UBCoreGraphicsScene, public UBItem
void drawEraser(const QPointF& pEndPoint);
void drawPointer(const QPointF& pEndPoint);
- void CreateMagnifierQWidgets();
void DisposeMagnifierQWidgets();
@@ -355,10 +358,8 @@ class UBGraphicsScene: public UBCoreGraphicsScene, public UBItem
//int mMesure1Ms, mMesure2Ms;
- bool mHasCache;
-
- UBMagnifer *magniferControlViewWidget;
- UBMagnifer *magniferDisplayViewWidget;
+ UBMagnifier *magniferControlViewWidget;
+ UBMagnifier *magniferDisplayViewWidget;
};
#endif /* UBGRAPHICSSCENE_H_ */
diff --git a/src/gui/UBMagnifer.cpp b/src/gui/UBMagnifer.cpp
index 0888522e..e36add3f 100644
--- a/src/gui/UBMagnifer.cpp
+++ b/src/gui/UBMagnifer.cpp
@@ -1,51 +1,124 @@
+
+#include
#include "UBMagnifer.h"
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-UBMagnifer::UBMagnifer(QWidget *parent)
- : QWidget(parent)
+
+#include "core/UBApplication.h"
+#include "board/UBBoardController.h"
+#include "domain/UBGraphicsScene.h"
+
+// #include
+// #include
+// #include
+// #include
+// #include
+// #include
+// #include
+// #include
+
+
+UBMagnifier::UBMagnifier(QWidget *parent, bool isInteractive)
+ : QWidget(parent, parent ? Qt::Widget : Qt::Tool | (Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | Qt::X11BypassWindowManagerHint))
, gView(0)
, mView(0)
- , sizePercentFromScene(20)
, inTimer(false)
, borderPen(Qt::darkGray)
+ , mShouldMoveWidget(false)
+ , mShouldResizeWidget(false)
+
{
- borderPen.setWidth(2);
+ isCusrsorAlreadyStored = false;
+ setMouseTracking(true);
+
+ //--------------------------------------------------//
+
+ QPixmap pix(":/images/cursors/resize.png");
+ QTransform tr;
+ tr.rotate(45);
+ mResizeCursor = QCursor(pix.transformed(tr, Qt::SmoothTransformation), pix.width() / 2, pix.height() / 2);
+
+ //--------------------------------------------------//
+
+ params.sizePercentFromScene = 20;
+ m_isInteractive = isInteractive;
+ sClosePixmap = new QPixmap(":/images/close.svg");
+ sIncreasePixmap = new QPixmap(":/images/increase.svg");
+ sDecreasePixmap = new QPixmap(":/images/decrease.svg");
+ mResizeItem = new QPixmap(":/images/resize.svg");
+
+ if (parent)
+ {
+ setAttribute(Qt::WA_NoMousePropagation);
+ }
+ else
+ {
+ // standalone window
+ // !!!! Should be included into Windows after QT recompilation
+#ifndef Q_WS_WIN
+ setAttribute(Qt::WA_TranslucentBackground);
+ setAttribute(Qt::WA_MacAlwaysShowToolWindow);
+#endif
+#ifdef Q_WS_MAC
+ setAttribute(Qt::WA_MacAlwaysShowToolWindow);
+ setAttribute(Qt::WA_MacNonActivatingToolWindow);
+ setAttribute(Qt::WA_MacNoShadow);
+#endif
+ }
+
}
-UBMagnifer::~UBMagnifer()
+UBMagnifier::~UBMagnifier()
{
if (timerUpdate != 0)
{
killTimer(timerUpdate);
timerUpdate = 0;
}
+
+ if(sClosePixmap)
+ {
+ delete sClosePixmap;
+ sClosePixmap = NULL;
+ }
+
+ if(sIncreasePixmap)
+ {
+ delete sIncreasePixmap;
+ sIncreasePixmap = NULL;
+ }
+
+ if(sDecreasePixmap)
+ {
+ delete sDecreasePixmap;
+ sDecreasePixmap = NULL;
+ }
+
}
-void UBMagnifer::setSize(int percentFromScene)
+void UBMagnifier::setSize(qreal percentFromScene)
{
- if(gView == NULL) return;
+ if(gView == NULL || mView == NULL) return;
// calculate object size
- sizePercentFromScene = percentFromScene;
- QSize sceneSize = gView->size();
- int size = sizePercentFromScene * sceneSize.width() / 100;
+ params.sizePercentFromScene = percentFromScene;
+ QSize sceneSize = mView->size();
+ qreal size = params.sizePercentFromScene * sceneSize.width() / 100;
- setGeometry(0, 0, size, size);
+ QRect currGeom = geometry();
+ if(currGeom.width() == currGeom.height())
+ {
+ QPoint newPos = mView->mapFromGlobal(updPointMove);
+ setGeometry(newPos.x() - size / 2, newPos.y() - size / 2, size, size);
+ }
+ else
+ setGeometry(0, 0, size, size);
// prepare transparent bit mask
QImage mask_img(width(), height(), QImage::Format_Mono);
mask_img.fill(0xff);
QPainter mask_ptr(&mask_img);
mask_ptr.setBrush( QBrush( QColor(0, 0, 0) ) );
- mask_ptr.drawEllipse(QPoint(size/2, size/2), size/2, size/2);
+ mask_ptr.drawEllipse(QPointF(size/2, size/2), size / 2 - sClosePixmap->width(), size / 2 - sClosePixmap->width());
bmpMask = QBitmap::fromImage(mask_img);
// prepare general image
@@ -54,49 +127,207 @@ void UBMagnifer::setSize(int percentFromScene)
pMap.setMask(bmpMask);
}
-void UBMagnifer::setZoom(int z)
+void UBMagnifier::setZoom(qreal zoom)
+{
+ params.zoom = zoom;
+}
+
+void UBMagnifier::paintEvent(QPaintEvent * event)
+{
+ QPainter painter(this);
+
+// painter.drawRect(0,0,size().width()-1, size().height()-1);
+
+ painter.setRenderHint(QPainter::Antialiasing);
+ painter.setPen(Qt::NoPen);
+
+ if (m_isInteractive)
+ {
+ painter.setBrush(QColor(127, 127, 127, 127));
+ painter.drawRoundedRect(QRectF(size().width() / 2, size().height() / 2, ( size().width() - sClosePixmap->width() ) / 2, ( size().height() - sClosePixmap->width() ) / 2), 15, 15);
+
+ painter.setBrush(QColor(190, 190, 190, 255));
+ painter.drawEllipse(QPoint( size().width() / 2, size().height() / 2), ( size().width() - sClosePixmap->width() ) / 2, ( size().height() - sClosePixmap->height() ) / 2);
+
+ painter.drawPixmap(size().width() - sClosePixmap->width(), size().height() / 2 + sClosePixmap->height() * 1, *sClosePixmap);
+ painter.drawPixmap(size().width() - sIncreasePixmap->width(), size().height() / 2 + sIncreasePixmap->height() * 2.5, *sIncreasePixmap);
+ painter.drawPixmap(size().width() - sDecreasePixmap->width(), size().height() / 2 + sDecreasePixmap->height() * 3.6, *sDecreasePixmap);
+
+ painter.drawPixmap(size().width() - mResizeItem->width() - 20, size().height() - mResizeItem->height() - 20, *mResizeItem);
+ }
+ else
+ {
+ painter.setBrush(QColor(127, 127, 127, 127));
+ painter.drawEllipse(QPoint( size().width() / 2, size().height() / 2), ( size().width() - sClosePixmap->width() ) / 2, ( size().height() - sClosePixmap->height() ) / 2);
+ }
+
+ painter.drawPixmap(0, 0, pMap);
+}
+
+void UBMagnifier::mousePressEvent ( QMouseEvent * event )
{
- zoom = z;
+ if(m_isInteractive)
+ {
+
+ QWidget::mousePressEvent(event);
+
+ if (event->pos().x() >= size().width() - mResizeItem->width() - 20 &&
+ event->pos().x() < size().width() - 20 &&
+ event->pos().y() >= size().height() - mResizeItem->height() - 20 &&
+ event->pos().y() < size().height() - - 20)
+ {
+ mShouldResizeWidget = true;
+ }
+ else
+ {
+ mShouldMoveWidget = !event->isAccepted() && (event->buttons() & Qt::LeftButton);
+ }
+
+ mMousePressPos = event->pos();
+ mMousePressDelta = (qreal)updPointGrab.x() + (qreal)size().width() / 2 - (qreal)event->globalPos().x();
+
+ event->accept();
- zWidth = size().width() / zoom;
- zWidthHalf = zWidth / 2;
- zHeight = size().height() / zoom;
- zHeightHalf = zHeight / 2;
+ update();
+ }
+ else
+ event->ignore();
}
-void UBMagnifer::paintEvent(QPaintEvent *)
+void UBMagnifier::mouseMoveEvent ( QMouseEvent * event )
{
- QPainter p(this);
- p.drawPixmap(0, 0, pMap);
-
- // in future replace to image border
- QPen pen(Qt::darkGray);
- pen.setWidth(2);
- p.setPen(borderPen);
- p.drawEllipse(QPoint( size().width() / 2, size().height() / 2), size().width() / 2, size().height() / 2);
+ if(m_isInteractive)
+ {
+ if(mShouldMoveWidget && (event->buttons() & Qt::LeftButton))
+ {
+ QPoint offset = event->pos() - mMousePressPos;
+ move(pos() - mMousePressPos + event->pos());
+ event->accept();
+
+ QWidget::mouseMoveEvent(event);
+ emit magnifierMoved_Signal(QPoint(this->pos().x() + size().width() / 2, this->pos().y() + size().height() / 2 ));
+ return;
+ }
+
+ if(mShouldResizeWidget && (event->buttons() & Qt::LeftButton))
+ {
+
+ QPoint currGlobalPos = event->globalPos();
+ qreal cvW = mView->width();
+
+ qreal newXSize = ( currGlobalPos.x() + mMousePressDelta - updPointGrab.x() ) * 2;
+ qreal newPercentSize = newXSize * 100 / cvW;
+
+ emit magnifierResized_Signal(newPercentSize);
+
+ event->ignore();
+ return;
+ }
+
+ if (event->pos().x() >= size().width() - mResizeItem->width() - 20 &&
+ event->pos().x() < size().width() - 20 &&
+ event->pos().y() >= size().height() - mResizeItem->height() - 20 &&
+ event->pos().y() < size().height() - - 20 &&
+ isCusrsorAlreadyStored == false
+ )
+ {
+ mOldCursor = cursor();
+ isCusrsorAlreadyStored = true;
+ setCursor(mResizeCursor);
+ }
+
+ }
+ else
+ event->ignore();
+}
+
+
+void UBMagnifier::mouseReleaseEvent(QMouseEvent * event)
+{
+ if(m_isInteractive)
+ {
+ mShouldMoveWidget = false;
+ mShouldResizeWidget = false;
+
+ if (event->pos().x() >= size().width() - sClosePixmap->width() &&
+ event->pos().x() < size().width()&&
+ event->pos().y() >= size().height() / 2 + sClosePixmap->height() * 1 &&
+ event->pos().y() < size().height() / 2 + sClosePixmap->height() * 2)
+ {
+ event->accept();
+ emit magnifierClose_Signal();
+ }
+ else
+ if (event->pos().x() >= size().width() - sIncreasePixmap->width() &&
+ event->pos().x() < size().width()&&
+ event->pos().y() >= size().height() / 2 + sIncreasePixmap->height() * 2.5 &&
+ event->pos().y() < size().height() / 2 + sIncreasePixmap->height() * 3.5)
+ {
+ event->accept();
+ emit magnifierZoomIn_Signal();
+ }
+ else
+ if (event->pos().x() >= size().width() - sDecreasePixmap->width() &&
+ event->pos().x() < size().width()&&
+ event->pos().y() >= size().height() / 2 + sDecreasePixmap->height() * 3.6 &&
+ event->pos().y() < size().height() / 2 + sDecreasePixmap->height() * 4.6)
+ {
+ event->accept();
+ emit magnifierZoomOut_Signal();
+ }
+ else
+ QWidget::mouseReleaseEvent(event); // don't propgate to parent, the widget is deleted in UBApplication::boardController->removeTool
+ }
+ else
+ event->ignore();
+
}
-void UBMagnifer::timerEvent(QTimerEvent *e)
+void UBMagnifier::timerEvent(QTimerEvent *e)
{
if(inTimer) return;
if (e->timerId() == timerUpdate)
{
inTimer = true;
- if(!(updPoint.isNull())) grabPoint(updPoint);
- if(!(updPointF.isNull()))grabPoint(updPointF);
+ if(!(updPointGrab.isNull()))
+ grabPoint(updPointGrab);
+
+ if(isCusrsorAlreadyStored)
+ {
+ QPoint globalCursorPos = QCursor::pos();
+ QPoint cursorPos = mapFromGlobal(globalCursorPos);
+ if (cursorPos.x() < size().width() - mResizeItem->width() - 20 ||
+ cursorPos.x() > size().width() - 20 ||
+ cursorPos.y() < size().height() - mResizeItem->height() - 20 ||
+ cursorPos.y() > size().height() - - 20
+ )
+ {
+ isCusrsorAlreadyStored = false;
+ setCursor(mOldCursor);
+ }
+
+ }
+
inTimer = false;
}
}
-void UBMagnifer::grabPoint(const QPoint &point)
+void UBMagnifier::grabPoint()
{
- QPointF itemPos = gView->mapFromGlobal(point);
+ QPointF itemPos = gView->mapFromGlobal(updPointGrab);
+
+ qreal zWidth = size().width() / params.zoom;
+ qreal zWidthHalf = zWidth / 2;
+ qreal zHeight = size().height() / params.zoom;
+ qreal zHeightHalf = zHeight / 2;
int x = itemPos.x() - zWidthHalf;
int y = itemPos.y() - zHeightHalf;
QPixmap newPixMap(QSize(zWidth,zHeight));
((QWidget*)gView)->render(&newPixMap, QPoint(0, 0), QRegion(x, y, zWidth, zHeight));
+ UBApplication::boardController->activeScene()->update();
+
pMap.fill(Qt::transparent);
pMap = newPixMap.scaled(QSize(width(), height()));
pMap.setMask(bmpMask);
@@ -104,15 +335,23 @@ void UBMagnifer::grabPoint(const QPoint &point)
update();
}
-void UBMagnifer::grabPoint(const QPointF &point)
+void UBMagnifier::grabPoint(const QPoint &pGrab)
{
- QPoint itemPos = gView->mapFromScene(point);
+ updPointGrab = pGrab;
+ QPointF itemPos = gView->mapFromGlobal(pGrab);
+
+ qreal zWidth = size().width() / params.zoom;
+ qreal zWidthHalf = zWidth / 2;
+ qreal zHeight = size().height() / params.zoom;
+ qreal zHeightHalf = zHeight / 2;
int x = itemPos.x() - zWidthHalf;
int y = itemPos.y() - zHeightHalf;
QPixmap newPixMap(QSize(zWidth,zHeight));
((QWidget*)gView)->render(&newPixMap, QPoint(0, 0), QRegion(x, y, zWidth, zHeight));
+ UBApplication::boardController->activeScene()->update();
+
pMap.fill(Qt::transparent);
pMap = newPixMap.scaled(QSize(width(), height()));
pMap.setMask(bmpMask);
@@ -120,32 +359,24 @@ void UBMagnifer::grabPoint(const QPointF &point)
update();
}
-
// from global
-void UBMagnifer::grabNMove(const QPoint &point, bool needGrab = true)
+void UBMagnifier::grabNMove(const QPoint &pGrab, const QPoint &pMove, bool needGrab, bool needMove)
{
- updPoint = point;
+ updPointGrab = pGrab;
+ updPointMove = pMove;
if(needGrab)
- grabPoint(point);
- QPoint itemPos = mView->mapFromGlobal(point);
- move(itemPos.x() - width()/2, itemPos.y() - height()/2);
-// move(itemPos.x(), itemPos.y());
-}
+ grabPoint(pGrab);
-// from scene
-void UBMagnifer::grabNMove(const QPointF &point, bool needGrab = true)
-{
- updPointF = point;
-
- if(needGrab)
- grabPoint(point);
- QPoint itemPos = mView->mapFromScene(point);
- move(itemPos.x() - width()/2, itemPos.y() - height()/2);
-// move(itemPos.x(), itemPos.y());
+ if(needMove)
+ {
+ QPoint movePos = mView->mapFromGlobal(pMove);
+ move(movePos.x() - width()/2, movePos.y() - height()/2);
+ // move(itemPos.x(), itemPos.y());
+ }
}
-void UBMagnifer::setGrabView(QGraphicsView *view)
+void UBMagnifier::setGrabView(QWidget *view)
{
if (timerUpdate != 0)
killTimer(timerUpdate);
diff --git a/src/gui/UBMagnifer.h b/src/gui/UBMagnifer.h
index 435775a3..9032a3cd 100644
--- a/src/gui/UBMagnifer.h
+++ b/src/gui/UBMagnifer.h
@@ -1,60 +1,82 @@
-#ifndef UBMAGNIFER_H
-#define UBMAGNIFER_H
+#ifndef UBMAGNIFIER_H
+#define UBMAGNIFIER_H
-#include
-#include
-#include
+#include
-class QPixmap;
-class QBitmap;
-class QPen;
-class QGraphicsView;
+class UBMagnifierParams
+{
+public :
+ int x;
+ int y;
+ qreal zoom;
+ qreal sizePercentFromScene;
+};
-class UBMagnifer : public QWidget
+class UBMagnifier : public QWidget
{
Q_OBJECT
public:
- UBMagnifer(QWidget *parent = 0);
- ~UBMagnifer();
+ UBMagnifier(QWidget *parent = 0, bool isInteractive = false);
+ ~UBMagnifier();
- void setSize(int percentFromScene);
- void setZoom(int z);
+ void setSize(qreal percentFromScene);
+ void setZoom(qreal zoom);
- void setGrabView(QGraphicsView *view);
- void setMoveView(QGraphicsView *view) {mView = view;}
+ void setGrabView(QWidget *view);
+ void setMoveView(QWidget *view) {mView = view;}
+ void grabPoint();
void grabPoint(const QPoint &point);
- void grabPoint(const QPointF &point);
- void grabNMove(const QPoint &point, bool needGrab);
- void grabNMove(const QPointF &point, bool needGrab);
+ void grabNMove(const QPoint &pGrab, const QPoint &pMove, bool needGrab = true, bool needMove = true);
+
+ UBMagnifierParams params;
+
+signals:
+ void magnifierMoved_Signal(QPoint newPos);
+ void magnifierClose_Signal();
+ void magnifierZoomIn_Signal();
+ void magnifierZoomOut_Signal();
+ void magnifierResized_Signal(qreal newPercentSize);
protected:
void paintEvent(QPaintEvent *);
void timerEvent(QTimerEvent *);
- int sizePercentFromScene;
+ virtual void mousePressEvent ( QMouseEvent * event );
+ virtual void mouseMoveEvent ( QMouseEvent * event );
+ virtual void mouseReleaseEvent ( QMouseEvent * event );
+
+ QPoint mMousePressPos;
+ qreal mMousePressDelta;
+ bool mShouldMoveWidget;
+ bool mShouldResizeWidget;
+
+
+ QPixmap *sClosePixmap;
+ QPixmap *sIncreasePixmap;
+ QPixmap *sDecreasePixmap;
+ QPixmap *mResizeItem;
+ bool isCusrsorAlreadyStored;
+ QCursor mOldCursor;
+ QCursor mResizeCursor;
private:
- int zoom;
- int zWidth;
- int zHeight;
- int zWidthHalf;
- int zHeightHalf;
bool inTimer;
+ bool m_isInteractive;
int timerUpdate;
- QPoint updPoint;
- QPointF updPointF;
+ QPoint updPointGrab;
+ QPoint updPointMove;
QPixmap pMap;
QBitmap bmpMask;
QPen borderPen;
- QGraphicsView *gView;
- QGraphicsView *mView;
+ QWidget *gView;
+ QWidget *mView;
};
-#endif // UBMAGNIFER_H
+#endif // UBMAGNIFIER_H
diff --git a/src/gui/UBStylusPalette.cpp b/src/gui/UBStylusPalette.cpp
index 4ae06f4c..93073ccd 100644
--- a/src/gui/UBStylusPalette.cpp
+++ b/src/gui/UBStylusPalette.cpp
@@ -37,7 +37,6 @@ UBStylusPalette::UBStylusPalette(QWidget *parent, Qt::Orientation orient)
actions << UBApplication::mainWindow->actionPen;
actions << UBApplication::mainWindow->actionEraser;
- actions << UBApplication::mainWindow->actionMagnifier;
actions << UBApplication::mainWindow->actionMarker;
actions << UBApplication::mainWindow->actionSelector;
diff --git a/src/tools/UBToolsManager.cpp b/src/tools/UBToolsManager.cpp
index 4bbd4f3a..5fb516e8 100644
--- a/src/tools/UBToolsManager.cpp
+++ b/src/tools/UBToolsManager.cpp
@@ -58,12 +58,13 @@ UBToolsManager::UBToolsManager(QObject *parent)
mToolsIcon.insert(triangle.id,":/images/toolPalette/triangleTool.png");
mDescriptors << triangle;
-// cache.id = "uniboardTool://uniboard.mnemis.com/cache";
-// cache.icon = QPixmap(":/images/toolPalette/cacheTool.png");
-// cache.label = tr("Cache");
-// cache.version = "1.0";
-// mToolsIcon.insert(cache.id, ":/images/toolPalette/cacheTool.png");
-// mDescriptors << cache;
+ magnifier.id = "uniboardTool://uniboard.mnemis.com/magnifier";
+ magnifier.icon = QPixmap(":/images/toolPalette/magnifierTool.png");
+ magnifier.label = tr("Magnifier");
+ magnifier.version = "1.0";
+ mToolsIcon.insert(magnifier.id,":/images/toolPalette/magnifierTool.png");
+ mDescriptors << magnifier;
+
}
UBToolsManager::~UBToolsManager()
diff --git a/src/tools/UBToolsManager.h b/src/tools/UBToolsManager.h
index 8517822b..df87db8a 100644
--- a/src/tools/UBToolsManager.h
+++ b/src/tools/UBToolsManager.h
@@ -78,7 +78,7 @@ class UBToolsManager : public QObject
UBToolDescriptor compass;
UBToolDescriptor mask;
UBToolDescriptor triangle;
- UBToolDescriptor cache;
+ UBToolDescriptor magnifier;
QString iconFromToolId(QString id) { return mToolsIcon.value(id);}