From 0f59e9709b9e5ecc8ddc1755785b9c95d60ed923 Mon Sep 17 00:00:00 2001 From: Neil Horne <15316949+elecpower@users.noreply.github.com> Date: Tue, 21 Apr 2026 09:36:48 +1000 Subject: [PATCH] chore(cpn): radio profile settings default options ui (#7308) --- companion/src/apppreferencesdialog.cpp | 44 +- companion/src/apppreferencesdialog.h | 1 + companion/src/apppreferencesdialog.ui | 1074 ++++++++++++------------ 3 files changed, 580 insertions(+), 539 deletions(-) diff --git a/companion/src/apppreferencesdialog.cpp b/companion/src/apppreferencesdialog.cpp index 828f753ac..a6d8c4cb8 100644 --- a/companion/src/apppreferencesdialog.cpp +++ b/companion/src/apppreferencesdialog.cpp @@ -335,10 +335,6 @@ void AppPreferencesDialog::initSettings() ui->externalModuleSizeCB->setCurrentIndex(ui->externalModuleSizeCB->findData(profile.externalModuleSize())); panelItemModels->getItemModel(FIM_TEMPLATESETUP)->setFilterFlags(Boards::isAir() ? GeneralSettings::RadioTypeContextAir : GeneralSettings::RadioTypeContextSurface); - ui->channelorderCB->setModel(panelItemModels->getItemModel(FIM_TEMPLATESETUP)); - ui->channelorderCB->setCurrentIndex(ui->channelorderCB->findData(profile.channelOrder())); - ui->stickmodeCB->setModel(GeneralSettings::stickModeItemModel()); - ui->stickmodeCB->setCurrentIndex(ui->stickmodeCB->findData(profile.defaultMode())); ui->sdPath->setText(profile.sdPath()); ui->profileBackupPath->setText(profile.pBackupDir()); @@ -358,28 +354,36 @@ void AppPreferencesDialog::initSettings() ui->profileBackupEnable->setEnabled(false); } - if (Boards::isSurface()) { - ui->stickmodeLabel->hide(); - ui->stickmodeCB->hide(); - } - ui->profileNameLE->setText(profile.name()); QString hwSettings; if (profile.generalSettings().isEmpty()) { - hwSettings = tr("EMPTY: No radio settings stored in profile"); + hwSettings = tr("No backup available for this profile"); } else { QString str = profile.timeStamp(); if (str.isEmpty()) - hwSettings = tr("AVAILABLE: Radio settings of unknown age"); + hwSettings = tr("Backup available of unknown age"); else - hwSettings = tr("AVAILABLE: Radio settings stored %1").arg(str); + hwSettings = tr("Backup available dated %1").arg(str); } + ui->stickmodeCB->setModel(GeneralSettings::stickModeItemModel()); + ui->stickmodeCB->setCurrentIndex(ui->stickmodeCB->findData(profile.defaultMode())); + + if (Boards::isSurface()) { + ui->stickmodeLabel->hide(); + ui->stickmodeCB->hide(); + } + + ui->channelorderCB->setModel(panelItemModels->getItemModel(FIM_TEMPLATESETUP)); + ui->channelorderCB->setCurrentIndex(ui->channelorderCB->findData(profile.channelOrder())); + ui->chkUseSavedSettingsProfile->setChecked(profile.useSavedSettings()); ui->lblGeneralSettings->setText(hwSettings); + on_chkUseSavedSettingsProfile_stateChanged(); + ui->chkPromptSDSync->setChecked(profile.runSDSync()); ui->lblRadioColorSample->setPalette(QPalette(profile.radioSimCaseColor())); ui->chkSimBtnClickedUseOSTheme->setChecked(profile.simBtnClickedUseOSTheme()); @@ -919,6 +923,7 @@ void AppPreferencesDialog::onProfileBackupPathEditingFinished() ui->profileBackupEnable->setEnabled(false); } } + void AppPreferencesDialog::on_chkSimBtnClickedUseOSTheme_stateChanged() { if (ui->chkSimBtnClickedUseOSTheme->isChecked()) { @@ -937,3 +942,18 @@ void AppPreferencesDialog::on_btnSimBtnClickedColor_clicked() ui->lblSimBtnClickedColorSample->setPalette(QPalette(color)); ui->lblSimBtnClickedColorSample->repaint(); } + +void AppPreferencesDialog::on_chkUseSavedSettingsProfile_stateChanged() +{ + if (ui->chkUseSavedSettingsProfile->isChecked() && !g.currentProfile().generalSettings().isEmpty()) { + ui->stickmodeLabel->setEnabled(false); + ui->stickmodeCB->setEnabled(false); + ui->channelorderLabel->setEnabled(false); + ui->channelorderCB->setEnabled(false); + } else { + ui->stickmodeLabel->setEnabled(true); + ui->stickmodeCB->setEnabled(true); + ui->channelorderLabel->setEnabled(true); + ui->channelorderCB->setEnabled(true); + } +} diff --git a/companion/src/apppreferencesdialog.h b/companion/src/apppreferencesdialog.h index f6c8dbf85..483967ed7 100644 --- a/companion/src/apppreferencesdialog.h +++ b/companion/src/apppreferencesdialog.h @@ -84,6 +84,7 @@ class AppPreferencesDialog : public QDialog void on_btnSimBtnClickedColor_clicked(); void onBackupPathEditingFinished(); void onProfileBackupPathEditingFinished(); + void on_chkUseSavedSettingsProfile_stateChanged(); private: void initSettings(); diff --git a/companion/src/apppreferencesdialog.ui b/companion/src/apppreferencesdialog.ui index 44b50856a..8340a5537 100644 --- a/companion/src/apppreferencesdialog.ui +++ b/companion/src/apppreferencesdialog.ui @@ -26,17 +26,7 @@ true - - - - Qt::Orientation::Horizontal - - - QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok - - - - + @@ -52,307 +42,42 @@ Radio Profile - - - - true - - - - 0 - 0 - - - - Radio Settings Label - - - - - - - - 16777215 - 16777215 - - - - Mode selection: - -Mode 1: - Left stick: Elevator, Rudder - Right stick: Throttle, Aileron - -Mode 2: - Left stick: Throttle, Rudder - Right stick: Elevator, Aileron - -Mode 3: - Left stick: Elevator, Aileron - Right stick: Throttle, Rudder - -Mode 4: - Left stick: Throttle, Aileron - Right stick: Elevator, Rudder - - - - - 1 - - - - Mode 1 (RUD ELE THR AIL) - - - - - Mode 2 (RUD THR ELE AIL) - - - - - Mode 3 (AIL ELE THR RUD) - - - - - Mode 4 (AIL THR ELE RUD) - - - - - - - - - 0 - 0 - - - - Language - - - Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignVCenter - - - - - - - - 0 - 0 - - - - Default Channel Order - - - Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignVCenter - - - - - - - 0 - 0 - - - - if set, will override general backup enable - - - Prompt to backup current firmware before writing firmware - - + + + + + Operating System theme + + + true + + + + + + + true + + + QFrame::Shape::Box + + + + + + + + + + + + + + - - - - - 0 - 0 - - - - - true - - - - Radio Type - - - Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignVCenter - - - - - - - - 0 - 0 - - - - Prompt to write firmware to radio after update - - - - - - - - 0 - 0 - - - - <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> - - - 0 - - - - R E T A - - - - - R E A T - - - - - R T E A - - - - - R T A E - - - - - R A E T - - - - - R A T E - - - - - E R T A - - - - - E R A T - - - - - E T R A - - - - - E T A R - - - - - E A R T - - - - - E A T R - - - - - T R E A - - - - - T R A E - - - - - T E R A - - - - - T E A R - - - - - T A R E - - - - - T A E R - - - - - A R E T - - - - - A R T E - - - - - A E R T - - - - - A E T R - - - - - A T R E - - - - - A T E R - - - - - - - - Select Folder - - - - - - - External Module - - + + @@ -372,44 +97,31 @@ Mode 4: - - - - The profile specific folder, if set, will override general Backup folder - - - Select Folder - - - - - + + - + 0 0 - - Options - - - Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop + + Qt::Orientation::Horizontal - - + + + + + 0 + 0 + + - Qt::Orientation::Vertical + Qt::Orientation::Horizontal - - - 20 - 5 - - - + @@ -424,10 +136,35 @@ Mode 4: - - + + - Simulator Button Clicked Colour + Default Int. Module + + + + + + + Prompt to run SD Sync after update + + + + + + + + 0 + 0 + + + + + true + + + + Other Settings @@ -444,25 +181,36 @@ Mode 4: - - - - If set it will override the application general setting - - - false - - - true - - - - - - - Prompt to run SD Sync after update - - + + + + + + true + + + QFrame::Shape::Box + + + + + + + + + + + + + + + + + + + + + @@ -494,8 +242,63 @@ Mode 4: - - + + + + true + + + + + + + + true + + + + Updates + + + + + + + true + + + + + + false + + + true + + + + + + + External Module + + + + + + + + 0 + 0 + + + + if set, will override general backup enable + + + Prompt to backup current firmware before writing firmware + + @@ -513,6 +316,146 @@ Mode 4: + + + + Qt::Orientation::Vertical + + + + 20 + 5 + + + + + + + + + 0 + 0 + + + + Options + + + Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop + + + + + + + Select Folder + + + + + + + + 0 + 0 + + + + Prompt to write firmware to radio after update + + + + + + + true + + + + 0 + 0 + + + + Radio Settings Label + + + + + + + Use backup for new models and settings files + + + + + + + Simulator Radio Case Colour + + + + + + + false + + + Select Colour + + + + + + + Select Colour + + + + + + + The profile specific folder, if set, will override general Backup folder + + + Select Folder + + + + + + + + 0 + 0 + + + + + + + + + + + + 0 + 0 + + + + + true + + + + Radio Type + + + Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignVCenter + + + @@ -629,81 +572,6 @@ Mode 4: - - - - - - - true - - - - - - false - - - true - - - - - - - - 0 - 0 - - - - - true - - - - Other Settings - - - - - - - - 0 - 0 - - - - Qt::Orientation::Horizontal - - - - - - - - true - - - - Updates - - - - - - - - 0 - 0 - - - - Default Stick Mode - - - @@ -720,97 +588,116 @@ Mode 4: - - - - Default Int. Module + + + + If set it will override the application general setting - - - - - - - - - - 0 - 0 - + + false - - Qt::Orientation::Horizontal - - - - - - - Simulator Radio Case Colour - - - - - - - Use settings backup for new models and settings files - - - - - - - - 0 - 0 - - - - - - - + true - - - - false + + + + + 0 + 0 + - Select Colour + Language + + + Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignVCenter - - + + + + + + + Simulator Button Clicked Colour + + + + + - - - Operating System theme + + + + 0 + 0 + - - true + + Default Stick Mode - - - true + + + + 16777215 + 16777215 + - - QFrame::Shape::Box + + Mode selection: + +Mode 1: + Left stick: Elevator, Rudder + Right stick: Throttle, Aileron + +Mode 2: + Left stick: Throttle, Rudder + Right stick: Elevator, Aileron + +Mode 3: + Left stick: Elevator, Aileron + Right stick: Throttle, Rudder + +Mode 4: + Left stick: Throttle, Aileron + Right stick: Elevator, Rudder + + - - + + 1 + + + Mode 1 (RUD ELE THR AIL) + + + + + Mode 2 (RUD THR ELE AIL) + + + + + Mode 3 (AIL ELE THR RUD) + + + + + Mode 4 (AIL THR ELE RUD) + + - + @@ -818,30 +705,162 @@ Mode 4: - - + + - - - true - - - QFrame::Shape::Box + + + + 0 + 0 + - + Default Channel Order + + + Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignVCenter - - - + + + + 0 + 0 + + + <html><head/><body><p>Channel order</p><p><br/></p><p>Defines the order of the default mixes created on a new model.</p></body></html> + + + 0 + + + + R E T A + + + + + R E A T + + + + + R T E A + + + + + R T A E + + + + + R A E T + + + + + R A T E + + + + + E R T A + + + + + E R A T + + + + + E T R A + + + + + E T A R + + + + + E A R T + + + + + E A T R + + + + + T R E A + + + + + T R A E + + + + + T E R A + + + + + T E A R + + + + + T A R E + + + + + T A E R + + + + + A R E T + + + + + A R T E + + + + + A E R T + + + + + A E T R + + + + + A T R E + + + + + A T E R + + - + @@ -849,13 +868,6 @@ Mode 4: - - - - Select Colour - - - @@ -1799,6 +1811,16 @@ Mode 4: + + + + Qt::Orientation::Horizontal + + + QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok + + + @@ -1808,8 +1830,6 @@ Mode 4: sdPathButton profileBackupPath profileBackupPathButton - stickmodeCB - channelorderCB burnFirmware splashincludeCB snapshotPath