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