Example #1
0
void CustomFunctionsPanel::populateFuncParamCB(QComboBox *b, uint function, unsigned int value, unsigned int adjustmode)
{
  QStringList qs;
  b->clear();
  if (function==FuncPlaySound) {
    CustomFunctionData::populatePlaySoundParams(qs);
    b->addItems(qs);
    b->setCurrentIndex(value);
  }
  else if (function==FuncPlayHaptic) {
    CustomFunctionData::populateHapticParams(qs);
    b->addItems(qs);
    b->setCurrentIndex(value);
  }
  else if (function==FuncReset) {
    CustomFunctionData::populateResetParams(model, b, value);
  }
  else if (function==FuncVolume) {
    populateSourceCB(b, RawSource(value), generalSettings, model, POPULATE_NONE|POPULATE_SOURCES|POPULATE_VIRTUAL_INPUTS|POPULATE_TRIMS|POPULATE_SWITCHES);
  }
  else if (function==FuncPlayValue) {
    populateSourceCB(b, RawSource(value), generalSettings, model, POPULATE_NONE|POPULATE_SOURCES|POPULATE_VIRTUAL_INPUTS|POPULATE_SWITCHES|POPULATE_GVARS|POPULATE_TRIMS|POPULATE_TELEMETRY|POPULATE_TELEMETRYEXT|POPULATE_SCRIPT_OUTPUTS);
  }
  else if (function>=FuncAdjustGV1 && function<=FuncAdjustGVLast) {
    switch (adjustmode) {
      case 1:
        populateSourceCB(b, RawSource(value), generalSettings, model, POPULATE_NONE|POPULATE_SOURCES|POPULATE_VIRTUAL_INPUTS|POPULATE_TRIMS|POPULATE_SWITCHES);
        break;
      case 2:
        populateSourceCB(b, RawSource(value), generalSettings, model, POPULATE_GVARS);
        break;
      case 3:
        b->clear();
        b->addItem("-1", 0);
        b->addItem("+1", 1);
        b->setCurrentIndex(value);
        break;
    }
  }
  else {
    b->hide();
  }
}
Example #2
0
void HeliPanel::update()
{
  lock = true;

  ui->swashTypeCB->setCurrentIndex(model.swashRingData.type);
  populateSourceCB(ui->swashCollectiveCB, model.swashRingData.collectiveSource, model, POPULATE_SOURCES | POPULATE_VIRTUAL_INPUTS | POPULATE_SWITCHES | POPULATE_TRIMS);
  ui->swashRingValSB->setValue(model.swashRingData.value);
  ui->swashInvertELE->setChecked(model.swashRingData.invertELE);
  ui->swashInvertAIL->setChecked(model.swashRingData.invertAIL);
  ui->swashInvertCOL->setChecked(model.swashRingData.invertCOL);

  lock = false;
}
Example #3
0
MixerDialog::MixerDialog(QWidget *parent, ModelData & model, MixData *mixdata, GeneralSettings & generalSettings, Firmware * firmware) :
  QDialog(parent),
  ui(new Ui::MixerDialog),
  model(model),
  generalSettings(generalSettings),
  firmware(firmware),
  md(mixdata),
  lock(false)
{
    ui->setupUi(this);
    QRegExp rx(CHAR_FOR_NAMES_REGEX);
    QLabel * lb_fp[] = {ui->lb_FP0,ui->lb_FP1,ui->lb_FP2,ui->lb_FP3,ui->lb_FP4,ui->lb_FP5,ui->lb_FP6,ui->lb_FP7,ui->lb_FP8 };
    QCheckBox * cb_fp[] = {ui->cb_FP0,ui->cb_FP1,ui->cb_FP2,ui->cb_FP3,ui->cb_FP4,ui->cb_FP5,ui->cb_FP6,ui->cb_FP7,ui->cb_FP8 };

    this->setWindowTitle(tr("DEST -> CH%1").arg(md->destCh));

    populateSourceCB(ui->sourceCB, md->srcRaw, generalSettings, &model, POPULATE_NONE | POPULATE_SOURCES | POPULATE_SCRIPT_OUTPUTS | 
                                                                        POPULATE_VIRTUAL_INPUTS | POPULATE_SWITCHES | POPULATE_TRIMS);
    ui->sourceCB->removeItem(0);

    int limit = firmware->getCapability(OffsetWeight);

    gvWeightGroup = new GVarGroup(ui->weightGV, ui->weightSB, ui->weightCB, md->weight, 100, -limit, limit);
    gvOffsetGroup = new GVarGroup(ui->offsetGV, ui->offsetSB, ui->offsetCB, md->sOffset, 0, -limit, limit);
    curveGroup = new CurveGroup(ui->curveTypeCB, ui->curveGVarCB, ui->curveValueCB, ui->curveValueSB, 
                                md->curve, firmware->getCapability(HasMixerExpo) ? 0 : HIDE_EXPO);

    ui->MixDR_CB->setChecked(md->noExpo == 0);

    if (!firmware->getCapability(HasNoExpo)) {
      ui->MixDR_CB->hide();
      ui->label_MixDR->hide();
    }

    if (!firmware->getCapability(VirtualInputs)) {
      for(int i=0; i < NUM_STICKS; i++) {
        ui->trimCB->addItem(AnalogString(i));
      }
    }

    ui->trimCB->setCurrentIndex(1 - md->carryTrim);

    int namelength = firmware->getCapability(HasMixerNames);
    if (!namelength) {
      ui->label_name->hide();
      ui->mixerName->hide();
    }
    else {
      ui->mixerName->setMaxLength(namelength);
    }
    ui->mixerName->setValidator(new QRegExpValidator(rx, this));
    ui->mixerName->setText(md->name);

    if (!firmware->getCapability(FlightModes)) {
      ui->label_phases->hide();
      for (int i=0; i<9; i++) {
        lb_fp[i]->hide();
        cb_fp[i]->hide();
      }
    }
    else {
      int mask = 1;
      for (int i=0; i<9 ; i++) {
        if ((md->flightModes & mask) == 0) {
          cb_fp[i]->setChecked(true);
        }
        mask <<= 1;
      }
      for (int i=firmware->getCapability(FlightModes); i<9; i++) {
        lb_fp[i]->hide();
        cb_fp[i]->hide();
      }
    }

    populateSwitchCB(ui->switchesCB, md->swtch, generalSettings, MixesContext);
    ui->warningCB->setCurrentIndex(md->mixWarn);
    ui->mltpxCB->setCurrentIndex(md->mltpx);
    int scale=firmware->getCapability(SlowScale);  
    float range=firmware->getCapability(SlowRange);  
    ui->slowDownSB->setMaximum(range/scale);
    ui->slowDownSB->setSingleStep(1.0/scale);
    ui->slowDownSB->setDecimals((scale==1 ? 0 :1));
    ui->slowDownSB->setValue((float)md->speedDown/scale);
    ui->slowUpSB->setMaximum(range/scale);
    ui->slowUpSB->setSingleStep(1.0/scale);
    ui->slowUpSB->setDecimals((scale==1 ? 0 :1));
    ui->slowUpSB->setValue((float)md->speedUp/scale);
    ui->delayDownSB->setMaximum(range/scale);
    ui->delayDownSB->setSingleStep(1.0/scale);
    ui->delayDownSB->setDecimals((scale==1 ? 0 :1));
    ui->delayDownSB->setValue((float)md->delayDown/scale);
    ui->delayUpSB->setMaximum(range/scale);
    ui->delayUpSB->setSingleStep(1.0/scale);
    ui->delayUpSB->setDecimals((scale==1 ? 0 :1));
    ui->delayUpSB->setValue((float)md->delayUp/scale);
    QTimer::singleShot(0, this, SLOT(shrink()));

    valuesChanged();
    connect(ui->mixerName,SIGNAL(editingFinished()),this,SLOT(valuesChanged()));
    connect(ui->sourceCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged()));
    connect(ui->trimCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged()));
    connect(ui->MixDR_CB,SIGNAL(toggled(bool)),this,SLOT(valuesChanged()));
    connect(ui->switchesCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged()));
    connect(ui->warningCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged()));
    connect(ui->mltpxCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged()));
    connect(ui->delayDownSB,SIGNAL(editingFinished()),this,SLOT(valuesChanged()));
    connect(ui->delayUpSB,SIGNAL(editingFinished()),this,SLOT(valuesChanged()));
    connect(ui->slowDownSB,SIGNAL(editingFinished()),this,SLOT(valuesChanged()));
    connect(ui->slowUpSB,SIGNAL(editingFinished()),this,SLOT(valuesChanged()));
    for (int i=0; i<9; i++) {
      connect(cb_fp[i],SIGNAL(toggled(bool)),this,SLOT(valuesChanged()));
    }
}
Example #4
0
ExpoDialog::ExpoDialog(QWidget *parent, ModelData & model, ExpoData *expoData, GeneralSettings & generalSettings, 
                          Firmware * firmware, QString & inputName) :
  QDialog(parent),
  ui(new Ui::ExpoDialog),
  model(model),
  generalSettings(generalSettings),
  firmware(firmware),
  ed(expoData),
  inputName(inputName),
  modelPrinter(firmware, generalSettings, model)
{
  ui->setupUi(this);
  QLabel * lb_fp[] = {ui->lb_FP0,ui->lb_FP1,ui->lb_FP2,ui->lb_FP3,ui->lb_FP4,ui->lb_FP5,ui->lb_FP6,ui->lb_FP7,ui->lb_FP8 };
  QCheckBox * cb_fp[] = {ui->cb_FP0,ui->cb_FP1,ui->cb_FP2,ui->cb_FP3,ui->cb_FP4,ui->cb_FP5,ui->cb_FP6,ui->cb_FP7,ui->cb_FP8 };

  setWindowTitle(tr("Edit %1").arg(modelPrinter.printInputName(ed->chn)));
  QRegExp rx(CHAR_FOR_NAMES_REGEX);

  if (IS_TARANIS(GetEepromInterface()->getBoard())) {
    gvWeightGroup = new GVarGroup(ui->weightGV, ui->weightSB, ui->weightCB, ed->weight, 100, -100, 100);
    gvOffsetGroup = new GVarGroup(ui->offsetGV, ui->offsetSB, ui->offsetCB, ed->offset, 0, -100, 100);
  }
  else {
    gvWeightGroup = new GVarGroup(ui->weightGV, ui->weightSB, ui->weightCB, ed->weight, 100, 0, 100);
    gvOffsetGroup = NULL;
    ui->offsetLabel->hide();
    ui->offsetGV->hide();
    ui->offsetSB->hide();
    ui->offsetCB->hide();
  }

  curveGroup = new CurveGroup(ui->curveTypeCB, ui->curveGVarCB, ui->curveValueCB, ui->curveValueSB, ed->curve, 
                              firmware->getCapability(HasInputDiff) ? 0 : (HIDE_DIFF | HIDE_NEGATIVE_CURVES));

  populateSwitchCB(ui->switchesCB, ed->swtch, generalSettings, MixesContext);

  ui->sideCB->setCurrentIndex(ed->mode-1);

  if (!firmware->getCapability(FlightModes)) {
    ui->label_phases->hide();
    for (int i=0; i<9; i++) {
      lb_fp[i]->hide();
      cb_fp[i]->hide();
    }
  }
  else {
    int mask = 1;
    for (int i=0; i<9; i++) {
      if ((ed->flightModes & mask) == 0) {
        cb_fp[i]->setChecked(true);
      }
      mask <<= 1;
    }
    for (int i=firmware->getCapability(FlightModes); i<9; i++) {
      lb_fp[i]->hide();
      cb_fp[i]->hide();
    }
  }

  if (firmware->getCapability(VirtualInputs)) {
    ui->inputName->setMaxLength(4);
    populateSourceCB(ui->sourceCB, ed->srcRaw, generalSettings, &model, POPULATE_NONE | POPULATE_SOURCES | 
                                                  POPULATE_SWITCHES | POPULATE_TRIMS | POPULATE_TELEMETRY);
    ui->sourceCB->removeItem(0);
    ui->inputName->setValidator(new QRegExpValidator(rx, this));
    ui->inputName->setText(inputName);
  }
  else {
    ui->inputNameLabel->hide();
    ui->inputName->hide();
    ui->sourceLabel->hide();
    ui->sourceCB->hide();
    ui->trimLabel->hide();
    ui->trimCB->hide();
  }

  for(int i=0; i < NUM_STICKS; i++) {
    ui->trimCB->addItem(AnalogString(i), i+1);
  }
  ui->trimCB->setCurrentIndex(1 - ed->carryTrim);

  int expolength = firmware->getCapability(HasExpoNames);
  if (!expolength) {
    ui->lineNameLabel->hide();
    ui->lineName->hide();
  }
  else {
    ui->lineName->setMaxLength(expolength);
  }

  ui->lineName->setValidator(new QRegExpValidator(rx, this));
  ui->lineName->setText(ed->name);

  updateScale();
  valuesChanged();

  connect(ui->lineName, SIGNAL(editingFinished()), this, SLOT(valuesChanged()));
  connect(ui->sourceCB, SIGNAL(currentIndexChanged(int)), this, SLOT(valuesChanged()));
  connect(ui->scale, SIGNAL(editingFinished()), this, SLOT(valuesChanged()));
  connect(ui->trimCB, SIGNAL(currentIndexChanged(int)), this, SLOT(valuesChanged()));
  connect(ui->switchesCB, SIGNAL(currentIndexChanged(int)), this, SLOT(valuesChanged()));
  connect(ui->sideCB, SIGNAL(currentIndexChanged(int)), this, SLOT(valuesChanged()));
  for (int i=0; i<9; i++) {
    connect(cb_fp[i], SIGNAL(toggled(bool)), this, SLOT(valuesChanged()));
  }
  if (firmware->getCapability(VirtualInputs))
    connect(ui->inputName, SIGNAL(editingFinished()), this, SLOT(valuesChanged()));

  QTimer::singleShot(0, this, SLOT(shrink()));
}
VoiceAlarmDialog::VoiceAlarmDialog(QWidget *parent, VoiceAlarmData *invad, int eeType, int stickmode, int modelVersion, SKYModelData *pModel ) :
    QDialog(parent),
    ui(new Ui::VoiceAlarmDialog)
{
  ui->setupUi(this);
	leeType = eeType ;
  lpModel = pModel ;
	vad = invad ;
  populateSourceCB( ui->SourceCB, stickmode, 1, vad->source, modelVersion, eeType ) ;
	
//	uint32_t value ;
//	value = vad->source ;
//	if ( eeType )
//	{
//		if ( value >= EXTRA_POTS_POSITION )
//		{
//			if ( value >= EXTRA_POTS_START )
//			{
//				value -= ( EXTRA_POTS_START - EXTRA_POTS_POSITION ) ;
//			}
//			else
//			{
//				value += eeType == 2 ? 2 : NUM_EXTRA_POTS ;
//			}
//		}
//	}
//  ui->SourceCB->setCurrentIndex(value) ;

	populateSwitchCB( ui->SwitchCB, vad->swtch, eeType ) ;
	ui->FunctionCB->setCurrentIndex( vad->func ) ;
	ui->RateCB->setCurrentIndex( vad->rate ) ;
	ui->HapticCB->setCurrentIndex( vad->haptic ) ;
	ui->ValueSB->setValue( vad->offset ) ;
	ui->MuteCB->setCurrentIndex( vad->mute ) ;
	ui->FileTypeCB->setCurrentIndex( vad->fnameType ) ;
	ui->PlaySourceCB->setCurrentIndex( vad->vsource ) ;
	switch ( vad->fnameType )
	{
		case 1 :
      ui->FileName->setText( (char *)vad->file.name ) ;
		break ;
		case 2 :
			ui->FileNumberSB->setValue( vad->file.vfile ) ;
		break ;
		case 3 :
			ui->AudioCB->setCurrentIndex( vad->file.vfile ) ;
		break ;
	}
	updateDisplay() ;

  connect(ui->SourceCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged()));
  connect(ui->FunctionCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged()));
  connect(ui->SwitchCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged()));
  connect(ui->RateCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged()));
  connect(ui->HapticCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged()));
  connect(ui->MuteCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged()));
  connect(ui->ValueSB,SIGNAL(valueChanged(int)),this,SLOT(valuesChanged()));
  connect(ui->FileTypeCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged()));

  connect(ui->PlaySourceCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged()));
  connect(ui->FileName, SIGNAL(editingFinished()),this,SLOT(valuesChanged()));
  connect(ui->FileNumberSB,SIGNAL(valueChanged(int)),this,SLOT(valuesChanged()));
  connect(ui->AudioCB,SIGNAL(currentIndexChanged(int)),this,SLOT(valuesChanged()));

}