diff --git a/companion/src/apppreferencesdialog.cpp b/companion/src/apppreferencesdialog.cpp index 6ff722398..d5ed06d50 100644 --- a/companion/src/apppreferencesdialog.cpp +++ b/companion/src/apppreferencesdialog.cpp @@ -16,9 +16,30 @@ AppPreferencesDialog::AppPreferencesDialog(QWidget *parent) : ui(new Ui::AppPreferencesDialog) { ui->setupUi(this); + updateLock=false; setWindowIcon(CompanionIcon("apppreferences.png")); + QCheckBox * OptionCheckBox[]= { + ui->optionCheckBox_1, ui->optionCheckBox_2, ui->optionCheckBox_3, ui->optionCheckBox_4, ui->optionCheckBox_5, ui->optionCheckBox_6, ui->optionCheckBox_7, + ui->optionCheckBox_8, ui->optionCheckBox_9, ui->optionCheckBox_10, ui->optionCheckBox_11, ui->optionCheckBox_12, ui->optionCheckBox_13, ui->optionCheckBox_14, + ui->optionCheckBox_15,ui->optionCheckBox_16, ui->optionCheckBox_17, ui->optionCheckBox_18, ui->optionCheckBox_19, ui->optionCheckBox_20, ui->optionCheckBox_21, + ui->optionCheckBox_22, ui->optionCheckBox_23, ui->optionCheckBox_24, ui->optionCheckBox_25, ui->optionCheckBox_26, ui->optionCheckBox_27, ui->optionCheckBox_28, + ui->optionCheckBox_29, ui->optionCheckBox_30, ui->optionCheckBox_31, ui->optionCheckBox_32, ui->optionCheckBox_33, ui->optionCheckBox_34, ui->optionCheckBox_35, + ui->optionCheckBox_36, ui->optionCheckBox_37, ui->optionCheckBox_38, ui->optionCheckBox_39, ui->optionCheckBox_40, ui->optionCheckBox_41, ui->optionCheckBox_42, + NULL }; + + voice=NULL; + connect(ui->langCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(firmwareLangChanged())); + connect(ui->voiceCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(firmwareLangChanged())); + + for (int i=0; OptionCheckBox[i]; i++) { + optionsCheckBoxes.push_back(OptionCheckBox[i]); + connect(OptionCheckBox[i], SIGNAL(toggled(bool)), this, SLOT(firmwareOptionChanged(bool))); + } + initSettings(); + connect(ui->downloadVerCB, SIGNAL(currentIndexChanged(int)), this, SLOT(baseFirmwareChanged())); connect(this, SIGNAL(accepted()), this, SLOT(writeValues())); + #ifndef JOYSTICKS ui->joystickCB->hide(); ui->joystickCB->setDisabled(true); @@ -26,7 +47,8 @@ AppPreferencesDialog::AppPreferencesDialog(QWidget *parent) : ui->joystickChkB->hide(); ui->label_11->hide(); #endif - resize(0,0); + + shrink(); } AppPreferencesDialog::~AppPreferencesDialog() @@ -36,6 +58,8 @@ AppPreferencesDialog::~AppPreferencesDialog() void AppPreferencesDialog::writeValues() { +qDebug() << "writeValues"; + g.autoCheckApp(ui->startupCheck_companion9x->isChecked()); g.autoCheckFw(ui->startupCheck_fw->isChecked()); g.showSplash(ui->showSplash->isChecked()); @@ -69,13 +93,13 @@ void AppPreferencesDialog::writeValues() else g.profile[g.id()].name(ui->profileNameLE->text()); - // If a new radio type has been choosen, several things need to reset - if ( initialRadioType != ui->radioCB->currentIndex()) - { + // If a new fw type has been choosen, several things need to reset + g.cpuId( ui->CPU_ID_LE->text() ); + current_firmware_variant = getFirmwareVariant(); + if (g.profile[g.id()].fwType() != current_firmware_variant.id) { g.profile[g.id()].fwName(""); - g.profile[g.id()].fwType(getDefaultFwType(ui->radioCB->currentIndex())); - current_firmware_variant = GetFirmwareVariant(g.profile[g.id()].fwType()); g.profile[g.id()].initFwVariables(); + g.profile[g.id()].fwType( current_firmware_variant.id ); } } @@ -105,8 +129,10 @@ void AppPreferencesDialog::initSettings() ui->showSplash->setChecked(g.showSplash()); ui->historySize->setValue(g.historySize()); ui->backLightColor->setCurrentIndex(g.backLight()); - if (getRadioType(g.profile[g.id()].fwType())==6) // TODO - NOT AT ALL OK. THERE SHOULD BE A COMMON RADIO DEFINITION. + + if (IS_TARANIS(GetCurrentFirmware()->getBoard())) ui->backLightColor->setEnabled(false); + ui->simuSW->setChecked(g.simuSW()); ui->modelWizard_CB->setChecked(g.useWizard()); ui->libraryPath->setText(g.libDir()); @@ -159,8 +185,7 @@ void AppPreferencesDialog::initSettings() ui->sdPath->setText(g.profile[g.id()].sdPath()); ui->profileNameLE->setText(g.profile[g.id()].name()); ui->SplashFileName->setText(g.profile[g.id()].splashFile()); - initialRadioType = getRadioType(g.profile[g.id()].fwType()); - ui->radioCB->setCurrentIndex(initialRadioType); + displayImage( g.profile[g.id()].splashFile() ); QString hwSettings; @@ -176,6 +201,19 @@ void AppPreferencesDialog::initSettings() } ui->lblGeneralSettings->setText(hwSettings); + + ui->CPU_ID_LE->setText(g.cpuId()); + FirmwareInterface * current_firmware = GetCurrentFirmware(); + + foreach(FirmwareInterface * firmware, firmwares) { + ui->downloadVerCB->addItem(firmware->name, firmware->id); + if (current_firmware == firmware) { + ui->downloadVerCB->setCurrentIndex(ui->downloadVerCB->count() - 1); + } + } + + baseFirmwareChanged(); + firmwareChanged(); } void AppPreferencesDialog::on_libraryPathButton_clicked() @@ -319,5 +357,196 @@ void AppPreferencesDialog::on_clearImageButton_clicked() { } +void AppPreferencesDialog::showVoice(bool show) +{ + if (show) + showVoice(); + else + hideVoice(); +} + +void AppPreferencesDialog::showVoice() +{ + ui->voiceLabel->show(); + ui->voiceCombo->show(); +} + +void AppPreferencesDialog::hideVoice() +{ + ui->voiceLabel->hide(); + ui->voiceCombo->hide(); + QTimer::singleShot(0, this, SLOT(shrink())); +} +void AppPreferencesDialog::baseFirmwareChanged() +{ + QVariant selected_firmware = ui->downloadVerCB->itemData(ui->downloadVerCB->currentIndex()); + voice=NULL; + foreach(FirmwareInterface * firmware, firmwares) { + if (firmware->id == selected_firmware) { + showVoice(firmware->voice); + populateFirmwareOptions(firmware); + break; + } + } + firmwareChanged(); +} + +FirmwareVariant AppPreferencesDialog::getFirmwareVariant() +{ + QVariant selected_firmware = ui->downloadVerCB->itemData(ui->downloadVerCB->currentIndex()); + bool voice=false; + foreach(FirmwareInterface * firmware, firmwares) { + if (firmware->id == selected_firmware) { + QString id = firmware->id; + foreach(QCheckBox *cb, optionsCheckBoxes) { + if (cb->isChecked()) { + if (cb->text()=="voice" && cb->isChecked()) + voice=true; + id += QString("-") + cb->text(); + } + } + if (! firmware->getCapability(MultiLangVoice)) { + if (ui->voiceCombo->count() && (voice || firmware->voice)) + id += QString("-tts") + ui->voiceCombo->currentText(); + } + if (ui->langCombo->count()) + id += QString("-") + ui->langCombo->currentText(); + + return GetFirmwareVariant(id); + } + } + + // Should never occur... + return default_firmware_variant; +} + +void AppPreferencesDialog::firmwareOptionChanged(bool state) +{ + QCheckBox *cb = qobject_cast(sender()); + FirmwareInterface * firmware=NULL; + if (cb && state) { + QVariant selected_firmware = ui->downloadVerCB->itemData(ui->downloadVerCB->currentIndex()); + foreach(firmware, firmwares) { + if (firmware->id == selected_firmware) { + foreach(QList