Skip to content
Snippets Groups Projects
QGCHilConfiguration.cc 3.11 KiB
Newer Older
  • Learn to ignore specific revisions
  • #include "QGCHilConfiguration.h"
    #include "ui_QGCHilConfiguration.h"
    
    
    Thomas Gubler's avatar
    Thomas Gubler committed
    #include "QGCHilFlightGearConfiguration.h"
    
    #include "QGCHilJSBSimConfiguration.h"
    
    Thomas Gubler's avatar
    Thomas Gubler committed
    #include "QGCHilXPlaneConfiguration.h"
    
    QGCHilConfiguration::QGCHilConfiguration(UAS *mav, QWidget *parent) :
    
    Thomas Gubler's avatar
    Thomas Gubler committed
        mav(mav),
    
        ui(new Ui::QGCHilConfiguration)
    {
        ui->setupUi(this);
    
    
        // XXX its quite wrong that this is implicitely a factory
        // class, but this is something to clean up for later.
    
        QSettings settings;
        int i = settings.value("SIMULATOR_INDEX", -1).toInt();
        settings.beginGroup("QGC_HILCONFIG");
    
        if (i > 0) {
            ui->simComboBox->blockSignals(true);
            ui->simComboBox->setCurrentIndex(i);
            ui->simComboBox->blockSignals(false);
    
    Lorenz Meier's avatar
    Lorenz Meier committed
            on_simComboBox_currentIndexChanged(i);
    
    void QGCHilConfiguration::receiveStatusMessage(const QString& message)
    {
        ui->statusLabel->setText(message);
    }
    
    
    Thomas Gubler's avatar
    Thomas Gubler committed
    QGCHilConfiguration::~QGCHilConfiguration()
    {
    
        QSettings settings;
        settings.beginGroup("QGC_HILCONFIG");
        settings.setValue("SIMULATOR_INDEX", ui->simComboBox->currentIndex());
        settings.endGroup();
        settings.sync();
    
    Thomas Gubler's avatar
    Thomas Gubler committed
        delete ui;
    }
    
    void QGCHilConfiguration::on_simComboBox_currentIndexChanged(int index)
    
        //clean up
        QLayoutItem *child;
        while ((child = ui->simulatorConfigurationLayout->takeAt(0)) != 0)
        {
    
            delete child->widget();
            delete child;
    
    Thomas Gubler's avatar
    Thomas Gubler committed
        if(1 == index)
    
    Lorenz Meier's avatar
    Lorenz Meier committed
            // Ensure the sim exists and is disabled
            mav->enableHilFlightGear(false, "");
    
    Thomas Gubler's avatar
    Thomas Gubler committed
            QGCHilFlightGearConfiguration* hfgconf = new QGCHilFlightGearConfiguration(mav, this);
            hfgconf->show();
    
            ui->simulatorConfigurationLayout->addWidget(hfgconf);
            QGCFlightGearLink* fg = dynamic_cast<QGCFlightGearLink*>(mav->getHILSimulation());
            if (fg)
            {
                connect(fg, SIGNAL(statusMessage(QString)), ui->statusLabel, SLOT(setText(QString)));
            }
    
    Lorenz Meier's avatar
    Lorenz Meier committed
            // Ensure the sim exists and is disabled
            mav->enableHilXPlane(false);
    
    Thomas Gubler's avatar
    Thomas Gubler committed
            QGCHilXPlaneConfiguration* hxpconf = new QGCHilXPlaneConfiguration(mav->getHILSimulation(), this);
            hxpconf->show();
    
            ui->simulatorConfigurationLayout->addWidget(hxpconf);
    
    Lorenz Meier's avatar
    Lorenz Meier committed
            // Select correct version of XPlane
            QGCXPlaneLink* xplane = dynamic_cast<QGCXPlaneLink*>(mav->getHILSimulation());
            if (xplane)
            {
                xplane->setVersion((index == 2) ? 10 : 9);
    
                connect(xplane, SIGNAL(statusMessage(QString)), ui->statusLabel, SLOT(setText(QString)));
    
    Lorenz Meier's avatar
    Lorenz Meier committed
            }
    
        else if (4)
        {
            // Ensure the sim exists and is disabled
            mav->enableHilJSBSim(false, "");
            QGCHilJSBSimConfiguration* hfgconf = new QGCHilJSBSimConfiguration(mav, this);
            hfgconf->show();
            ui->simulatorConfigurationLayout->addWidget(hfgconf);
            QGCJSBSimLink* jsb = dynamic_cast<QGCJSBSimLink*>(mav->getHILSimulation());
            if (jsb)
            {
                connect(jsb, SIGNAL(statusMessage(QString)), ui->statusLabel, SLOT(setText(QString)));
            }
        }