diff --git a/ground/gcs/src/plugins/opmap/opmap_widget.ui b/ground/gcs/src/plugins/opmap/opmap_widget.ui
index 228c3cf5d..5943cecb4 100644
--- a/ground/gcs/src/plugins/opmap/opmap_widget.ui
+++ b/ground/gcs/src/plugins/opmap/opmap_widget.ui
@@ -6,8 +6,8 @@
0
0
- 514
- 412
+ 671
+ 488
@@ -29,7 +29,16 @@
0
-
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
0
-
@@ -242,7 +251,16 @@ border-radius: 2px;
0
-
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
0
-
@@ -531,7 +549,7 @@ border-radius: 2px;
- :/opmap/images/uav.png:/opmap/images/button_uav.png
+ :/opmap/images/button_uav.png:/opmap/images/button_uav.png
@@ -569,7 +587,7 @@ border-radius: 2px;
- :/opmap/images/uav_heading.png:/opmap/images/button_uav_heading.png
+ :/opmap/images/button_uav_heading.png:/opmap/images/button_uav_heading.png
@@ -775,7 +793,16 @@ border-radius: 3px;
0
-
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
0
-
@@ -876,7 +903,16 @@ border-radius: 3px;
5
-
+
+ 1
+
+
+ 1
+
+
+ 1
+
+
1
-
@@ -1020,6 +1056,152 @@ border-radius: 3px;
+ -
+
+
+ QFrame::Plain
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Set HomeLocation to be used by the
+autopilot or just pick the first GPS fix.
+
+
+ Home Set
+
+
+
+ :/opmap/images/button_home_not_set.png
+ :/opmap/images/button_home_set.png:/opmap/images/button_home_not_set.png
+
+
+
+ 28
+ 28
+
+
+
+ true
+
+
+ false
+
+
+ Qt::ToolButtonIconOnly
+
+
+ false
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Clear UAV trail
+
+
+ Clear UAV trail
+
+
+
+ :/opmap/images/button_clear_uavtrail.png:/opmap/images/button_clear_uavtrail.png
+
+
+
+ 28
+ 28
+
+
+
+ false
+
+
+ false
+
+
+ Qt::ToolButtonIconOnly
+
+
+ false
+
+
+
+ -
+
+
+ QFrame::Plain
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Edit PathPlan
+
+
+ Edit plan
+
+
+
+ :/opmap/images/button_edit_plan.png:/opmap/images/button_edit_plan.png
+
+
+
+ 28
+ 28
+
+
+
+ false
+
+
+ false
+
+
+ Qt::ToolButtonIconOnly
+
+
+ false
+
+
+
+ -
+
+
+ QFrame::Plain
+
+
+ Qt::Horizontal
+
+
+
-
@@ -1036,6 +1218,54 @@ border-radius: 3px;
+ -
+
+
+ QFrame::Plain
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Save current map settings
+
+
+ Save settings
+
+
+
+ :/opmap/images/button_save.png:/opmap/images/button_save.png
+
+
+
+ 28
+ 28
+
+
+
+ false
+
+
+ false
+
+
+ Qt::ToolButtonIconOnly
+
+
+ false
+
+
+
diff --git a/ground/gcs/src/plugins/opmap/opmapgadget.cpp b/ground/gcs/src/plugins/opmap/opmapgadget.cpp
index 3667bff08..b677d1d6f 100644
--- a/ground/gcs/src/plugins/opmap/opmapgadget.cpp
+++ b/ground/gcs/src/plugins/opmap/opmapgadget.cpp
@@ -32,6 +32,7 @@ OPMapGadget::OPMapGadget(QString classId, OPMapGadgetWidget *widget, QWidget *pa
m_widget(widget), m_config(NULL)
{
connect(m_widget, SIGNAL(defaultLocationAndZoomChanged(double, double, double)), this, SLOT(saveDefaultLocation(double, double, double)));
+ connect(m_widget, SIGNAL(defaultSafeAreaChanged(int, bool)), this, SLOT(saveDefaultSafeArea(int, bool)));
connect(m_widget, SIGNAL(overlayOpacityChanged(qreal)), this, SLOT(saveOpacity(qreal)));
}
@@ -48,6 +49,14 @@ void OPMapGadget::saveDefaultLocation(double lng, double lat, double zoom)
m_config->save();
}
}
+void OPMapGadget::saveDefaultSafeArea(int safe_area_radius, bool showSafeArea)
+{
+ if (m_config) {
+ m_config->setSafeAreaRadius(safe_area_radius);
+ m_config->setShowSafeArea(showSafeArea);
+ m_config->save();
+ }
+}
void OPMapGadget::saveOpacity(qreal value)
{
diff --git a/ground/gcs/src/plugins/opmap/opmapgadget.h b/ground/gcs/src/plugins/opmap/opmapgadget.h
index bbc4f4ae9..a2be4937b 100644
--- a/ground/gcs/src/plugins/opmap/opmapgadget.h
+++ b/ground/gcs/src/plugins/opmap/opmapgadget.h
@@ -56,6 +56,7 @@ private:
private slots:
void saveOpacity(qreal value);
void saveDefaultLocation(double lng, double lat, double zoom);
+ void saveDefaultSafeArea(int safe_area_radius, bool showSafeArea);
};
diff --git a/ground/gcs/src/plugins/opmap/opmapgadgetwidget.cpp b/ground/gcs/src/plugins/opmap/opmapgadgetwidget.cpp
index 1d71e012e..e9e7a95f4 100644
--- a/ground/gcs/src/plugins/opmap/opmapgadgetwidget.cpp
+++ b/ground/gcs/src/plugins/opmap/opmapgadgetwidget.cpp
@@ -216,6 +216,7 @@ OPMapGadgetWidget::OPMapGadgetWidget(QWidget *parent) : QWidget(parent)
connect(m_map, SIGNAL(OnWayPointDoubleClicked(WayPointItem *)), this, SLOT(wpDoubleClickEvent(WayPointItem *)));
m_map->SetCurrentPosition(m_home_position.coord); // set the map position
m_map->Home->SetCoord(m_home_position.coord); // set the HOME position
+ m_map->Home->RefreshPos();
m_map->Nav->SetCoord(m_home_position.coord); // set the NAV position
m_map->UAV->SetUAVPos(m_home_position.coord, 0.0); // set the UAV position
m_map->UAV->update();
@@ -885,6 +886,65 @@ void OPMapGadgetWidget::on_horizontalSliderZoom_sliderMoved(int position)
setZoom(position);
}
+void OPMapGadgetWidget::on_toolButtonHomeSet_clicked()
+{
+ if (!m_widget || !m_map) {
+ return;
+ }
+
+ double LLA[3];
+
+ bool checked = m_widget->toolButtonHomeSet->isChecked();
+
+ if (!m_telemetry_connected) {
+ m_widget->toolButtonHomeSet->setChecked(false);
+ checked = false;
+ // Default map center from default settings
+ LLA[0] = m_home_position.coord.Lat();
+ LLA[1] = m_home_position.coord.Lng();
+ LLA[2] = m_home_position.altitude;
+ } else {
+ bool set;
+ if (obum->getHomeLocation(set, LLA) < 0) {
+ return; // error
+ }
+ }
+
+ obum->setHomeLocation(LLA, checked);
+}
+
+void OPMapGadgetWidget::on_toolButtonClearUAVTrail_clicked()
+{
+ if (!m_widget || !m_map) {
+ return;
+ }
+
+ m_map->UAV->DeleteTrail();
+ if (m_map->GPS) {
+ m_map->GPS->DeleteTrail();
+ }
+}
+
+void OPMapGadgetWidget::on_toolButtonPlanEditor_clicked()
+{
+ if (!m_widget || !m_map) {
+ return;
+ }
+ // open dialog
+ table->show();
+ // bring dialog to the front in case it was already open and hidden away
+ table->raise();
+}
+
+void OPMapGadgetWidget::on_toolButtonSaveSettings_clicked()
+{
+ if (!m_widget || !m_map) {
+ return;
+ }
+
+ emit defaultLocationAndZoomChanged(m_map->CurrentPosition().Lng(), m_map->CurrentPosition().Lat(), m_map->ZoomTotal());
+ emit defaultSafeAreaChanged(m_map->Home->SafeArea(), m_map->Home->ShowSafeArea());
+}
void OPMapGadgetWidget::on_toolButtonNormalMapMode_clicked()
{
@@ -944,6 +1004,7 @@ void OPMapGadgetWidget::homePositionUpdated(UAVObject *hp)
} else {
HomePic = "home2_not_set.svg";
}
+ m_widget->toolButtonHomeSet->setChecked(set);
SetHomePic(HomePic);
setHome(internals::PointLatLng(LLA[0], LLA[1]), LLA[2]);
@@ -1021,6 +1082,7 @@ void OPMapGadgetWidget::setHome(internals::PointLatLng pos_lat_lon, double altit
m_map->Home->SetCoord(m_home_position.coord);
m_map->Home->SetAltitude(altitude);
+ m_map->Home->SetToggleRefresh(true);
m_map->Home->RefreshPos();
// move the magic waypoint to keep it within the safe area boundry
diff --git a/ground/gcs/src/plugins/opmap/opmapgadgetwidget.h b/ground/gcs/src/plugins/opmap/opmapgadgetwidget.h
index 23e354758..959a14892 100644
--- a/ground/gcs/src/plugins/opmap/opmapgadgetwidget.h
+++ b/ground/gcs/src/plugins/opmap/opmapgadgetwidget.h
@@ -123,6 +123,7 @@ public:
bool applyHomeLocationOnMap();
signals:
void defaultLocationAndZoomChanged(double lng, double lat, double zoom);
+ void defaultSafeAreaChanged(int safe_area_radius, bool showSafeArea);
void overlayOpacityChanged(qreal);
public slots:
@@ -159,6 +160,10 @@ private slots:
void on_toolButtonNormalMapMode_clicked();
void on_toolButtonHomeWaypoint_clicked();
void on_toolButtonMoveToWP_clicked();
+ void on_toolButtonHomeSet_clicked();
+ void on_toolButtonClearUAVTrail_clicked();
+ void on_toolButtonPlanEditor_clicked();
+ void on_toolButtonSaveSettings_clicked();
/**
* @brief signals received from the map object