diff --git a/ground/src/libs/opmapcontrol/src/mapwidget/images/compas.svg b/ground/src/libs/opmapcontrol/src/mapwidget/images/compas.svg
new file mode 100644
index 000000000..086b865a1
--- /dev/null
+++ b/ground/src/libs/opmapcontrol/src/mapwidget/images/compas.svg
@@ -0,0 +1,248 @@
+
+
+
diff --git a/ground/src/libs/opmapcontrol/src/mapwidget/mapresources.qrc b/ground/src/libs/opmapcontrol/src/mapwidget/mapresources.qrc
index be2082946..938e0a82e 100644
--- a/ground/src/libs/opmapcontrol/src/mapwidget/mapresources.qrc
+++ b/ground/src/libs/opmapcontrol/src/mapwidget/mapresources.qrc
@@ -2,5 +2,6 @@
images/bigMarkerGreen.png
images/marker.png
+ images/compas.svg
diff --git a/ground/src/libs/opmapcontrol/src/mapwidget/mapwidget.pro b/ground/src/libs/opmapcontrol/src/mapwidget/mapwidget.pro
index 3cba3adac..11c20d3d8 100644
--- a/ground/src/libs/opmapcontrol/src/mapwidget/mapwidget.pro
+++ b/ground/src/libs/opmapcontrol/src/mapwidget/mapwidget.pro
@@ -19,4 +19,5 @@ HEADERS += mapgraphicitem.h \
QT += opengl
QT += network
QT += sql
+QT += svg
RESOURCES += mapresources.qrc
diff --git a/ground/src/libs/opmapcontrol/src/mapwidget/opmapwidget.cpp b/ground/src/libs/opmapcontrol/src/mapwidget/opmapwidget.cpp
index a1db94f67..b9e07a825 100644
--- a/ground/src/libs/opmapcontrol/src/mapwidget/opmapwidget.cpp
+++ b/ground/src/libs/opmapcontrol/src/mapwidget/opmapwidget.cpp
@@ -33,7 +33,7 @@
namespace mapcontrol
{
- OPMapWidget::OPMapWidget(QWidget *parent, Configuration *config):QGraphicsView(parent),configuration(config),followmouse(true)
+ OPMapWidget::OPMapWidget(QWidget *parent, Configuration *config):QGraphicsView(parent),configuration(config),followmouse(true),compass(0)
{
setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
core=new internals::Core;
@@ -52,6 +52,7 @@ namespace mapcontrol
connect(map->core,SIGNAL(OnTileLoadStart()),this,SIGNAL(OnTileLoadStart()));
connect(map->core,SIGNAL(OnTilesStillToLoad(int)),this,SIGNAL(OnTilesStillToLoad(int)));
this->setMouseTracking(followmouse);
+ SetShowCompass(true);
}
void OPMapWidget::resizeEvent(QResizeEvent *event)
@@ -60,6 +61,9 @@ namespace mapcontrol
scene()->setSceneRect(
QRect(QPoint(0, 0), event->size()));
QGraphicsView::resizeEvent(event);
+ if(compass)
+ compass->setScale(0.1+0.05*(qreal)(event->size().width())/1000*(qreal)(event->size().height())/600);
+
}
QSize OPMapWidget::sizeHint() const
{
@@ -204,8 +208,33 @@ namespace mapcontrol
connect(this,SIGNAL(WPInserted(int,WayPointItem*)),item,SLOT(WPInserted(int,WayPointItem*)));
connect(this,SIGNAL(WPNumberChanged(int,int,WayPointItem*)),item,SLOT(WPRenumbered(int,int,WayPointItem*)));
connect(this,SIGNAL(WPDeleted(int)),item,SLOT(WPDeleted(int)));
-}
+ }
//////////////////////////////////////////////
-
+ void OPMapWidget::SetShowCompass(const bool &value)
+ {
+ if(value)
+ {
+ compass=new QGraphicsSvgItem(QString::fromUtf8(":/markers/images/compas.svg"));
+ compass->setScale(0.1+0.05*(qreal)(this->size().width())/1000*(qreal)(this->size().height())/600);
+ // compass->setTransformOriginPoint(compass->boundingRect().width(),compass->boundingRect().height());
+ compass->setFlag(QGraphicsItem::ItemIsMovable,true);
+ mscene.addItem(compass);
+ compass->setTransformOriginPoint(compass->boundingRect().width()/2,compass->boundingRect().height()/2);
+ compass->setPos(55-compass->boundingRect().width()/2,55-compass->boundingRect().height()/2);
+ compass->setZValue(3);
+ compass->setOpacity(0.7);
+
+ }
+ if(!value && compass)
+ {
+ delete compass;
+ }
+ }
+ void OPMapWidget::SetRotate(qreal const& value)
+ {
+ map->mapRotate(value);
+ if(compass)
+ compass->setRotation(value);
+ }
}
diff --git a/ground/src/libs/opmapcontrol/src/mapwidget/opmapwidget.h b/ground/src/libs/opmapcontrol/src/mapwidget/opmapwidget.h
index 8942d1788..8d7f0d045 100644
--- a/ground/src/libs/opmapcontrol/src/mapwidget/opmapwidget.h
+++ b/ground/src/libs/opmapcontrol/src/mapwidget/opmapwidget.h
@@ -36,6 +36,7 @@
#include
#include
#include "waypointitem.h"
+#include "QtSvg/QGraphicsSvgItem"
namespace mapcontrol
{
/**
@@ -191,7 +192,7 @@ namespace mapcontrol
void SetZoom(double const& value){map->SetZoom(value);}
qreal Rotate(){return map->rotation;}
- void SetRotate(qreal const& value){map->mapRotate(value);}
+ void SetRotate(qreal const& value);
void ReloadMap(){map->ReloadMap(); map->resize();}
@@ -301,6 +302,8 @@ namespace mapcontrol
*/
void WPRenumber(WayPointItem* item,int const& newnumber);
+ void SetShowCompass(bool const& value);
+
private:
internals::Core *core;
MapGraphicItem *map;
@@ -312,8 +315,8 @@ namespace mapcontrol
internals::PointLatLng currentmouseposition;
bool followmouse;
void ConnectWP(WayPointItem* item);
-
- WayPointItem* item;//apagar
+ QGraphicsSvgItem *compass;
+ // WayPointItem* item;//apagar
protected:
void resizeEvent(QResizeEvent *event);
void showEvent ( QShowEvent * event );
diff --git a/ground/src/libs/opmapcontrol/src/mapwidget/waypointitem.cpp b/ground/src/libs/opmapcontrol/src/mapwidget/waypointitem.cpp
index 2263bbe50..175176f2c 100644
--- a/ground/src/libs/opmapcontrol/src/mapwidget/waypointitem.cpp
+++ b/ground/src/libs/opmapcontrol/src/mapwidget/waypointitem.cpp
@@ -33,7 +33,6 @@ namespace mapcontrol
text=0;
numberI=0;
picture.load(QString::fromUtf8(":/markers/images/marker.png"));
- RefreshToolTip();
number=WayPointItem::snumber;
++WayPointItem::snumber;
this->setFlag(QGraphicsItem::ItemIsMovable,true);
@@ -42,6 +41,7 @@ namespace mapcontrol
// transf.translate(picture.width()/2,picture.height());
// this->setTransform(transf);
SetShowNumber(shownumber);
+ RefreshToolTip();
RefreshPos();
}
WayPointItem::WayPointItem(const internals::PointLatLng &coord,int const& altitude, const QString &description, MapGraphicItem *map):coord(coord),reached(false),description(description),shownumber(true),isDragging(false),altitude(altitude),map(map)
@@ -49,7 +49,6 @@ namespace mapcontrol
text=0;
numberI=0;
picture.load(QString::fromUtf8(":/markers/images/marker.png"));
- RefreshToolTip();
number=WayPointItem::snumber;
++WayPointItem::snumber;
this->setFlag(QGraphicsItem::ItemIsMovable,true);
@@ -58,6 +57,7 @@ namespace mapcontrol
//transf.translate(picture.width()/2,picture.height());
// this->setTransform(transf);
SetShowNumber(shownumber);
+ RefreshToolTip();
RefreshPos();
}