Newer
Older
#include "QGCConfigView.h"
#include "ui_QGCConfigView.h"
#include "UASManager.h"
#include "QGCPX4VehicleConfig.h"
#include "QGCVehicleConfig.h"
#include "QGCPX4VehicleConfig.h"
Lorenz Meier
committed
#include "MainWindow.h"
QGCConfigView::QGCConfigView(QWidget *parent) :
QWidget(parent),
ui(new Ui::QGCConfigView),
Lorenz Meier
committed
config(NULL),
{
ui->setupUi(this);
connect(UASManager::instance(), SIGNAL(activeUASSet(UASInterface*)), this, SLOT(activeUASChanged(UASInterface*)));
Lorenz Meier
committed
// The config screens are required for firmware uploading
if (MainWindow::instance()->getCustomMode() == MainWindow::CUSTOM_MODE_PX4) {
ui->gridLayout->removeWidget(ui->waitingLabel);
ui->waitingLabel->setVisible(false);
delete ui->waitingLabel;
Lorenz Meier
committed
config = new QGCPX4VehicleConfig();
ui->gridLayout->addWidget(config);
Lorenz Meier
committed
} else {
//don't show a configuration widget if no vehicle is connected
//show a placeholder informational widget instead
}
}
QGCConfigView::~QGCConfigView()
{
delete ui;
}
void QGCConfigView::activeUASChanged(UASInterface* uas)
{
int type = -1;
if (mav)
type = mav->getAutopilotType();
if (ui->waitingLabel) {
ui->gridLayout->removeWidget(ui->waitingLabel);
ui->waitingLabel->setVisible(false);
}
//remove all child widgets since they could contain stale data
//for example, when we switch from one PX4 UAS to another UAS
foreach (QObject* obj, ui->gridLayout->children()) {
QWidget* w = dynamic_cast<QWidget*>(obj);
if (w) {
if (obj != ui->waitingLabel) {
ui->gridLayout->removeWidget(w);
delete obj;
}
}
}
int autopilotType = mav->getAutopilotType();
switch (autopilotType) {
Lorenz Meier
committed
{
QGCPX4VehicleConfig* px4config = qobject_cast<QGCPX4VehicleConfig*>(config);
if (!px4config) {
if (config)
delete config;
config = new QGCPX4VehicleConfig();
ui->gridLayout->addWidget(config);
}
}
Lorenz Meier
committed
{
QGCVehicleConfig* generalconfig = qobject_cast<QGCVehicleConfig*>(config);
if (!generalconfig) {
if (config)
delete config;
config = new QGCVehicleConfig();
ui->gridLayout->addWidget(config);
}
}
if (ui->waitingLabel) {
//restore waiting label if we no longer have a connection
ui->gridLayout->addWidget(ui->waitingLabel);
ui->waitingLabel->setVisible(true);
}