chore(bw): cleanup and consolidate navigation code (#5896)

Co-authored-by: philmoz <phil.a.mitchell@gmail.com>
This commit is contained in:
philmoz
2025-03-19 11:01:16 +10:00
committed by GitHub
co-authored by philmoz
parent 6973f07e07
commit 62a935bf84
19 changed files with 132 additions and 208 deletions
-14
View File
@@ -103,20 +103,6 @@ enum RotaryEncoderMode {
#include "myeeprom.h"
#include "curves.h"
// Define navigation type based on available keys
#if LCD_W == 212
#define NAVIGATION_X9D
#elif defined(KEYS_GPIO_REG_SHIFT)
#define NAVIGATION_XLITE
#elif defined(KEYS_GPIO_REG_LEFT)
#define NAVIGATION_9X
#elif defined(KEYS_GPIO_REG_PAGEUP) && defined(KEYS_GPIO_REG_TELE)
#define NAVIGATION_X7
#define NAVIGATION_X7_TX12
#else
#define NAVIGATION_X7
#endif
void memswap(void * a, void * b, uint8_t size);
// TODO: move these config check macros somewhere else
-8
View File
@@ -30,14 +30,6 @@
#define MENUS_SCROLLBAR_WIDTH 0
#if defined(NAVIGATION_X7)
#define HEADER_LINE 0
#define HEADER_LINE_COLUMNS
#else
#define HEADER_LINE 1
#define HEADER_LINE_COLUMNS 0,
#endif
#define NUM_BODY_LINES (LCD_LINES-1)
#define TEXT_VIEWER_LINES NUM_BODY_LINES
#define MENU_HEADER_HEIGHT FH
+6 -20
View File
@@ -147,26 +147,12 @@ void menuModelCurveOne(event_t event)
drawCheckBox(7 * FW, 7 * FH + 1, crv.smooth, menuVerticalPosition == 3 ? INVERS : 0);
if (menuVerticalPosition==3) crv.smooth = checkIncDecModel(event, crv.smooth, 0, 1);
switch (event) {
case EVT_ENTRY:
break;
case EVT_KEY_LONG(KEY_ENTER):
if (menuVerticalPosition > 1) {
POPUP_MENU_START(onCurveOneMenu, 3, STR_CURVE_PRESET, STR_MIRROR, STR_CLEAR);
}
break;
#if defined(NAVIGATION_XLITE)
case EVT_KEY_FIRST(KEY_ENTER):
if (!keysGetState(KEY_SHIFT))
break;
#else
case EVT_KEY_BREAK(KEY_MODEL):
case EVT_KEY_BREAK(KEY_MENU):
#endif
pushMenu(menuChannelsView);
break;
if (event == EVT_KEY_LONG(KEY_ENTER)) {
if (menuVerticalPosition > 1) {
POPUP_MENU_START(onCurveOneMenu, 3, STR_CURVE_PRESET, STR_MIRROR, STR_CLEAR);
}
} else if (EVT_KEY_OPEN_CHAN_VIEW(event)) {
pushMenu(menuChannelsView);
}
drawCurve();
+2 -7
View File
@@ -57,15 +57,10 @@ uint8_t FM_ROW(uint8_t value)
void menuModelExpoOne(event_t event)
{
#if defined(NAVIGATION_XLITE)
if (event == EVT_KEY_FIRST(KEY_ENTER) && keysGetState(KEY_SHIFT)) {
if (EVT_KEY_OPEN_CHAN_VIEW(event)) {
pushMenu(menuChannelsView);
}
#else
if (event == EVT_KEY_BREAK(KEY_MODEL) || event == EVT_KEY_BREAK(KEY_MENU)) {
pushMenu(menuChannelsView);
}
#endif
ExpoData * ed = expoAddress(s_currIdx);
drawSource(PSIZE(TR_MENUINPUTS)*FW+FW, 0, MIXSRC_FIRST_INPUT+ed->chn, 0);
+2 -7
View File
@@ -93,15 +93,10 @@ void drawOffsetBar(uint8_t x, uint8_t y, MixData * md)
void menuModelMixOne(event_t event)
{
#if defined(NAVIGATION_XLITE)
if (event == EVT_KEY_FIRST(KEY_ENTER) && keysGetState(KEY_SHIFT)) {
if (EVT_KEY_OPEN_CHAN_VIEW(event)) {
pushMenu(menuChannelsView);
}
#else
if (event == EVT_KEY_BREAK(KEY_MODEL) || event == EVT_KEY_BREAK(KEY_MENU)) {
pushMenu(menuChannelsView);
}
#endif
MixData * md2 = mixAddress(s_currIdx) ;
putsChn(PSIZE(TR_MIXES)*FW+FW, 0, md2->destCh+1,0);
-27
View File
@@ -25,33 +25,6 @@ constexpr coord_t CHANNEL_NAME_OFFSET = 0;
constexpr coord_t CHANNEL_VALUE_OFFSET = CHANNEL_NAME_OFFSET + 41;
constexpr coord_t CHANNEL_BAR_WIDTH = 70;
#if defined(RADIO_T8) || defined(RADIO_COMMANDO8)
#define EVT_KEY_PREVIOUS_VIEW EVT_KEY_BREAK(KEY_PAGEUP)
#define EVT_KEY_NEXT_VIEW EVT_KEY_BREAK(KEY_PAGEDN)
#define EVT_KEY_NEXT_PAGE EVT_KEY_BREAK(KEY_PLUS)
#define EVT_KEY_PREVIOUS_PAGE EVT_KEY_BREAK(KEY_MINUS)
#elif defined(NAVIGATION_X7_TX12)
#define EVT_KEY_PREVIOUS_VIEW EVT_KEY_BREAK(KEY_PAGEUP)
#define EVT_KEY_NEXT_VIEW EVT_KEY_BREAK(KEY_PAGEDN)
#define EVT_KEY_NEXT_PAGE EVT_ROTARY_RIGHT
#define EVT_KEY_PREVIOUS_PAGE EVT_ROTARY_LEFT
#elif defined(NAVIGATION_X7)
#define EVT_KEY_PREVIOUS_VIEW EVT_KEY_BREAK(KEY_PAGEUP)
#define EVT_KEY_NEXT_VIEW EVT_KEY_BREAK(KEY_PAGEDN)
#define EVT_KEY_NEXT_PAGE EVT_ROTARY_RIGHT
#define EVT_KEY_PREVIOUS_PAGE EVT_ROTARY_LEFT
#elif defined(NAVIGATION_XLITE)
#define EVT_KEY_PREVIOUS_VIEW EVT_KEY_BREAK(KEY_UP)
#define EVT_KEY_NEXT_VIEW EVT_KEY_BREAK(KEY_DOWN)
#define EVT_KEY_NEXT_PAGE EVT_KEY_BREAK(KEY_RIGHT)
#define EVT_KEY_PREVIOUS_PAGE EVT_KEY_BREAK(KEY_LEFT)
#else
#define EVT_KEY_PREVIOUS_VIEW EVT_KEY_BREAK(KEY_UP)
#define EVT_KEY_NEXT_VIEW EVT_KEY_BREAK(KEY_DOWN)
#define EVT_KEY_NEXT_PAGE EVT_KEY_BREAK(KEY_RIGHT)
#define EVT_KEY_PREVIOUS_PAGE EVT_KEY_BREAK(KEY_LEFT)
#endif
static bool mixersView = false;
void menuChannelsViewCommon(event_t event)
-47
View File
@@ -301,42 +301,6 @@ void displayBattVoltage()
#define displayVoltageOrAlarm() displayBattVoltage()
#define EVT_KEY_CONTEXT_MENU EVT_KEY_LONG(KEY_ENTER)
#if defined(RADIO_T8) || defined(RADIO_COMMANDO8)
#define EVT_KEY_PREVIOUS_VIEW EVT_KEY_BREAK(KEY_PAGEUP)
#define EVT_KEY_NEXT_VIEW EVT_KEY_BREAK(KEY_PAGEDN)
#define EVT_KEY_NEXT_PAGE EVT_KEY_BREAK(KEY_PLUS)
#define EVT_KEY_PREVIOUS_PAGE EVT_KEY_BREAK(KEY_MINUS)
#define EVT_KEY_MODEL_MENU EVT_KEY_BREAK(KEY_MODEL)
#define EVT_KEY_GENERAL_MENU EVT_KEY_BREAK(KEY_SYS)
#define EVT_KEY_TELEMETRY EVT_KEY_LONG(KEY_PAGEUP)
#elif defined(NAVIGATION_X7_TX12)
#define EVT_KEY_PREVIOUS_VIEW EVT_KEY_BREAK(KEY_PAGEUP)
#define EVT_KEY_NEXT_VIEW EVT_KEY_BREAK(KEY_PAGEDN)
#define EVT_KEY_NEXT_PAGE EVT_ROTARY_RIGHT
#define EVT_KEY_PREVIOUS_PAGE EVT_ROTARY_LEFT
#define EVT_KEY_MODEL_MENU EVT_KEY_BREAK(KEY_MODEL)
#define EVT_KEY_GENERAL_MENU EVT_KEY_BREAK(KEY_SYS)
#define EVT_KEY_TELEMETRY EVT_KEY_BREAK(KEY_TELE)
#elif defined(NAVIGATION_X7) || defined(NAVIGATION_TBS)
#define EVT_KEY_NEXT_VIEW EVT_KEY_BREAK(KEY_PAGEDN)
#define EVT_KEY_NEXT_PAGE EVT_ROTARY_RIGHT
#define EVT_KEY_PREVIOUS_PAGE EVT_ROTARY_LEFT
#define EVT_KEY_MODEL_MENU EVT_KEY_BREAK(KEY_MENU)
#define EVT_KEY_GENERAL_MENU EVT_KEY_LONG(KEY_MENU)
#define EVT_KEY_TELEMETRY EVT_KEY_BREAK(KEY_PAGEUP)
#else
#define EVT_KEY_PREVIOUS_VIEW EVT_KEY_BREAK(KEY_UP)
#define EVT_KEY_NEXT_VIEW EVT_KEY_BREAK(KEY_DOWN)
#define EVT_KEY_NEXT_PAGE EVT_KEY_BREAK(KEY_RIGHT)
#define EVT_KEY_PREVIOUS_PAGE EVT_KEY_BREAK(KEY_LEFT)
#define EVT_KEY_MODEL_MENU EVT_KEY_LONG(KEY_RIGHT)
#define EVT_KEY_GENERAL_MENU EVT_KEY_LONG(KEY_LEFT)
#define EVT_KEY_TELEMETRY EVT_KEY_LONG(KEY_DOWN)
#define EVT_KEY_STATISTICS EVT_KEY_LONG(KEY_UP)
#endif
void onMainViewMenu(const char * result)
{
if (result == STR_RESET_TIMER1) {
@@ -668,14 +632,3 @@ void menuMainView(event_t event)
#endif
#endif
}
#undef EVT_KEY_CONTEXT_MENU
#undef EVT_KEY_PREVIOUS_VIEW
#undef EVT_KEY_NEXT_VIEW
#undef EVT_KEY_NEXT_PAGE
#undef EVT_KEY_PREVIOUS_PAGE
#undef EVT_KEY_MODEL_MENU
#undef EVT_KEY_GENERAL_MENU
#undef EVT_KEY_LAST_MENU
#undef EVT_KEY_TELEMETRY
#undef EVT_KEY_STATISTICS
-3
View File
@@ -29,9 +29,6 @@
#include "navigation/navigation.h"
#include "common/stdlcd/draw_functions.h"
#define HEADER_LINE 0
#define HEADER_LINE_COLUMNS
#define NUM_BODY_LINES (LCD_LINES-1)
#define TEXT_VIEWER_LINES NUM_BODY_LINES
#define MENU_HEADER_HEIGHT FH
+5 -5
View File
@@ -471,22 +471,22 @@ void menuMainView(event_t event)
LOAD_MODEL_BITMAP();
break;
case EVT_KEY_LONG(KEY_ENTER):
case EVT_KEY_CONTEXT_MENU:
if (modelHasNotes()) {
POPUP_MENU_ADD_ITEM(STR_VIEW_NOTES);
}
POPUP_MENU_START(onMainViewMenu, 3, STR_RESET_SUBMENU, STR_STATISTICS, STR_ABOUT_US);
break;
case EVT_KEY_BREAK(KEY_MENU):
case EVT_KEY_MODEL_MENU:
pushMenu(menuModelSelect);
break;
case EVT_KEY_LONG(KEY_MENU):
case EVT_KEY_GENERAL_MENU:
pushMenu(menuTabGeneral[0].menuFunc);
break;
case EVT_KEY_BREAK(KEY_PAGEDN):
case EVT_KEY_NEXT_VIEW:
storageDirty(EE_MODEL);
g_model.view += 1;
if (g_model.view >= VIEW_COUNT) {
@@ -495,7 +495,7 @@ void menuMainView(event_t event)
}
break;
case EVT_KEY_BREAK(KEY_PAGEUP):
case EVT_KEY_TELEMETRY:
chainMenu(menuViewTelemetry);
break;
+6 -18
View File
@@ -211,7 +211,7 @@ void editName(coord_t x, coord_t y, char* name, uint8_t size, event_t event,
s_editMode = 0;
break;
#if defined(NAVIGATION_XLITE) || defined(NAVIGATION_9X)
#if defined(HAS_LEFT_RIGHT_NAV_KEYS)
case EVT_KEY_BREAK(KEY_LEFT):
if (cur > 0)
cur--;
@@ -223,33 +223,21 @@ void editName(coord_t x, coord_t y, char* name, uint8_t size, event_t event,
break;
#endif
#if defined(NAVIGATION_XLITE)
case EVT_KEY_BREAK(KEY_SHIFT):
#elif defined(NAVIGATION_9X)
case EVT_KEY_LONG(KEY_LEFT):
case EVT_KEY_LONG(KEY_RIGHT):
#else
case EVT_KEY_LONG(KEY_ENTER):
#endif
killEvents(event);
#if !defined(NAVIGATION_XLITE)
if (v == ' ') {
if ((event != EVT_KEY_BREAK(KEY_SHIFT)) && v == ' ') {
s_editMode = 0;
break;
}
else
#endif
if (v >= 'A' && v <= 'Z') {
v = 'a' + v - 'A'; // toggle case
}
else if (v >= 'a' && v <= 'z') {
v = 'A' + v - 'a'; // toggle case
} else if (isupper(v)) {
v = tolower(v); // toggle case
} else if (islower(v)) {
v = toupper(v); // toggle case
}
#if defined(NAVIGATION_9X)
if (event==EVT_KEY_LONG(KEY_LEFT))
#endif
break;
}
@@ -50,15 +50,10 @@ enum USBJFields {
void menuModelUSBJoystickOne(event_t event)
{
#if defined(NAVIGATION_XLITE)
if (event == EVT_KEY_FIRST(KEY_ENTER) && keysGetState(KEY_SHIFT)) {
if (EVT_KEY_OPEN_CHAN_VIEW(event)) {
pushMenu(menuChannelsView);
}
#else
if (event == EVT_KEY_BREAK(KEY_MODEL) || event == EVT_KEY_BREAK(KEY_MENU)) {
pushMenu(menuChannelsView);
}
#endif
USBJoystickChData * cch = usbJChAddress(s_currIdx);
putsChn(12*FW, 0, s_currIdx+1, 0);
lcdDrawNumber(20*FW, 0, channelOutputs[s_currIdx], RIGHT);
@@ -273,13 +273,13 @@ void onUpdateReceiverSelection(const char * result)
void menuRadioSdManager(event_t _event)
{
#if defined(NAVIGATION_X9D)
#if LCD_DEPTH > 1
int lastPos = menuVerticalPosition;
#endif
if (_event == EVT_ENTRY) {
f_chdir(ROOT_PATH);
#if defined(NAVIGATION_X9D)
#if LCD_DEPTH > 1
lastPos = -1;
#endif
}
+2 -22
View File
@@ -32,23 +32,6 @@ enum NavigationDirection {
#define decrTelemetryScreen() direction = NAVIGATION_DIRECTION_UP
#define incrTelemetryScreen() direction = NAVIGATION_DIRECTION_DOWN
#if defined(NAVIGATION_XLITE)
#define EVT_KEY_PREVIOUS_VIEW(evt) (evt == EVT_KEY_LONG(KEY_LEFT) && keysGetState(KEY_SHIFT))
#define EVT_KEY_NEXT_VIEW(evt) (evt == EVT_KEY_LONG(KEY_RIGHT) && keysGetState(KEY_SHIFT))
#elif defined(KEYS_GPIO_REG_PAGEDN)
#define EVT_KEY_PREVIOUS_VIEW(evt) (evt == EVT_KEY_FIRST(KEY_PAGEUP))
#define EVT_KEY_NEXT_VIEW(evt) (evt == EVT_KEY_FIRST(KEY_PAGEDN))
#elif defined(NAVIGATION_X7) || defined(NAVIGATION_X9D)
#define EVT_KEY_PREVIOUS_VIEW(evt) (evt == EVT_KEY_BREAK(KEY_PAGEUP))
#define EVT_KEY_NEXT_VIEW(evt) (evt == EVT_KEY_BREAK(KEY_PAGEDN))
#elif defined(NAVIGATION_9X)
#define EVT_KEY_PREVIOUS_VIEW(evt) (evt == EVT_KEY_LONG(KEY_UP))
#define EVT_KEY_NEXT_VIEW(evt) (evt == EVT_KEY_LONG(KEY_DOWN))
#else
#define EVT_KEY_PREVIOUS_VIEW(evt) (evt == EVT_KEY_FIRST(KEY_UP))
#define EVT_KEY_NEXT_VIEW(evt) (evt == EVT_KEY_FIRST(KEY_DOWN))
#endif
void menuViewTelemetry(event_t event)
{
enum NavigationDirection direction = NAVIGATION_DIRECTION_NONE;
@@ -61,11 +44,11 @@ void menuViewTelemetry(event_t event)
chainMenu(menuMainView);
}
#endif
else if (EVT_KEY_PREVIOUS_VIEW(event)) {
else if (EVT_KEY_PREVIOUS_TELEM_VIEW(event)) {
killEvents(event);
decrTelemetryScreen();
}
else if (EVT_KEY_NEXT_VIEW(event)) {
else if (EVT_KEY_NEXT_TELEM_VIEW(event)) {
killEvents(event);
incrTelemetryScreen();
}
@@ -109,6 +92,3 @@ void showTelemScreen(uint8_t index)
}
}
}
#undef EVT_KEY_PREVIOUS_VIEW
#undef EVT_KEY_NEXT_VIEW
-15
View File
@@ -1359,21 +1359,6 @@ void setPotType(int index, int value)
g_eeGeneral.potsConfig = bfSet<potconfig_t>(g_eeGeneral.potsConfig, value, (POT_CFG_BITS * index), POT_CFG_TYPE_BITS);
}
#if defined(NAVIGATION_X7) || defined(NAVIGATION_X9D)
uint8_t MENU_FIRST_LINE_EDIT(const uint8_t * horTab, uint8_t horTabMax)
{
if (horTab) {
uint8_t result = 0;
while (result < horTabMax && horTab[result] >= HIDDEN_ROW)
++result;
return result;
}
else {
return 0;
}
}
#endif
uint8_t MODULE_BIND_ROWS(int moduleIdx)
{
if (isModuleELRS(moduleIdx) && CRSF_ELRS_MIN_VER(moduleIdx, 3, 4))
-4
View File
@@ -37,10 +37,6 @@
#define CASE_ROTARY_ENCODER(x)
#endif
#if defined(NAVIGATION_X7) || defined(NAVIGATION_X9D)
extern uint8_t MENU_FIRST_LINE_EDIT(const uint8_t * horTab, uint8_t horTabMax);
#endif
#if defined(LIBOPENUI)
typedef std::function<bool(int)> IsValueAvailable;
#else
+90
View File
@@ -21,6 +21,96 @@
#pragma once
// Define navigation type based on available keys
#if LCD_W == 212
#define NAVIGATION_X9D
#elif defined(KEYS_GPIO_REG_SHIFT)
#define NAVIGATION_XLITE
#elif defined(KEYS_GPIO_REG_LEFT)
#define NAVIGATION_9X
#elif defined(KEYS_GPIO_REG_PAGEUP) && defined(KEYS_GPIO_REG_TELE)
#define NAVIGATION_X7
#define NAVIGATION_X7_TX12
#else
#define NAVIGATION_X7
#endif
#if defined(NAVIGATION_X7) || defined(NAVIGATION_X9D)
#define HEADER_LINE 0
#define HEADER_LINE_COLUMNS
#else
#define HEADER_LINE 1
#define HEADER_LINE_COLUMNS 0,
#endif
// Main View and Channel Monitor view navigation mapping
#define EVT_KEY_CONTEXT_MENU EVT_KEY_LONG(KEY_ENTER)
#if defined(RADIO_T8) || defined(RADIO_COMMANDO8)
#define EVT_KEY_PREVIOUS_VIEW EVT_KEY_BREAK(KEY_PAGEUP)
#define EVT_KEY_NEXT_VIEW EVT_KEY_BREAK(KEY_PAGEDN)
#define EVT_KEY_NEXT_PAGE EVT_KEY_BREAK(KEY_PLUS)
#define EVT_KEY_PREVIOUS_PAGE EVT_KEY_BREAK(KEY_MINUS)
#define EVT_KEY_MODEL_MENU EVT_KEY_BREAK(KEY_MODEL)
#define EVT_KEY_GENERAL_MENU EVT_KEY_BREAK(KEY_SYS)
#define EVT_KEY_TELEMETRY EVT_KEY_LONG(KEY_PAGEUP)
#elif defined(NAVIGATION_X7_TX12)
#define EVT_KEY_PREVIOUS_VIEW EVT_KEY_BREAK(KEY_PAGEUP)
#define EVT_KEY_NEXT_VIEW EVT_KEY_BREAK(KEY_PAGEDN)
#define EVT_KEY_NEXT_PAGE EVT_ROTARY_RIGHT
#define EVT_KEY_PREVIOUS_PAGE EVT_ROTARY_LEFT
#define EVT_KEY_MODEL_MENU EVT_KEY_BREAK(KEY_MODEL)
#define EVT_KEY_GENERAL_MENU EVT_KEY_BREAK(KEY_SYS)
#define EVT_KEY_TELEMETRY EVT_KEY_BREAK(KEY_TELE)
#elif defined(NAVIGATION_X7) || defined(NAVIGATION_X9D)
#define EVT_KEY_NEXT_VIEW EVT_KEY_BREAK(KEY_PAGEDN)
#define EVT_KEY_NEXT_PAGE EVT_ROTARY_RIGHT
#define EVT_KEY_PREVIOUS_PAGE EVT_ROTARY_LEFT
#define EVT_KEY_MODEL_MENU EVT_KEY_BREAK(KEY_MENU)
#define EVT_KEY_GENERAL_MENU EVT_KEY_LONG(KEY_MENU)
#define EVT_KEY_TELEMETRY EVT_KEY_BREAK(KEY_PAGEUP)
#else
#define EVT_KEY_PREVIOUS_VIEW EVT_KEY_BREAK(KEY_UP)
#define EVT_KEY_NEXT_VIEW EVT_KEY_BREAK(KEY_DOWN)
#define EVT_KEY_NEXT_PAGE EVT_KEY_BREAK(KEY_RIGHT)
#define EVT_KEY_PREVIOUS_PAGE EVT_KEY_BREAK(KEY_LEFT)
#define EVT_KEY_MODEL_MENU EVT_KEY_LONG(KEY_RIGHT)
#define EVT_KEY_GENERAL_MENU EVT_KEY_LONG(KEY_LEFT)
#define EVT_KEY_TELEMETRY EVT_KEY_LONG(KEY_DOWN)
#define EVT_KEY_STATISTICS EVT_KEY_LONG(KEY_UP)
#endif
// Telemtry view navigation mapping
#if defined(NAVIGATION_XLITE)
#define EVT_KEY_PREVIOUS_TELEM_VIEW(evt) (evt == EVT_KEY_LONG(KEY_LEFT) && keysGetState(KEY_SHIFT))
#define EVT_KEY_NEXT_TELEM_VIEW(evt) (evt == EVT_KEY_LONG(KEY_RIGHT) && keysGetState(KEY_SHIFT))
#elif defined(KEYS_GPIO_REG_PAGEDN)
#define EVT_KEY_PREVIOUS_TELEM_VIEW(evt) (evt == EVT_KEY_FIRST(KEY_PAGEUP))
#define EVT_KEY_NEXT_TELEM_VIEW(evt) (evt == EVT_KEY_FIRST(KEY_PAGEDN))
#elif defined(NAVIGATION_X7) || defined(NAVIGATION_X9D)
#define EVT_KEY_PREVIOUS_TELEM_VIEW(evt) (evt == EVT_KEY_BREAK(KEY_PAGEUP))
#define EVT_KEY_NEXT_TELEM_VIEW(evt) (evt == EVT_KEY_BREAK(KEY_PAGEDN))
#elif defined(NAVIGATION_9X)
#define EVT_KEY_PREVIOUS_TELEM_VIEW(evt) (evt == EVT_KEY_LONG(KEY_UP))
#define EVT_KEY_NEXT_TELEM_VIEW(evt) (evt == EVT_KEY_LONG(KEY_DOWN))
#else
#define EVT_KEY_PREVIOUS_TELEM_VIEW(evt) (evt == EVT_KEY_FIRST(KEY_UP))
#define EVT_KEY_NEXT_TELEM_VIEW(evt) (evt == EVT_KEY_FIRST(KEY_DOWN))
#endif
// Open Channel view
#if defined(NAVIGATION_XLITE)
#define EVT_KEY_OPEN_CHAN_VIEW(evt) (evt == EVT_KEY_FIRST(KEY_ENTER) && keysGetState(KEY_SHIFT))
#else
#define EVT_KEY_OPEN_CHAN_VIEW(evt) (evt == EVT_KEY_BREAK(KEY_MODEL) || evt == EVT_KEY_BREAK(KEY_MENU))
#endif
#if defined(NAVIGATION_XLITE) || defined(NAVIGATION_9X)
#define HAS_LEFT_RIGHT_NAV_KEYS
#endif
struct CheckIncDecStops
{
const int count;
@@ -29,6 +29,19 @@
coord_t scrollbar_X = DEFAULT_SCROLLBAR_X;
#endif
static uint8_t MENU_FIRST_LINE_EDIT(const uint8_t * horTab, uint8_t horTabMax)
{
if (horTab) {
uint8_t result = 0;
while (result < horTabMax && horTab[result] >= HIDDEN_ROW)
++result;
return result;
}
else {
return 0;
}
}
int checkIncDec(event_t event, int val, int i_min, int i_max,
unsigned int i_flags, IsValueAvailable isValueAvailable,
const CheckIncDecStops &stops)
+1 -1
View File
@@ -311,7 +311,7 @@ bool trimDown(uint8_t idx)
return READ_TRIMS() & (1 << idx);
}
uint8_t keysGetState(uint8_t key)
bool keysGetState(uint8_t key)
{
if (key >= MAX_KEYS) return 0;
return keys[key].pressed();
+1 -1
View File
@@ -190,7 +190,7 @@ event_t getTrimEvent();
void pauseTrimEvents(event_t event);
void killTrimEvents(event_t event);
uint8_t keysGetState(uint8_t key);
bool keysGetState(uint8_t key);
uint8_t keysGetTrimState(uint8_t trim);
bool keysPollingCycle();