kopia lustrzana https://github.com/OpenRTX/OpenRTX
UI: Add Info menu
rodzic
c87f178823
commit
92af6c4804
|
@ -49,6 +49,7 @@ enum uiScreen
|
||||||
MENU_GPS,
|
MENU_GPS,
|
||||||
MENU_MACRO,
|
MENU_MACRO,
|
||||||
MENU_SETTINGS,
|
MENU_SETTINGS,
|
||||||
|
MENU_INFO,
|
||||||
SETTINGS_TIMEDATE,
|
SETTINGS_TIMEDATE,
|
||||||
SETTINGS_TIMEDATE_SET,
|
SETTINGS_TIMEDATE_SET,
|
||||||
SETTINGS_DISPLAY,
|
SETTINGS_DISPLAY,
|
||||||
|
@ -124,9 +125,11 @@ extern settings_t settings;
|
||||||
extern const char *menu_items[];
|
extern const char *menu_items[];
|
||||||
extern const char *settings_items[];
|
extern const char *settings_items[];
|
||||||
extern const char *display_items[];
|
extern const char *display_items[];
|
||||||
|
extern const char *info_items[];
|
||||||
extern const uint8_t menu_num;
|
extern const uint8_t menu_num;
|
||||||
extern const uint8_t settings_num;
|
extern const uint8_t settings_num;
|
||||||
extern const uint8_t display_num;
|
extern const uint8_t display_num;
|
||||||
|
extern const uint8_t info_num;
|
||||||
extern const color_t color_black;
|
extern const color_t color_black;
|
||||||
extern const color_t color_grey;
|
extern const color_t color_grey;
|
||||||
extern const color_t color_white;
|
extern const color_t color_white;
|
||||||
|
|
|
@ -92,6 +92,7 @@ extern void _ui_drawMenuZone(ui_state_t* ui_state);
|
||||||
extern void _ui_drawMenuChannel(ui_state_t* ui_state);
|
extern void _ui_drawMenuChannel(ui_state_t* ui_state);
|
||||||
extern void _ui_drawMenuContacts(ui_state_t* ui_state);
|
extern void _ui_drawMenuContacts(ui_state_t* ui_state);
|
||||||
extern void _ui_drawMenuSettings(ui_state_t* ui_state);
|
extern void _ui_drawMenuSettings(ui_state_t* ui_state);
|
||||||
|
extern void _ui_drawMenuInfo(ui_state_t* ui_state);
|
||||||
#ifdef HAS_RTC
|
#ifdef HAS_RTC
|
||||||
extern void _ui_drawSettingsTimeDate(state_t* last_state);
|
extern void _ui_drawSettingsTimeDate(state_t* last_state);
|
||||||
extern void _ui_drawSettingsTimeDateSet(state_t* last_state, ui_state_t* ui_state);
|
extern void _ui_drawSettingsTimeDateSet(state_t* last_state, ui_state_t* ui_state);
|
||||||
|
@ -99,14 +100,15 @@ extern void _ui_drawSettingsTimeDateSet(state_t* last_state, ui_state_t* ui_stat
|
||||||
extern void _ui_drawSettingsDisplay(ui_state_t* ui_state);
|
extern void _ui_drawSettingsDisplay(ui_state_t* ui_state);
|
||||||
extern bool _ui_drawMacroMenu(state_t* last_state);
|
extern bool _ui_drawMacroMenu(state_t* last_state);
|
||||||
|
|
||||||
const char *menu_items[6] =
|
const char *menu_items[7] =
|
||||||
{
|
{
|
||||||
"Zone",
|
"Zone",
|
||||||
"Channels",
|
"Channels",
|
||||||
"Contacts",
|
"Contacts",
|
||||||
"Messages",
|
"Messages",
|
||||||
"GPS",
|
"GPS",
|
||||||
"Settings"
|
"Settings",
|
||||||
|
"Info"
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef HAS_RTC
|
#ifdef HAS_RTC
|
||||||
|
@ -134,6 +136,13 @@ const char *display_items[1] =
|
||||||
"Brightness",
|
"Brightness",
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
const char *info_items[4] =
|
||||||
|
{
|
||||||
|
"Model",
|
||||||
|
"Bat. Voltage",
|
||||||
|
"Bat. Charge",
|
||||||
|
"RSSI",
|
||||||
|
};
|
||||||
|
|
||||||
// Calculate number of main menu entries
|
// Calculate number of main menu entries
|
||||||
const uint8_t menu_num = sizeof(menu_items)/sizeof(menu_items[0]);
|
const uint8_t menu_num = sizeof(menu_items)/sizeof(menu_items[0]);
|
||||||
|
@ -141,6 +150,8 @@ const uint8_t menu_num = sizeof(menu_items)/sizeof(menu_items[0]);
|
||||||
const uint8_t settings_num = sizeof(settings_items)/sizeof(settings_items[0]);
|
const uint8_t settings_num = sizeof(settings_items)/sizeof(settings_items[0]);
|
||||||
// Calculate number of display settings menu entries
|
// Calculate number of display settings menu entries
|
||||||
const uint8_t display_num = sizeof(display_items)/sizeof(display_items[0]);
|
const uint8_t display_num = sizeof(display_items)/sizeof(display_items[0]);
|
||||||
|
// Calculate number of info menu entries
|
||||||
|
const uint8_t info_num = sizeof(info_items)/sizeof(info_items[0]);
|
||||||
|
|
||||||
const color_t color_black = {0, 0, 0, 255};
|
const color_t color_black = {0, 0, 0, 255};
|
||||||
const color_t color_grey = {60, 60, 60, 255};
|
const color_t color_grey = {60, 60, 60, 255};
|
||||||
|
@ -777,6 +788,9 @@ void ui_updateFSM(event_t event, bool *sync_rtx)
|
||||||
case 5:
|
case 5:
|
||||||
state.ui_screen = MENU_SETTINGS;
|
state.ui_screen = MENU_SETTINGS;
|
||||||
break;
|
break;
|
||||||
|
case 6:
|
||||||
|
state.ui_screen = MENU_INFO;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
state.ui_screen = MENU_TOP;
|
state.ui_screen = MENU_TOP;
|
||||||
}
|
}
|
||||||
|
@ -906,6 +920,30 @@ void ui_updateFSM(event_t event, bool *sync_rtx)
|
||||||
ui_state.menu_selected = 0;
|
ui_state.menu_selected = 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
// Info menu screen
|
||||||
|
case MENU_INFO:
|
||||||
|
if(msg.keys & KEY_UP)
|
||||||
|
{
|
||||||
|
if(ui_state.menu_selected > 0)
|
||||||
|
ui_state.menu_selected -= 1;
|
||||||
|
else
|
||||||
|
ui_state.menu_selected = info_num-1;
|
||||||
|
}
|
||||||
|
else if(msg.keys & KEY_DOWN)
|
||||||
|
{
|
||||||
|
if(ui_state.menu_selected < info_num-1)
|
||||||
|
ui_state.menu_selected += 1;
|
||||||
|
else
|
||||||
|
ui_state.menu_selected = 0;
|
||||||
|
}
|
||||||
|
else if(msg.keys & KEY_ESC)
|
||||||
|
{
|
||||||
|
// Return to top menu
|
||||||
|
state.ui_screen = MENU_TOP;
|
||||||
|
// Reset menu selection
|
||||||
|
ui_state.menu_selected = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
#ifdef HAS_RTC
|
#ifdef HAS_RTC
|
||||||
// Time&Date settings screen
|
// Time&Date settings screen
|
||||||
case SETTINGS_TIMEDATE:
|
case SETTINGS_TIMEDATE:
|
||||||
|
@ -1047,6 +1085,10 @@ void ui_updateGUI(state_t last_state)
|
||||||
case MENU_SETTINGS:
|
case MENU_SETTINGS:
|
||||||
_ui_drawMenuSettings(&ui_state);
|
_ui_drawMenuSettings(&ui_state);
|
||||||
break;
|
break;
|
||||||
|
// Info menu screen
|
||||||
|
case MENU_INFO:
|
||||||
|
_ui_drawMenuInfo(&ui_state);
|
||||||
|
break;
|
||||||
#ifdef HAS_RTC
|
#ifdef HAS_RTC
|
||||||
// Time&Date settings screen
|
// Time&Date settings screen
|
||||||
case SETTINGS_TIMEDATE:
|
case SETTINGS_TIMEDATE:
|
||||||
|
|
|
@ -125,6 +125,22 @@ int _ui_getDisplayValueName(char *buf, uint8_t max_len, uint8_t index)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int _ui_getInfoEntryName(char *buf, uint8_t max_len, uint8_t index)
|
||||||
|
{
|
||||||
|
if(index >= info_num) return -1;
|
||||||
|
snprintf(buf, max_len, "%s", info_items[index]);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int _ui_getInfoValueName(char *buf, uint8_t max_len, uint8_t index)
|
||||||
|
{
|
||||||
|
if(index >= info_num) return -1;
|
||||||
|
uint8_t value = 0;
|
||||||
|
if(strcmp(info_items[index], "Model") == 0)
|
||||||
|
value = 0;
|
||||||
|
snprintf(buf, max_len, "%d", value);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
int _ui_getZoneName(char *buf, uint8_t max_len, uint8_t index)
|
int _ui_getZoneName(char *buf, uint8_t max_len, uint8_t index)
|
||||||
{
|
{
|
||||||
zone_t zone;
|
zone_t zone;
|
||||||
|
@ -202,6 +218,17 @@ void _ui_drawMenuSettings(ui_state_t* ui_state)
|
||||||
_ui_drawMenuList(layout.line1_left, ui_state->menu_selected, _ui_getSettingsEntryName);
|
_ui_drawMenuList(layout.line1_left, ui_state->menu_selected, _ui_getSettingsEntryName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void _ui_drawMenuInfo(ui_state_t* ui_state)
|
||||||
|
{
|
||||||
|
gfx_clearScreen();
|
||||||
|
// Print "Info" on top bar
|
||||||
|
gfx_print(layout.top_left, "Info", layout.top_font,
|
||||||
|
TEXT_ALIGN_CENTER, color_white);
|
||||||
|
// Print menu entries
|
||||||
|
_ui_drawMenuListValue(layout.line1_left, ui_state->menu_selected, _ui_getInfoEntryName,
|
||||||
|
_ui_getInfoValueName);
|
||||||
|
}
|
||||||
|
|
||||||
void _ui_drawSettingsDisplay(ui_state_t* ui_state)
|
void _ui_drawSettingsDisplay(ui_state_t* ui_state)
|
||||||
{
|
{
|
||||||
gfx_clearScreen();
|
gfx_clearScreen();
|
||||||
|
|
Ładowanie…
Reference in New Issue