mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-10 05:59:08 -07:00
feat: Eurocorp menu theme
This commit is contained in:
@@ -14,14 +14,8 @@ void xtreme_app_scene_interface_mainmenu_var_item_list_callback(void* context, u
|
||||
view_dispatcher_send_custom_event(app->view_dispatcher, index);
|
||||
}
|
||||
|
||||
const char* const menu_style_names[MenuStyleCount] = {
|
||||
"List",
|
||||
"Wii",
|
||||
"DSi",
|
||||
"PS4",
|
||||
"Vertical",
|
||||
"C64",
|
||||
};
|
||||
const char* const menu_style_names[MenuStyleCount] =
|
||||
{"List", "Wii", "DSi", "PS4", "Vertical", "C64", "Eurocorp"};
|
||||
static void xtreme_app_scene_interface_mainmenu_menu_style_changed(VariableItem* item) {
|
||||
XtremeApp* app = variable_item_get_context(item);
|
||||
uint8_t index = variable_item_get_current_value_index(item);
|
||||
|
||||
@@ -15,6 +15,10 @@ const CanvasFontParameters canvas_font_params[FontTotalNumber] = {
|
||||
[FontKeyboard] = {.leading_default = 11, .leading_min = 9, .height = 7, .descender = 2},
|
||||
[FontBigNumbers] = {.leading_default = 18, .leading_min = 16, .height = 15, .descender = 0},
|
||||
[FontBatteryPercent] = {.leading_default = 11, .leading_min = 9, .height = 6, .descender = 0},
|
||||
[FontScummRomanOutline] =
|
||||
{.leading_default = 12, .leading_min = 11, .height = 12, .descender = 2},
|
||||
[FontScummRoman] = {.leading_default = 12, .leading_min = 11, .height = 10, .descender = 2},
|
||||
[FontEurocorp] = {.leading_default = 12, .leading_min = 11, .height = 18, .descender = 2},
|
||||
};
|
||||
|
||||
Canvas* canvas_init() {
|
||||
@@ -161,6 +165,15 @@ void canvas_set_font(Canvas* canvas, Font font) {
|
||||
case FontBatteryPercent:
|
||||
u8g2_SetFont(&canvas->fb, u8g2_font_5x7_tf); //u8g2_font_micro_tr);
|
||||
break;
|
||||
case FontScummRomanOutline:
|
||||
u8g2_SetFont(&canvas->fb, u8g2_font_lucasarts_scumm_subtitle_o_tr);
|
||||
break;
|
||||
case FontScummRoman:
|
||||
u8g2_SetFont(&canvas->fb, u8g2_font_lucasarts_scumm_subtitle_r_tr);
|
||||
break;
|
||||
case FontEurocorp:
|
||||
u8g2_SetFont(&canvas->fb, u8g2_font_eurocorp_tr);
|
||||
break;
|
||||
default:
|
||||
furi_crash(NULL);
|
||||
break;
|
||||
|
||||
@@ -27,6 +27,9 @@ typedef enum {
|
||||
FontKeyboard,
|
||||
FontBigNumbers,
|
||||
FontBatteryPercent,
|
||||
FontScummRomanOutline,
|
||||
FontScummRoman,
|
||||
FontEurocorp,
|
||||
|
||||
// Keep last for fonts number calculation
|
||||
FontTotalNumber,
|
||||
|
||||
@@ -52,6 +52,15 @@ static void menu_short_name(MenuItem* item, FuriString* name) {
|
||||
}
|
||||
}
|
||||
|
||||
static void menu_string_to_upper_case(FuriString* str) {
|
||||
for(size_t i = 0; i < furi_string_size(str); i++) {
|
||||
char c = furi_string_get_char(str, i);
|
||||
if(c >= 'a' && c <= 'z') {
|
||||
furi_string_set_char(str, i, c - 'a' + 'A');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void menu_centered_icon(
|
||||
Canvas* canvas,
|
||||
MenuItem* item,
|
||||
@@ -321,6 +330,32 @@ static void menu_draw_callback(Canvas* canvas, void* _model) {
|
||||
|
||||
break;
|
||||
}
|
||||
case MenuStyleEurocorp: {
|
||||
for(uint8_t i = 0; i < 3; i++) {
|
||||
canvas_set_color(canvas, ColorBlack);
|
||||
canvas_set_font(canvas, FontEurocorp);
|
||||
shift_position = (position + items_count + i - 1) % items_count;
|
||||
item = MenuItemArray_get(model->items, shift_position);
|
||||
menu_short_name(item, name);
|
||||
menu_string_to_upper_case(name);
|
||||
size_t scroll_counter = menu_scroll_counter(model, i == 1);
|
||||
if(i == 1) {
|
||||
canvas_draw_box(canvas, 0, 22, 128, 22);
|
||||
canvas_set_color(canvas, ColorWhite);
|
||||
// Clip corner
|
||||
for(uint8_t i = 0; i < 6; i++) {
|
||||
for(uint8_t j = 0; j < 6; j++) {
|
||||
if(j - i >= 0) {
|
||||
canvas_draw_dot(canvas, 128 - i, 22 + j - i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
elements_scrollable_text_line(
|
||||
canvas, 2, 19 + 22 * i, 128 - 3, name, scroll_counter, false);
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -545,6 +580,7 @@ static void menu_process_up(Menu* menu) {
|
||||
|
||||
switch(XTREME_SETTINGS()->menu_style) {
|
||||
case MenuStyleList:
|
||||
case MenuStyleEurocorp:
|
||||
if(position > 0) {
|
||||
position--;
|
||||
if(vertical_offset && vertical_offset == position) {
|
||||
@@ -592,6 +628,7 @@ static void menu_process_down(Menu* menu) {
|
||||
|
||||
switch(XTREME_SETTINGS()->menu_style) {
|
||||
case MenuStyleList:
|
||||
case MenuStyleEurocorp:
|
||||
if(position < count - 1) {
|
||||
position++;
|
||||
if(vertical_offset < count - 8 && vertical_offset == position - 7) {
|
||||
|
||||
Reference in New Issue
Block a user