diff --git a/qgroundcontrol.pro b/qgroundcontrol.pro index 064aaff..7d4f29e 100644 --- a/qgroundcontrol.pro +++ b/qgroundcontrol.pro @@ -572,7 +572,7 @@ SOURCES += src/main.cc \ src/ui/QGCTabbedInfoView.cpp \ src/ui/UASRawStatusView.cpp \ src/ui/PrimaryFlightDisplay.cc \ - src/ui/uas/QGCMessageView.cc + src/ui/uas/QGCMessageView.cc \ src/ui/JoystickButton.cc \ src/ui/JoystickAxis.cc diff --git a/src/ui/PrimaryFlightDisplay.cc b/src/ui/PrimaryFlightDisplay.cc index 5a74109..a42d372 100644 --- a/src/ui/PrimaryFlightDisplay.cc +++ b/src/ui/PrimaryFlightDisplay.cc @@ -163,14 +163,23 @@ PrimaryFlightDisplay::PrimaryFlightDisplay(int width, int height, QWidget *paren font("Bitstream Vera Sans"), refreshTimer(new QTimer(this)) { - Q_UNUSED(width) - Q_UNUSED(height) + Q_UNUSED(width); + Q_UNUSED(height); setMinimumSize(120, 80); setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - // Connect with UAS + // Connect with UAS signal + connect(UASManager::instance(), SIGNAL(UASCreated(UASInterface*)), this, SLOT(addUAS(UASInterface*))); + // connect(UASManager::instance(), SIGNAL(UASDeleted(UASInterface*)), this, SLOT(forgetUAS(UASInterface*))); + connect(UASManager::instance(), SIGNAL(activeUASSet(UASInterface*)), this, SLOT(setActiveUAS(UASInterface*))); + + // Get a list of all existing UAS and - well attach to one of them. The first one. + foreach (UASInterface* uas, UASManager::instance()->getUASList()) { + addUAS(uas); + } + if (UASManager::instance()->getActiveUAS() != NULL) setActiveUAS(UASManager::instance()->getActiveUAS()); // Refresh timer @@ -244,6 +253,17 @@ void PrimaryFlightDisplay::paintEvent(QPaintEvent *event) /* * Interface towards qgroundcontrol */ +void PrimaryFlightDisplay::addUAS(UASInterface* uas) +{ + if (uas) + { + if (!this->uas) + { + setActiveUAS(uas); + } + } +} + /** * * @param uas the UAS/MAV to monitor/display with the HUD diff --git a/src/ui/PrimaryFlightDisplay.h b/src/ui/PrimaryFlightDisplay.h index a2bd68c..cdb8374 100644 --- a/src/ui/PrimaryFlightDisplay.h +++ b/src/ui/PrimaryFlightDisplay.h @@ -26,7 +26,9 @@ public slots: void updateNavigationControllerErrors(UASInterface* uas, double altitudeError, double speedError, double xtrackError); /** @brief Set the currently monitored UAS */ - virtual void setActiveUAS(UASInterface* uas); + void addUAS(UASInterface* uas); + //void forgetUAS(UASInterface* uas); + void setActiveUAS(UASInterface* uas); protected: enum Layout {