diff --git a/ground/openpilotgcs/src/plugins/opmap/opmapgadgetwidget.cpp b/ground/openpilotgcs/src/plugins/opmap/opmapgadgetwidget.cpp index cda08c258..aa00d144e 100644 --- a/ground/openpilotgcs/src/plugins/opmap/opmapgadgetwidget.cpp +++ b/ground/openpilotgcs/src/plugins/opmap/opmapgadgetwidget.cpp @@ -40,7 +40,7 @@ #include "homelocation.h" #include "positionactual.h" - +#include #include #include "utils/stylehelper.h" @@ -145,6 +145,10 @@ OPMapGadgetWidget::OPMapGadgetWidget(QWidget *parent) : QWidget(parent) m_magic_waypoint.time_seconds = 0; m_magic_waypoint.hold_time_seconds = 0; + // Connect to the path compiler to get updates from the waypoints + pathCompiler = new PathCompiler(this); + connect(pathCompiler,SIGNAL(visualizationChanged(QList)), + this, SLOT(doVisualizationChanged(QList))); // ************** // create the widget that holds the user controls and the map @@ -2416,3 +2420,21 @@ void OPMapGadgetWidget::SetUavPic(QString UAVPic) { m_map->SetUavPic(UAVPic); } + +/** + * Called from path compiler whenever the path to visualize has changed + */ +void OPMapGadgetWidget::doVisualizationChanged(QList waypoints) +{ + m_map->WPDeleteAll(); + foreach (PathCompiler::waypoint waypoint, waypoints) { + internals::PointLatLng position(waypoint.latitude, waypoint.longitude); + + WayPointItem * wayPointItem = m_map->WPCreate(position, 0, "Waypoint"); + Q_ASSERT(wayPointItem); + if(wayPointItem) { + wayPointItem->setFlag(QGraphicsItem::ItemIsMovable, false); + wayPointItem->picture.load(QString::fromUtf8(":/opmap/images/waypoint_marker1.png")); + } + } +} diff --git a/ground/openpilotgcs/src/plugins/opmap/opmapgadgetwidget.h b/ground/openpilotgcs/src/plugins/opmap/opmapgadgetwidget.h index b5728a79b..65f4e25b9 100644 --- a/ground/openpilotgcs/src/plugins/opmap/opmapgadgetwidget.h +++ b/ground/openpilotgcs/src/plugins/opmap/opmapgadgetwidget.h @@ -53,6 +53,7 @@ #include "uavobject.h" #include "objectpersistence.h" +#include // ****************************************************** namespace Ui @@ -182,6 +183,7 @@ private slots: void WPValuesChanged(WayPointItem* waypoint); void WPInserted(int const& number, WayPointItem* waypoint); void WPDeleted(int const& number); + void doVisualizationChanged(QList); /** * @brief mouse right click context menu signals @@ -267,7 +269,9 @@ private: mapcontrol::WayPointItem *m_mouse_waypoint; + PathCompiler *pathCompiler; QList m_waypoint_list; + QMutex m_waypoint_list_mutex; QMutex m_map_mutex;