feat: More rotary encoder options for B&W screens (see #2045)

* First build

* Fix X9

* Update api_general.cpp

* Update translations.h

* clean up translations

* fix: B&W option handling, remove magic numbers, cleanup
- Remove references to invertRotary, change to RotEncDir or similar
- Add compatabilty importing to companion, firmware
- Rename Lua API call
- Move magic numbers to enum
- Improve B&W option handling so it doesn't apply changes while in menu

* chore: yaml regen

* fix: Add missing guards for X9D/X9D+

* fix: Wrong enum name in simu

* fix(cpn): Use correct names for UI elements

* fix: Translations

* fix: Allow `rotEncMode` in all yaml due to x9d var
Of the three X9D variants, the X9D+2019 is the only one that
has a rotary encoder as standard. However, as the base config
file is for the X9D, this meant it wasn't reading or writing the
config value. Rather than add a seperate config file for it for
a single variable, simple to just allow it across all targets.

* fix: Companion string, change colorlcd to `Choice`

Co-authored-by: Peter Feerick <peter.feerick@gmail.com>
This commit is contained in:
breadoven
2022-08-04 20:06:17 +10:00
committed by GitHub
co-authored by Peter Feerick
parent 5752cf4061
commit 62692dba6a
53 changed files with 435 additions and 131 deletions
+25 -6
View File
@@ -126,11 +126,11 @@ ui(new Ui::GeneralSetup)
}
if (!firmware->getCapability(RotaryEncoderNavigation)) {
ui->invertRotary_CB->hide();
ui->invertRotary_label->hide();
ui->rotEncMode_CB->hide();
ui->rotEncMode_label->hide();
}
else {
ui->invertRotary_CB->setChecked(generalSettings.rotEncDirection);
populateRotEncModeCB();
}
if (!firmware->getCapability(HasPxxCountry)) {
@@ -483,10 +483,29 @@ void GeneralSetupPanel::on_faimode_CB_stateChanged(int)
emit modified();
}
void GeneralSetupPanel::on_invertRotary_CB_stateChanged(int)
void GeneralSetupPanel::populateRotEncModeCB()
{
generalSettings.rotEncDirection = ui->invertRotary_CB->isChecked();
emit modified();
QComboBox * b = ui->rotEncMode_CB;
QString strings[] = { tr("Normal"), tr("Inverted"), tr("Vertical Inverted, Horizontal Normal"), tr("Vertical Inverted, Horizontal Alternate") };
int itemCount = 4;
if (Boards::getCapability(firmware->getBoard(), Board::HasColorLcd)) {
itemCount = 2;
}
b->clear();
for (uint8_t i=0; i < itemCount; i++) {
b->addItem(strings[i], 0);
}
b->setCurrentIndex(generalSettings.rotEncMode);
}
void GeneralSetupPanel::on_rotEncMode_CB_currentIndexChanged(int index)
{
if (!lock) {
generalSettings.rotEncMode = index;
emit modified();
}
}
void GeneralSetupPanel::on_speakerPitchSB_editingFinished()