|
|
|
@ -38,6 +38,7 @@ QGCMapWidget::QGCMapWidget(QWidget *parent) :
@@ -38,6 +38,7 @@ QGCMapWidget::QGCMapWidget(QWidget *parent) :
|
|
|
|
|
|
|
|
|
|
this->setContextMenuPolicy(Qt::ActionsContextMenu); |
|
|
|
|
|
|
|
|
|
// Go to options
|
|
|
|
|
QAction *guidedaction = new QAction(this); |
|
|
|
|
guidedaction->setText("Go To Here (Guided Mode)"); |
|
|
|
|
connect(guidedaction,SIGNAL(triggered()),this,SLOT(guidedActionTriggered())); |
|
|
|
@ -46,10 +47,16 @@ QGCMapWidget::QGCMapWidget(QWidget *parent) :
@@ -46,10 +47,16 @@ QGCMapWidget::QGCMapWidget(QWidget *parent) :
|
|
|
|
|
guidedaction->setText("Go To Here Alt (Guided Mode)"); |
|
|
|
|
connect(guidedaction,SIGNAL(triggered()),this,SLOT(guidedAltActionTriggered())); |
|
|
|
|
this->addAction(guidedaction); |
|
|
|
|
// Point camera option
|
|
|
|
|
QAction *cameraaction = new QAction(this); |
|
|
|
|
cameraaction->setText("Point Camera Here"); |
|
|
|
|
connect(cameraaction,SIGNAL(triggered()),this,SLOT(cameraActionTriggered())); |
|
|
|
|
this->addAction(cameraaction); |
|
|
|
|
// Set home location option
|
|
|
|
|
QAction *sethomeaction = new QAction(this); |
|
|
|
|
sethomeaction->setText("Set Home Location Here"); |
|
|
|
|
connect(sethomeaction,SIGNAL(triggered()),this,SLOT(setHomeActionTriggered())); |
|
|
|
|
this->addAction(sethomeaction); |
|
|
|
|
} |
|
|
|
|
void QGCMapWidget::guidedActionTriggered() |
|
|
|
|
{ |
|
|
|
@ -111,8 +118,44 @@ void QGCMapWidget::cameraActionTriggered()
@@ -111,8 +118,44 @@ void QGCMapWidget::cameraActionTriggered()
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief QGCMapWidget::setHomeActionTriggered |
|
|
|
|
*/ |
|
|
|
|
bool QGCMapWidget::setHomeActionTriggered() |
|
|
|
|
{ |
|
|
|
|
if (!uas) |
|
|
|
|
{ |
|
|
|
|
QMessageBox::information(0,"Error","Please connect first"); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
UASManager *uasManager = UASManager::instance(); |
|
|
|
|
if (!uasManager) { return false; } |
|
|
|
|
|
|
|
|
|
// Enter an altitude
|
|
|
|
|
bool ok = false; |
|
|
|
|
double alt = QInputDialog::getDouble(this,"Home Altitude","Enter altitude (in meters) of new home location",0.0,0.0,30000.0,2,&ok); |
|
|
|
|
if (!ok) return false; //Use has chosen cancel. Do not send the waypoint
|
|
|
|
|
|
|
|
|
|
// Create new waypoint and send it to the WPManager to send out.
|
|
|
|
|
internals::PointLatLng pos = map->FromLocalToLatLng(contextMousePressPos.x(), contextMousePressPos.y()); |
|
|
|
|
qDebug("Set home location sent. Lat: %f, Lon: %f, Alt: %f.", pos.Lat(), pos.Lng(), alt); |
|
|
|
|
|
|
|
|
|
bool success = uasManager->setHomePositionAndNotify(pos.Lat(),pos.Lng(), alt); |
|
|
|
|
|
|
|
|
|
qDebug() << ((success)? "Set new home location." : "Failed to set new home location."); |
|
|
|
|
|
|
|
|
|
return success; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void QGCMapWidget::mousePressEvent(QMouseEvent *event) |
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
// Store right-click event presses separate for context menu
|
|
|
|
|
// TODO add check if click was on map, or popup box.
|
|
|
|
|
if (event->button() == Qt::RightButton) { |
|
|
|
|
contextMousePressPos = event->pos(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
mapcontrol::OPMapWidget::mousePressEvent(event); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -122,6 +165,15 @@ void QGCMapWidget::mouseReleaseEvent(QMouseEvent *event)
@@ -122,6 +165,15 @@ void QGCMapWidget::mouseReleaseEvent(QMouseEvent *event)
|
|
|
|
|
mapcontrol::OPMapWidget::mouseReleaseEvent(event); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
void QGCMapWidget::contextMenuEvent(QContextMenuEvent *event) |
|
|
|
|
{ |
|
|
|
|
// TODO Remove this method
|
|
|
|
|
qDebug() << "Context menu event triggered."; |
|
|
|
|
mapcontrol::OPMapWidget::contextMenuEvent(event); |
|
|
|
|
} |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
QGCMapWidget::~QGCMapWidget() |
|
|
|
|
{ |
|
|
|
|
SetShowHome(false); // doing this appears to stop the map lib crashing on exit
|
|
|
|
@ -520,6 +572,7 @@ void QGCMapWidget::updateHomePosition(double latitude, double longitude, double
@@ -520,6 +572,7 @@ void QGCMapWidget::updateHomePosition(double latitude, double longitude, double
|
|
|
|
|
Home->SetAltitude(altitude); |
|
|
|
|
homeAltitude = altitude; |
|
|
|
|
SetShowHome(true); // display the HOME position on the map
|
|
|
|
|
Home->RefreshPos(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void QGCMapWidget::goHome() |
|
|
|
|