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
+24 -5
View File
@@ -345,7 +345,16 @@ void check(event_t event, uint8_t curr, const MenuHandlerFunc *menuTab, uint8_t
case EVT_KEY_FIRST(KEY_DOWN):
if (s_editMode>0) break;
do {
#if defined(ROTARY_ENCODER_NAVIGATION)
if (g_eeGeneral.rotEncMode >=
ROTARY_ENCODER_MODE_INVERT_VERT_HORZ_NORM) {
DEC(l_posVert, 0, maxrow);
} else {
INC(l_posVert, 0, maxrow);
}
#else
INC(l_posVert, 0, maxrow);
#endif
} while (CURSOR_NOT_ALLOWED_IN_ROW(l_posVert));
#if defined(ROTARY_ENCODER_NAVIGATION)
@@ -368,12 +377,13 @@ void check(event_t event, uint8_t curr, const MenuHandlerFunc *menuTab, uint8_t
if (l_posHorz > 0) {
l_posHorz--;
break;
}
else if (IS_ROTARY_LEFT(event) && s_editMode == 0) {
} else if (IS_ROTARY_LEFT(event) && s_editMode == 0) {
l_posHorz = 0xff;
}
else {
l_posHorz = maxcol;
} else {
l_posHorz =
g_eeGeneral.rotEncMode == ROTARY_ENCODER_MODE_INVERT_VERT_HORZ_ALT
? 0
: maxcol;
break;
}
#else
@@ -388,7 +398,16 @@ void check(event_t event, uint8_t curr, const MenuHandlerFunc *menuTab, uint8_t
if (s_editMode>0) break;
do {
#if defined(ROTARY_ENCODER_NAVIGATION)
if (g_eeGeneral.rotEncMode >=
ROTARY_ENCODER_MODE_INVERT_VERT_HORZ_NORM) {
INC(l_posVert, 0, maxrow);
} else {
DEC(l_posVert, 0, maxrow);
}
#else
DEC(l_posVert, 0, maxrow);
#endif
} while (CURSOR_NOT_ALLOWED_IN_ROW(l_posVert));
#if defined(ROTARY_ENCODER_NAVIGATION)
+27 -4
View File
@@ -344,7 +344,16 @@ void check(event_t event, uint8_t curr, const MenuHandlerFunc * menuTab, uint8_t
}
do {
#if defined(ROTARY_ENCODER_NAVIGATION)
if (g_eeGeneral.rotEncMode >=
ROTARY_ENCODER_MODE_INVERT_VERT_HORZ_NORM) {
DEC(l_posVert, MENU_FIRST_LINE_EDIT(horTab, horTabMax), rowcount - 1);
} else {
INC(l_posVert, MENU_FIRST_LINE_EDIT(horTab, horTabMax), rowcount - 1);
}
#else
INC(l_posVert, MENU_FIRST_LINE_EDIT(horTab, horTabMax), rowcount-1);
#endif
} while (CURSOR_NOT_ALLOWED_IN_ROW(l_posVert));
s_editMode = 0; // if we go down, we must be in this mode
@@ -365,17 +374,31 @@ void check(event_t event, uint8_t curr, const MenuHandlerFunc * menuTab, uint8_t
DEC(l_posHorz, 0, maxcol);
break;
}
}
else if (l_posHorz > 0) {
} else if (l_posHorz > 0) {
l_posHorz--;
break;
}
else {
} else {
#if defined(ROTARY_ENCODER_NAVIGATION)
l_posHorz =
g_eeGeneral.rotEncMode == ROTARY_ENCODER_MODE_INVERT_VERT_HORZ_ALT
? 0
: 0xff;
#else
l_posHorz = 0xff;
#endif
}
do {
#if defined(ROTARY_ENCODER_NAVIGATION)
if (g_eeGeneral.rotEncMode >=
ROTARY_ENCODER_MODE_INVERT_VERT_HORZ_NORM) {
INC(l_posVert, MENU_FIRST_LINE_EDIT(horTab, horTabMax), rowcount - 1);
} else {
DEC(l_posVert, MENU_FIRST_LINE_EDIT(horTab, horTabMax), rowcount - 1);
}
#else
DEC(l_posVert, MENU_FIRST_LINE_EDIT(horTab, horTabMax), rowcount-1);
#endif
} while (CURSOR_NOT_ALLOWED_IN_ROW(l_posVert));
s_editMode = 0; // if we go up, we must be in this mode
+29 -6
View File
@@ -439,7 +439,16 @@ void check(event_t event, uint8_t curr, const MenuHandlerFunc *menuTab, uint8_t
}
do {
INC(l_posVert, MENU_FIRST_LINE_EDIT(horTab, horTabMax), rowcount-1);
#if defined(ROTARY_ENCODER_NAVIGATION)
if (g_eeGeneral.rotEncMode >=
ROTARY_ENCODER_MODE_INVERT_VERT_HORZ_NORM) {
DEC(l_posVert, MENU_FIRST_LINE_EDIT(horTab, horTabMax), rowcount - 1);
} else {
INC(l_posVert, MENU_FIRST_LINE_EDIT(horTab, horTabMax), rowcount - 1);
}
#else
DEC(l_posVert, MENU_FIRST_LINE_EDIT(horTab, horTabMax), rowcount - 1);
#endif
} while (CURSOR_NOT_ALLOWED_IN_ROW(l_posVert));
s_editMode = 0; // if we go down, we must be in this mode
@@ -458,17 +467,31 @@ void check(event_t event, uint8_t curr, const MenuHandlerFunc *menuTab, uint8_t
DEC(l_posHorz, 0, maxcol);
break;
}
}
else if (l_posHorz > 0) {
} else if (l_posHorz > 0) {
l_posHorz--;
break;
}
else {
} else {
#if defined(ROTARY_ENCODER_NAVIGATION)
l_posHorz =
g_eeGeneral.rotEncMode == ROTARY_ENCODER_MODE_INVERT_VERT_HORZ_ALT
? 0
: 0xff;
#else
l_posHorz = 0xff;
#endif
}
do {
DEC(l_posVert, MENU_FIRST_LINE_EDIT(horTab, horTabMax), rowcount-1);
#if defined(ROTARY_ENCODER_NAVIGATION)
if (g_eeGeneral.rotEncMode >=
ROTARY_ENCODER_MODE_INVERT_VERT_HORZ_NORM) {
INC(l_posVert, MENU_FIRST_LINE_EDIT(horTab, horTabMax), rowcount - 1);
} else {
DEC(l_posVert, MENU_FIRST_LINE_EDIT(horTab, horTabMax), rowcount - 1);
}
#else
DEC(l_posVert, MENU_FIRST_LINE_EDIT(horTab, horTabMax), rowcount - 1);
#endif
} while (CURSOR_NOT_ALLOWED_IN_ROW(l_posVert));
s_editMode = 0; // if we go up, we must be in this mode