diff --git a/src/frameworks/UBFileSystemUtils.cpp b/src/frameworks/UBFileSystemUtils.cpp index fa0b0a57..a6bc0924 100644 --- a/src/frameworks/UBFileSystemUtils.cpp +++ b/src/frameworks/UBFileSystemUtils.cpp @@ -397,7 +397,6 @@ QString UBFileSystemUtils::lastPathComponent(const QString& path) QString UBFileSystemUtils::mimeTypeFromFileName(const QString& fileName) { - Q_ASSERT(fileName.length()); QString ext = extension(fileName); if (ext == "xls" || ext == "xlsx") return "application/msexcel"; diff --git a/src/tools/UBGraphicsCompass.cpp b/src/tools/UBGraphicsCompass.cpp index 183d9ea3..c005221f 100644 --- a/src/tools/UBGraphicsCompass.cpp +++ b/src/tools/UBGraphicsCompass.cpp @@ -51,6 +51,13 @@ UBGraphicsCompass::UBGraphicsCompass() , mDrewCenterCross(false) { setRect(sDefaultRect); + setBrush(QBrush(Qt::red)); + + //TODO claudio: remove code duplication + QDesktopWidget* desktop = UBApplication::desktop(); + int dpiCommon = (desktop->physicalDpiX() + desktop->physicalDpiY()) / 2; + mPixelsPerMillimeter = qRound(dpiCommon / 25.4f); + setFlag(QGraphicsItem::ItemIsMovable, true); setFlag(QGraphicsItem::ItemIsSelectable, true); setFlag(QGraphicsItem::ItemSendsGeometryChanges, true); @@ -68,7 +75,7 @@ UBGraphicsCompass::UBGraphicsCompass() updateResizeCursor(); updateDrawCursor(); - unsetCursor(); + unsetCursor(); setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::CppTool)); //Necessary to set if we want z value to be assigned correctly setFlag(QGraphicsItem::ItemIsSelectable, false); @@ -179,9 +186,9 @@ QVariant UBGraphicsCompass::itemChange(GraphicsItemChange change, const QVariant void UBGraphicsCompass::mousePressEvent(QGraphicsSceneMouseEvent *event) { - if (UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Selector && + if (UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Selector && UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Play) - return; + return; if (resizeButtonRect().contains(event->pos())) { @@ -216,9 +223,9 @@ void UBGraphicsCompass::mousePressEvent(QGraphicsSceneMouseEvent *event) void UBGraphicsCompass::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { - if (UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Selector && + if (UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Selector && UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Play) - return; + return; if (!mResizing && !mRotating && !mDrawing) { @@ -261,9 +268,9 @@ void UBGraphicsCompass::mouseMoveEvent(QGraphicsSceneMouseEvent *event) void UBGraphicsCompass::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { - if (UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Selector && + if (UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Selector && UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Play) - return; + return; if (mResizing) { @@ -302,9 +309,9 @@ void UBGraphicsCompass::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) void UBGraphicsCompass::hoverEnterEvent(QGraphicsSceneHoverEvent *event) { - if (UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Selector && + if (UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Selector && UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Play) - return; + return; mOuterCursor = cursor(); mShowButtons = shape().contains(event->pos()); @@ -332,9 +339,9 @@ void UBGraphicsCompass::hoverEnterEvent(QGraphicsSceneHoverEvent *event) void UBGraphicsCompass::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) { - if (UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Selector && + if (UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Selector && UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Play) - return; + return; mShowButtons = false; mCloseSvgItem->setVisible(mShowButtons); @@ -346,9 +353,9 @@ void UBGraphicsCompass::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) void UBGraphicsCompass::hoverMoveEvent(QGraphicsSceneHoverEvent *event) { - if (UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Selector && + if (UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Selector && UBDrawingController::drawingController ()->stylusTool() != UBStylusTool::Play) - return; + return; mShowButtons = shape().contains(event->pos()); mCloseSvgItem->setVisible(mShowButtons); @@ -399,7 +406,7 @@ void UBGraphicsCompass::paintAngleDisplay(QPainter *painter) void UBGraphicsCompass::paintRadiusDisplay(QPainter *painter) { - qreal radiusInCentimeters = rect().width() / (sPixelsPerMillimeter * 10); + qreal radiusInCentimeters = rect().width() / (mPixelsPerMillimeter * 10); QString format = rect().width() >= sDisplayRadiusUnitMinLength ? "%1 cm" : "%1"; QString radiusText = QString(format).arg(radiusInCentimeters, 0, 'f', 1); @@ -557,10 +564,10 @@ void UBGraphicsCompass::paintCenterCross() QPointF needleCrossCenter = mapToScene(needlePosition()); scene()->moveTo(QPointF(needleCrossCenter.x() - 5, needleCrossCenter.y())); scene()->drawLineTo(QPointF(needleCrossCenter.x() + 5, needleCrossCenter.y()), 1, - UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Line); + UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Line); scene()->moveTo(QPointF(needleCrossCenter.x(), needleCrossCenter.y() - 5)); scene()->drawLineTo(QPointF(needleCrossCenter.x(), needleCrossCenter.y() + 5), 1, - UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Line); + UBDrawingController::drawingController()->stylusTool() == UBStylusTool::Line); } QPointF UBGraphicsCompass::needlePosition() const diff --git a/src/tools/UBGraphicsCompass.h b/src/tools/UBGraphicsCompass.h index 6ed90429..0f75f665 100644 --- a/src/tools/UBGraphicsCompass.h +++ b/src/tools/UBGraphicsCompass.h @@ -113,6 +113,7 @@ class UBGraphicsCompass: public QObject, public QGraphicsRectItem, public UBItem QGraphicsSvgItem* mResizeSvgItem; qreal mAntiScaleRatio; bool mDrewCenterCross; + int mPixelsPerMillimeter; // Constants static const QRect sDefaultRect; @@ -130,7 +131,6 @@ class UBGraphicsCompass: public QObject, public QGraphicsRectItem, public UBItem static const QColor sDarkBackgroundEdgeFillColor; static const QColor sDarkBackgroundMiddleFillColor; static const QColor sDarkBackgroundDrawColor; - static const int sPixelsPerMillimeter = 5; static const int sDisplayRadiusOnPencilArmMinLength = 300; static const int sDisplayRadiusUnitMinLength = 250; }; diff --git a/src/tools/UBGraphicsRuler.cpp b/src/tools/UBGraphicsRuler.cpp index 2542bdec..23b4df17 100644 --- a/src/tools/UBGraphicsRuler.cpp +++ b/src/tools/UBGraphicsRuler.cpp @@ -29,12 +29,12 @@ const QRect UBGraphicsRuler::sDefaultRect = QRect(0, 0, 800, 96); UBGraphicsRuler::UBGraphicsRuler() : QGraphicsRectItem() - , mResizing(false) + , mResizing(false) , mRotating(false) { setRect(sDefaultRect); - mResizeSvgItem = new QGraphicsSvgItem(":/images/resizeRuler.svg", this); + mResizeSvgItem = new QGraphicsSvgItem(":/images/resizeRuler.svg", this); mResizeSvgItem->setVisible(false); mResizeSvgItem->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Control)); @@ -42,7 +42,7 @@ UBGraphicsRuler::UBGraphicsRuler() mRotateSvgItem->setVisible(false); mRotateSvgItem->setData(UBGraphicsItemData::ItemLayerType, QVariant(UBItemLayerType::Control)); - create(*this); + create(*this); setData(UBGraphicsItemData::itemLayerType, QVariant(itemLayerType::CppTool)); //Necessary to set if we want z value to be assigned correctly @@ -98,9 +98,9 @@ void UBGraphicsRuler::paint(QPainter *painter, const QStyleOptionGraphicsItem *s Q_UNUSED(styleOption); Q_UNUSED(widget); - UBAbstractDrawRuler::paint(); + UBAbstractDrawRuler::paint(); - QTransform antiScaleTransform2; + QTransform antiScaleTransform2; qreal ratio = mAntiScaleRatio > 1.0 ? mAntiScaleRatio : 1.0; antiScaleTransform2.scale(ratio, 1.0); @@ -164,6 +164,9 @@ void UBGraphicsRuler::paintGraduations(QPainter *painter) const int millimetersPerCentimeter = 10; const int millimetersPerHalfCentimeter = 5; + + qDebug() << sPixelsPerMillimeter; + painter->save(); painter->setFont(font()); QFontMetricsF fontMetrics(painter->font()); @@ -275,28 +278,28 @@ QRectF UBGraphicsRuler::rotateButtonRect() const void UBGraphicsRuler::hoverMoveEvent(QGraphicsSceneHoverEvent *event) { - UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController ()->stylusTool (); - - if (currentTool == UBStylusTool::Selector || currentTool == UBStylusTool::Play) - { - mCloseSvgItem->setVisible(mShowButtons); - mResizeSvgItem->setVisible(mShowButtons); - mRotateSvgItem->setVisible(mShowButtons); - if (resizeButtonRect().contains(event->pos())) - setCursor(resizeCursor()); - else if (closeButtonRect().contains(event->pos())) - setCursor(closeCursor()); - else if (rotateButtonRect().contains(event->pos())) - setCursor(rotateCursor()); - else - setCursor(moveCursor()); - - event->accept(); - } - else if (UBDrawingController::drawingController()->isDrawingTool()) - { - event->accept(); - } + UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController ()->stylusTool (); + + if (currentTool == UBStylusTool::Selector || currentTool == UBStylusTool::Play) + { + mCloseSvgItem->setVisible(mShowButtons); + mResizeSvgItem->setVisible(mShowButtons); + mRotateSvgItem->setVisible(mShowButtons); + if (resizeButtonRect().contains(event->pos())) + setCursor(resizeCursor()); + else if (closeButtonRect().contains(event->pos())) + setCursor(closeCursor()); + else if (rotateButtonRect().contains(event->pos())) + setCursor(rotateCursor()); + else + setCursor(moveCursor()); + + event->accept(); + } + else if (UBDrawingController::drawingController()->isDrawingTool()) + { + event->accept(); + } } void UBGraphicsRuler::mousePressEvent(QGraphicsSceneMouseEvent *event) @@ -315,7 +318,7 @@ void UBGraphicsRuler::mousePressEvent(QGraphicsSceneMouseEvent *event) { mResizeSvgItem->setVisible(false); mRotateSvgItem->setVisible(false); - QGraphicsItem::mousePressEvent(event); + QGraphicsItem::mousePressEvent(event); } mResizeSvgItem->setVisible(mShowButtons && mResizing); mRotateSvgItem->setVisible(mShowButtons && mRotating); @@ -326,20 +329,20 @@ void UBGraphicsRuler::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { if (!mResizing && !mRotating) { - QGraphicsItem::mouseMoveEvent(event); + QGraphicsItem::mouseMoveEvent(event); } else { if (mResizing) { - QPointF delta = event->pos() - event->lastPos(); - if (rect().width() + delta.x() < sMinLength) - delta.setX(sMinLength - rect().width()); + QPointF delta = event->pos() - event->lastPos(); + if (rect().width() + delta.x() < sMinLength) + delta.setX(sMinLength - rect().width()); if (rect().width() + delta.x() > sMaxLength) delta.setX(sMaxLength - rect().width()); - setRect(QRectF(rect().topLeft(), QSizeF(rect().width() + delta.x(), rect().height()))); + setRect(QRectF(rect().topLeft(), QSizeF(rect().width() + delta.x(), rect().height()))); } else { @@ -368,13 +371,13 @@ void UBGraphicsRuler::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) } else if (closeButtonRect().contains(event->pos())) { - hide(); - emit hidden(); + hide(); + emit hidden(); event->accept(); } else { - QGraphicsItem::mouseReleaseEvent(event); + QGraphicsItem::mouseReleaseEvent(event); } if (scene()) @@ -383,41 +386,41 @@ void UBGraphicsRuler::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) void UBGraphicsRuler::hoverEnterEvent(QGraphicsSceneHoverEvent *event) { - UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController ()->stylusTool (); + UBStylusTool::Enum currentTool = (UBStylusTool::Enum)UBDrawingController::drawingController ()->stylusTool (); - if (currentTool == UBStylusTool::Selector || + if (currentTool == UBStylusTool::Selector || currentTool == UBStylusTool::Play) - { - mCloseSvgItem->setParentItem(this); - mResizeSvgItem->setParentItem(this); - mRotateSvgItem->setParentItem(this); - - mShowButtons = true; - mCloseSvgItem->setVisible(mShowButtons); - mResizeSvgItem->setVisible(mShowButtons); - mRotateSvgItem->setVisible(mShowButtons); - if (event->pos().x() >= resizeButtonRect().left()) - { - setCursor(resizeCursor()); - } - else - { - if (closeButtonRect().contains(event->pos())) - setCursor(closeCursor()); - else if (rotateButtonRect().contains(event->pos())) - setCursor(rotateCursor()); - else - setCursor(moveCursor()); - } - event->accept(); - update(); - } - else if (UBDrawingController::drawingController()->isDrawingTool()) - { - setCursor(drawRulerLineCursor()); - UBDrawingController::drawingController()->mActiveRuler = this; - event->accept(); - } + { + mCloseSvgItem->setParentItem(this); + mResizeSvgItem->setParentItem(this); + mRotateSvgItem->setParentItem(this); + + mShowButtons = true; + mCloseSvgItem->setVisible(mShowButtons); + mResizeSvgItem->setVisible(mShowButtons); + mRotateSvgItem->setVisible(mShowButtons); + if (event->pos().x() >= resizeButtonRect().left()) + { + setCursor(resizeCursor()); + } + else + { + if (closeButtonRect().contains(event->pos())) + setCursor(closeCursor()); + else if (rotateButtonRect().contains(event->pos())) + setCursor(rotateCursor()); + else + setCursor(moveCursor()); + } + event->accept(); + update(); + } + else if (UBDrawingController::drawingController()->isDrawingTool()) + { + setCursor(drawRulerLineCursor()); + UBDrawingController::drawingController()->mActiveRuler = this; + event->accept(); + } } void UBGraphicsRuler::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) @@ -427,7 +430,7 @@ void UBGraphicsRuler::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) mCloseSvgItem->setVisible(mShowButtons); mResizeSvgItem->setVisible(mShowButtons); mRotateSvgItem->setVisible(mShowButtons); - UBDrawingController::drawingController()->mActiveRuler = NULL; + UBDrawingController::drawingController()->mActiveRuler = NULL; event->accept(); update(); } @@ -441,28 +444,28 @@ UBGraphicsScene* UBGraphicsRuler::scene() const void UBGraphicsRuler::StartLine(const QPointF& scenePos, qreal width) { - QPointF itemPos = mapFromScene(scenePos); - - qreal y; - - if (itemPos.y() > rect().y() + rect().height() / 2) - { - drawLineDirection = 0; - y = rect().y() + rect().height() + width / 2; - } - else - { - drawLineDirection = 1; - y = rect().y() - width /2; - } - - if (itemPos.x() < rect().x() + sLeftEdgeMargin) - itemPos.setX(rect().x() + sLeftEdgeMargin); - if (itemPos.x() > rect().x() + rect().width() - sLeftEdgeMargin) - itemPos.setX(rect().x() + rect().width() - sLeftEdgeMargin); - - itemPos.setY(y); - itemPos = mapToScene(itemPos); + QPointF itemPos = mapFromScene(scenePos); + + qreal y; + + if (itemPos.y() > rect().y() + rect().height() / 2) + { + drawLineDirection = 0; + y = rect().y() + rect().height() + width / 2; + } + else + { + drawLineDirection = 1; + y = rect().y() - width /2; + } + + if (itemPos.x() < rect().x() + sLeftEdgeMargin) + itemPos.setX(rect().x() + sLeftEdgeMargin); + if (itemPos.x() > rect().x() + rect().width() - sLeftEdgeMargin) + itemPos.setX(rect().x() + rect().width() - sLeftEdgeMargin); + + itemPos.setY(y); + itemPos = mapToScene(itemPos); scene()->moveTo(itemPos); scene()->drawLineTo(itemPos, width, true); @@ -470,26 +473,26 @@ void UBGraphicsRuler::StartLine(const QPointF& scenePos, qreal width) void UBGraphicsRuler::DrawLine(const QPointF& scenePos, qreal width) { - QPointF itemPos = mapFromScene(scenePos); - - qreal y; - if (drawLineDirection == 0) - { - y = rect().y() + rect().height() + width / 2; - } - else - { - y = rect().y() - width /2; - } - if (itemPos.x() < rect().x() + sLeftEdgeMargin) - itemPos.setX(rect().x() + sLeftEdgeMargin); - if (itemPos.x() > rect().x() + rect().width() - sLeftEdgeMargin) - itemPos.setX(rect().x() + rect().width() - sLeftEdgeMargin); - - itemPos.setY(y); - itemPos = mapToScene(itemPos); - - // We have to use "pointed" line for marker tool + QPointF itemPos = mapFromScene(scenePos); + + qreal y; + if (drawLineDirection == 0) + { + y = rect().y() + rect().height() + width / 2; + } + else + { + y = rect().y() - width /2; + } + if (itemPos.x() < rect().x() + sLeftEdgeMargin) + itemPos.setX(rect().x() + sLeftEdgeMargin); + if (itemPos.x() > rect().x() + rect().width() - sLeftEdgeMargin) + itemPos.setX(rect().x() + rect().width() - sLeftEdgeMargin); + + itemPos.setY(y); + itemPos = mapToScene(itemPos); + + // We have to use "pointed" line for marker tool scene()->drawLineTo(itemPos, width, UBDrawingController::drawingController()->stylusTool() != UBStylusTool::Marker); }