Files
edgetx-gx12/companion/src/modeledit/heli.cpp
T
2015-05-26 07:14:25 +02:00

90 lines
4.2 KiB
C++

#include "heli.h"
#include "ui_heli.h"
#include "helpers.h"
HeliPanel::HeliPanel(QWidget *parent, ModelData & model, GeneralSettings & generalSettings, Firmware * firmware):
ModelPanel(parent, model, generalSettings, firmware),
ui(new Ui::Heli)
{
ui->setupUi(this);
connect(ui->swashType, SIGNAL(currentIndexChanged(int)), this, SLOT(edited()));
connect(ui->swashRingVal, SIGNAL(editingFinished()), this, SLOT(edited()));
connect(ui->swashCollectiveSource, SIGNAL(currentIndexChanged(int)), this, SLOT(edited()));
if (firmware->getCapability(VirtualInputs)) {
connect(ui->swashAileronSource, SIGNAL(currentIndexChanged(int)), this, SLOT(edited()));
connect(ui->swashElevatorSource, SIGNAL(currentIndexChanged(int)), this, SLOT(edited()));
connect(ui->swashAileronWeight, SIGNAL(editingFinished()), this, SLOT(edited()));
connect(ui->swashElevatorWeight, SIGNAL(editingFinished()), this, SLOT(edited()));
connect(ui->swashCollectiveWeight, SIGNAL(editingFinished()), this, SLOT(edited()));
ui->invertLabel->hide();
ui->swashElevatorInvert->hide();
ui->swashAileronInvert->hide();
ui->swashCollectiveInvert->hide();
}
else {
connect(ui->swashElevatorInvert, SIGNAL(stateChanged(int)), this, SLOT(edited()));
connect(ui->swashAileronInvert, SIGNAL(stateChanged(int)), this, SLOT(edited()));
connect(ui->swashCollectiveInvert, SIGNAL(stateChanged(int)), this, SLOT(edited()));
ui->aileronLabel->hide();
ui->elevatorLabel->hide();
ui->swashAileronSource->hide();
ui->swashElevatorSource->hide();
ui->swashAileronWeight->hide();
ui->swashElevatorWeight->hide();
ui->swashCollectiveWeight->hide();
}
disableMouseScrolling();
}
HeliPanel::~HeliPanel()
{
delete ui;
}
void HeliPanel::update()
{
lock = true;
ui->swashType->setCurrentIndex(model->swashRingData.type);
populateSourceCB(ui->swashCollectiveSource, model->swashRingData.collectiveSource, generalSettings, model, POPULATE_SOURCES | POPULATE_VIRTUAL_INPUTS | POPULATE_SWITCHES | POPULATE_TRIMS);
ui->swashRingVal->setValue(model->swashRingData.value);
if (firmware->getCapability(VirtualInputs)) {
populateSourceCB(ui->swashElevatorSource, model->swashRingData.elevatorSource, generalSettings, model, POPULATE_SOURCES | POPULATE_VIRTUAL_INPUTS | POPULATE_SWITCHES | POPULATE_TRIMS);
populateSourceCB(ui->swashAileronSource, model->swashRingData.aileronSource, generalSettings, model, POPULATE_SOURCES | POPULATE_VIRTUAL_INPUTS | POPULATE_SWITCHES | POPULATE_TRIMS);
ui->swashElevatorWeight->setValue(model->swashRingData.elevatorWeight);
ui->swashAileronWeight->setValue(model->swashRingData.aileronWeight);
ui->swashCollectiveWeight->setValue(model->swashRingData.collectiveWeight);
}
else {
ui->swashElevatorInvert->setChecked(model->swashRingData.elevatorWeight < 0);
ui->swashAileronInvert->setChecked(model->swashRingData.aileronWeight < 0);
ui->swashCollectiveInvert->setChecked(model->swashRingData.collectiveWeight < 0);
}
lock = false;
}
void HeliPanel::edited()
{
if (!lock) {
model->swashRingData.type = ui->swashType->currentIndex();
model->swashRingData.collectiveSource = RawSource(ui->swashCollectiveSource->itemData(ui->swashCollectiveSource->currentIndex()).toInt());
model->swashRingData.value = ui->swashRingVal->value();
if (firmware->getCapability(VirtualInputs)) {
model->swashRingData.elevatorSource = RawSource(ui->swashElevatorSource->itemData(ui->swashElevatorSource->currentIndex()).toInt());
model->swashRingData.aileronSource = RawSource(ui->swashAileronSource->itemData(ui->swashAileronSource->currentIndex()).toInt());
model->swashRingData.elevatorWeight = ui->swashElevatorWeight->value();
model->swashRingData.aileronWeight = ui->swashAileronWeight->value();
model->swashRingData.collectiveWeight = ui->swashCollectiveWeight->value();
}
else {
model->swashRingData.elevatorWeight = (ui->swashElevatorInvert->isChecked() ? -100 : 100);
model->swashRingData.aileronWeight = (ui->swashAileronInvert->isChecked() ? -100 : 100);
model->swashRingData.collectiveWeight = (ui->swashCollectiveInvert->isChecked() ? -100 : 100);
}
emit modified();
}
}