Short name for all menu styles

This commit is contained in:
Willy-JL
2023-08-09 21:09:38 +02:00
parent 55ef087fe7
commit bfb9296d07

View File

@@ -87,6 +87,7 @@ static void menu_draw_callback(Canvas* canvas, void* _model) {
if(items_count) { if(items_count) {
MenuItem* item; MenuItem* item;
size_t shift_position; size_t shift_position;
FuriString* name = furi_string_alloc();
switch(XTREME_SETTINGS()->menu_style) { switch(XTREME_SETTINGS()->menu_style) {
case MenuStyleList: { case MenuStyleList: {
for(uint8_t i = 0; i < 3; i++) { for(uint8_t i = 0; i < 3; i++) {
@@ -94,9 +95,10 @@ static void menu_draw_callback(Canvas* canvas, void* _model) {
shift_position = (position + items_count + i - 1) % items_count; shift_position = (position + items_count + i - 1) % items_count;
item = MenuItemArray_get(model->items, shift_position); item = MenuItemArray_get(model->items, shift_position);
menu_centered_icon(canvas, item, 4, 3 + 22 * i, 14, 14); menu_centered_icon(canvas, item, 4, 3 + 22 * i, 14, 14);
menu_short_name(item, name);
size_t scroll_counter = menu_scroll_counter(model, i == 1); size_t scroll_counter = menu_scroll_counter(model, i == 1);
elements_scrollable_text_line_str( elements_scrollable_text_line(
canvas, 22, 14 + 22 * i, 98, item->label, scroll_counter, false, false); canvas, 22, 14 + 22 * i, 98, name, scroll_counter, false);
} }
// Frame and scrollbar // Frame and scrollbar
elements_frame(canvas, 0, 21, 128 - 5, 21); elements_frame(canvas, 0, 21, 128 - 5, 21);
@@ -104,7 +106,6 @@ static void menu_draw_callback(Canvas* canvas, void* _model) {
break; break;
} }
case MenuStyleWii: { case MenuStyleWii: {
FuriString* name = furi_string_alloc();
if(items_count > 6 && position >= 4) { if(items_count > 6 && position >= 4) {
if(position >= items_count - 2 + (items_count % 2)) { if(position >= items_count - 2 + (items_count % 2)) {
shift_position = position - (position % 2) - 4; shift_position = position - (position % 2) - 4;
@@ -123,7 +124,6 @@ static void menu_draw_callback(Canvas* canvas, void* _model) {
x_off = (i / 2) * 43 + 1; x_off = (i / 2) * 43 + 1;
y_off = (i % 2) * 32; y_off = (i % 2) * 32;
bool selected = item_i == position; bool selected = item_i == position;
size_t scroll_counter = menu_scroll_counter(model, selected);
if(selected) { if(selected) {
elements_slightly_rounded_box(canvas, 0 + x_off, 0 + y_off, 40, 30); elements_slightly_rounded_box(canvas, 0 + x_off, 0 + y_off, 40, 30);
canvas_set_color(canvas, ColorWhite); canvas_set_color(canvas, ColorWhite);
@@ -131,6 +131,7 @@ static void menu_draw_callback(Canvas* canvas, void* _model) {
item = MenuItemArray_get(model->items, item_i); item = MenuItemArray_get(model->items, item_i);
menu_centered_icon(canvas, item, x_off, y_off, 40, 20); menu_centered_icon(canvas, item, x_off, y_off, 40, 20);
menu_short_name(item, name); menu_short_name(item, name);
size_t scroll_counter = menu_scroll_counter(model, selected);
elements_scrollable_text_line_centered( elements_scrollable_text_line_centered(
canvas, 20 + x_off, 26 + y_off, 36, name, scroll_counter, false, true); canvas, 20 + x_off, 26 + y_off, 36, name, scroll_counter, false, true);
if(selected) { if(selected) {
@@ -139,7 +140,6 @@ static void menu_draw_callback(Canvas* canvas, void* _model) {
elements_frame(canvas, 0 + x_off, 0 + y_off, 40, 30); elements_frame(canvas, 0 + x_off, 0 + y_off, 40, 30);
} }
} }
furi_string_free(name);
break; break;
} }
case MenuStyleDsi: { case MenuStyleDsi: {
@@ -172,13 +172,14 @@ static void menu_draw_callback(Canvas* canvas, void* _model) {
canvas_set_color(canvas, ColorBlack); canvas_set_color(canvas, ColorBlack);
canvas_set_font(canvas, FontPrimary); canvas_set_font(canvas, FontPrimary);
menu_short_name(item, name);
size_t scroll_counter = menu_scroll_counter(model, true); size_t scroll_counter = menu_scroll_counter(model, true);
elements_scrollable_text_line_str( elements_scrollable_text_line_centered(
canvas, canvas,
pos_x, pos_x,
pos_y - height / 2 - 8, pos_y - height / 2 - 8,
126, 126,
item->label, name,
scroll_counter, scroll_counter,
false, false,
true); true);
@@ -222,15 +223,15 @@ static void menu_draw_callback(Canvas* canvas, void* _model) {
canvas_set_color(canvas, ColorBlack); canvas_set_color(canvas, ColorBlack);
canvas_set_font(canvas, FontSecondary); canvas_set_font(canvas, FontSecondary);
menu_short_name(item, name);
size_t scroll_counter = menu_scroll_counter(model, true); size_t scroll_counter = menu_scroll_counter(model, true);
elements_scrollable_text_line_str( elements_scrollable_text_line(
canvas, canvas,
pos_x + width / 2 + 2, pos_x + width / 2 + 2,
pos_y + height / 2 + 7, pos_y + height / 2 + 7,
74, 74,
item->label, name,
scroll_counter, scroll_counter,
false,
false); false);
} else { } else {
pos_x += (width + 1) * i + (i < 0 ? -6 : 6); pos_x += (width + 1) * i + (i < 0 ? -6 : 6);
@@ -243,7 +244,6 @@ static void menu_draw_callback(Canvas* canvas, void* _model) {
} }
case MenuStyleVertical: { case MenuStyleVertical: {
canvas_set_orientation(canvas, CanvasOrientationVertical); canvas_set_orientation(canvas, CanvasOrientationVertical);
FuriString* name = furi_string_alloc();
shift_position = model->vertical_offset; shift_position = model->vertical_offset;
canvas_set_font(canvas, FontSecondary); canvas_set_font(canvas, FontSecondary);
size_t item_i; size_t item_i;
@@ -253,7 +253,6 @@ static void menu_draw_callback(Canvas* canvas, void* _model) {
if(item_i >= items_count) continue; if(item_i >= items_count) continue;
y_off = 16 * i; y_off = 16 * i;
bool selected = item_i == position; bool selected = item_i == position;
size_t scroll_counter = menu_scroll_counter(model, selected);
if(selected) { if(selected) {
elements_slightly_rounded_box(canvas, 0, y_off, 64, 16); elements_slightly_rounded_box(canvas, 0, y_off, 64, 16);
canvas_set_color(canvas, ColorWhite); canvas_set_color(canvas, ColorWhite);
@@ -261,19 +260,20 @@ static void menu_draw_callback(Canvas* canvas, void* _model) {
item = MenuItemArray_get(model->items, item_i); item = MenuItemArray_get(model->items, item_i);
menu_centered_icon(canvas, item, 0, y_off, 16, 16); menu_centered_icon(canvas, item, 0, y_off, 16, 16);
menu_short_name(item, name); menu_short_name(item, name);
size_t scroll_counter = menu_scroll_counter(model, selected);
elements_scrollable_text_line( elements_scrollable_text_line(
canvas, 17, y_off + 12, 46, name, scroll_counter, false); canvas, 17, y_off + 12, 46, name, scroll_counter, false);
if(selected) { if(selected) {
canvas_set_color(canvas, ColorBlack); canvas_set_color(canvas, ColorBlack);
} }
} }
furi_string_free(name);
canvas_set_orientation(canvas, CanvasOrientationHorizontal); canvas_set_orientation(canvas, CanvasOrientationHorizontal);
break; break;
} }
default: default:
break; break;
} }
furi_string_free(name);
} else { } else {
canvas_draw_str(canvas, 2, 32, "Empty"); canvas_draw_str(canvas, 2, 32, "Empty");
elements_scrollbar(canvas, 0, 0); elements_scrollbar(canvas, 0, 0);