UI: Add display settings
This commit is contained in:
parent
c9caff3b8d
commit
2533f35309
|
|
@ -50,6 +50,7 @@ enum uiScreen
|
||||||
MENU_SETTINGS,
|
MENU_SETTINGS,
|
||||||
SETTINGS_TIMEDATE,
|
SETTINGS_TIMEDATE,
|
||||||
SETTINGS_TIMEDATE_SET,
|
SETTINGS_TIMEDATE_SET,
|
||||||
|
SETTINGS_DISPLAY,
|
||||||
LOW_BAT
|
LOW_BAT
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -119,7 +120,8 @@ typedef struct ui_state_t
|
||||||
|
|
||||||
extern layout_t layout;
|
extern layout_t layout;
|
||||||
extern const char *menu_items[6];
|
extern const char *menu_items[6];
|
||||||
extern const char *settings_items[1];
|
extern const char *settings_items[2];
|
||||||
|
extern const char *display_items[2];
|
||||||
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 color_t color_black;
|
extern const color_t color_black;
|
||||||
|
|
|
||||||
|
|
@ -96,6 +96,7 @@ extern void _ui_drawMenuSettings(ui_state_t* ui_state);
|
||||||
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);
|
||||||
#endif
|
#endif
|
||||||
|
extern void _ui_drawSettingsDisplay(state_t* last_state, 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[6] =
|
||||||
|
|
@ -108,11 +109,18 @@ const char *menu_items[6] =
|
||||||
"Settings"
|
"Settings"
|
||||||
};
|
};
|
||||||
|
|
||||||
const char *settings_items[1] =
|
const char *settings_items[2] =
|
||||||
{
|
{
|
||||||
#ifdef HAS_RTC
|
#ifdef HAS_RTC
|
||||||
"Time & Date"
|
"Time & Date",
|
||||||
#endif
|
#endif
|
||||||
|
"Display"
|
||||||
|
};
|
||||||
|
|
||||||
|
const char *display_items[2] =
|
||||||
|
{
|
||||||
|
"Brightness",
|
||||||
|
"Contrast"
|
||||||
};
|
};
|
||||||
|
|
||||||
// Calculate number of main menu entries
|
// Calculate number of main menu entries
|
||||||
|
|
@ -824,7 +832,21 @@ void ui_updateFSM(event_t event, bool *sync_rtx)
|
||||||
break;
|
break;
|
||||||
// Settings menu screen
|
// Settings menu screen
|
||||||
case MENU_SETTINGS:
|
case MENU_SETTINGS:
|
||||||
if(msg.keys & KEY_ENTER)
|
if(msg.keys & KEY_UP)
|
||||||
|
{
|
||||||
|
if(ui_state.menu_selected > 0)
|
||||||
|
ui_state.menu_selected -= 1;
|
||||||
|
else
|
||||||
|
ui_state.menu_selected = settings_num-1;
|
||||||
|
}
|
||||||
|
else if(msg.keys & KEY_DOWN)
|
||||||
|
{
|
||||||
|
if(ui_state.menu_selected < settings_num-1)
|
||||||
|
ui_state.menu_selected += 1;
|
||||||
|
else
|
||||||
|
ui_state.menu_selected = 0;
|
||||||
|
}
|
||||||
|
else if(msg.keys & KEY_ENTER)
|
||||||
{
|
{
|
||||||
// Open selected menu item
|
// Open selected menu item
|
||||||
switch(ui_state.menu_selected)
|
switch(ui_state.menu_selected)
|
||||||
|
|
@ -834,7 +856,12 @@ void ui_updateFSM(event_t event, bool *sync_rtx)
|
||||||
case 0:
|
case 0:
|
||||||
state.ui_screen = SETTINGS_TIMEDATE;
|
state.ui_screen = SETTINGS_TIMEDATE;
|
||||||
break;
|
break;
|
||||||
|
case 1:
|
||||||
|
#else
|
||||||
|
case 0:
|
||||||
#endif
|
#endif
|
||||||
|
state.ui_screen = SETTINGS_DISPLAY;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
state.ui_screen = MENU_TOP;
|
state.ui_screen = MENU_TOP;
|
||||||
}
|
}
|
||||||
|
|
@ -895,6 +922,21 @@ void ui_updateFSM(event_t event, bool *sync_rtx)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
case SETTINGS_DISPLAY:
|
||||||
|
if(msg.keys & KEY_LEFT)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
else if(msg.keys & KEY_RIGHT)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
else if(msg.keys & KEY_ESC)
|
||||||
|
{
|
||||||
|
// Return to settings menu
|
||||||
|
state.ui_screen = MENU_SETTINGS;
|
||||||
|
// Reset menu selection
|
||||||
|
ui_state.menu_selected = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -955,6 +997,9 @@ void ui_updateGUI(state_t last_state)
|
||||||
_ui_drawSettingsTimeDateSet(&last_state, &ui_state);
|
_ui_drawSettingsTimeDateSet(&last_state, &ui_state);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
case SETTINGS_DISPLAY:
|
||||||
|
_ui_drawSettingsDisplay(&last_state, &ui_state);
|
||||||
|
break;
|
||||||
// Low battery screen
|
// Low battery screen
|
||||||
case LOW_BAT:
|
case LOW_BAT:
|
||||||
_ui_drawLowBatteryScreen();
|
_ui_drawLowBatteryScreen();
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,33 @@ void _ui_drawMenuList(point_t pos, const char *entries[],
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void _ui_drawSettingsDisplayList(point_t pos, const char *entries[],
|
||||||
|
uint8_t num_entries, uint8_t selected)
|
||||||
|
{
|
||||||
|
// Number of menu entries that fit in the screen height
|
||||||
|
uint8_t entries_in_screen = ((SCREEN_HEIGHT - pos.y) / layout.top_h) + 1;
|
||||||
|
uint8_t scroll = 0;
|
||||||
|
char entry_buf[MAX_ENTRY_LEN] = "";
|
||||||
|
for(int item=0; (item < num_entries) && (pos.y < SCREEN_HEIGHT); item++)
|
||||||
|
{
|
||||||
|
// If selection is off the screen, scroll screen
|
||||||
|
if(selected >= entries_in_screen)
|
||||||
|
scroll = selected - entries_in_screen + 1;
|
||||||
|
snprintf(entry_buf, sizeof(entry_buf), "%s", entries[item + scroll]);
|
||||||
|
if(item + scroll == selected)
|
||||||
|
{
|
||||||
|
// Draw rectangle under selected item, compensating for text height
|
||||||
|
point_t rect_pos = {0, pos.y - layout.top_h + (layout.text_v_offset*2)};
|
||||||
|
gfx_drawRect(rect_pos, SCREEN_WIDTH, layout.top_h, color_white, true);
|
||||||
|
gfx_print(pos, entry_buf, layout.top_font, TEXT_ALIGN_LEFT, color_black);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gfx_print(pos, entry_buf, layout.top_font, TEXT_ALIGN_LEFT, color_white);
|
||||||
|
}
|
||||||
|
pos.y += layout.top_h;
|
||||||
|
}
|
||||||
|
}
|
||||||
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;
|
||||||
|
|
@ -222,6 +249,16 @@ void _ui_drawSettingsTimeDateSet(state_t* last_state, ui_state_t* ui_state)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
void _ui_drawSettingsDisplay(state_t* last_state, ui_state_t* ui_state)
|
||||||
|
{
|
||||||
|
gfx_clearScreen();
|
||||||
|
// Print "Display" on top bar
|
||||||
|
gfx_print(layout.top_left, "Display", layout.top_font,
|
||||||
|
TEXT_ALIGN_CENTER, color_white);
|
||||||
|
// Print menu entries
|
||||||
|
_ui_drawSettingsDisplayList(layout.line1_left, display_items, settings_num, ui_state->menu_selected);
|
||||||
|
}
|
||||||
|
|
||||||
bool _ui_drawMacroMenu(state_t* last_state) {
|
bool _ui_drawMacroMenu(state_t* last_state) {
|
||||||
// Header
|
// Header
|
||||||
gfx_print(layout.top_left, "Macro Menu", layout.top_font, TEXT_ALIGN_CENTER,
|
gfx_print(layout.top_left, "Macro Menu", layout.top_font, TEXT_ALIGN_CENTER,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue