diff --git a/applications/main/archive/views/archive_browser_view.c b/applications/main/archive/views/archive_browser_view.c index 59c20ce6b..994290a3c 100644 --- a/applications/main/archive/views/archive_browser_view.c +++ b/applications/main/archive/views/archive_browser_view.c @@ -300,7 +300,8 @@ static void draw_list(Canvas* canvas, ArchiveBrowserViewModel* model) { ((scrollbar ? MAX_LEN_PX - 6 : MAX_LEN_PX) - x_offset), str_buf, scroll_counter, - (model->item_idx != idx)); + (model->item_idx != idx), + false); furi_string_free(str_buf); } diff --git a/applications/services/gui/elements.c b/applications/services/gui/elements.c index 90682d68e..ae2f54b2c 100644 --- a/applications/services/gui/elements.c +++ b/applications/services/gui/elements.c @@ -580,7 +580,8 @@ void elements_scrollable_text_line( uint8_t width, FuriString* string, size_t scroll, - bool ellipsis) { + bool ellipsis, + bool centered) { FuriString* line = furi_string_alloc_set(string); size_t len_px = canvas_string_width(canvas, furi_string_get_cstr(line)); @@ -616,7 +617,11 @@ void elements_scrollable_text_line( } } - canvas_draw_str(canvas, x, y, furi_string_get_cstr(line)); + if (centered) { + canvas_draw_str_aligned(canvas, x, y, AlignCenter, AlignCenter, furi_string_get_cstr(line)); + } else { + canvas_draw_str(canvas, x, y, furi_string_get_cstr(line)); + } furi_string_free(line); } diff --git a/applications/services/gui/elements.h b/applications/services/gui/elements.h index 04ca357b8..00bffc9a6 100644 --- a/applications/services/gui/elements.h +++ b/applications/services/gui/elements.h @@ -218,6 +218,7 @@ void elements_string_fit_width(Canvas* canvas, FuriString* string, uint8_t width * @param string The string * @param[in] scroll The scroll counter: 0 - no scroll, any other number - scroll. Just count up, everything else will be calculated on the inside. * @param[in] ellipsis The ellipsis flag: true to add ellipse + * @param[in] centered The centered flag: true to center text on x and y */ void elements_scrollable_text_line( Canvas* canvas, @@ -226,7 +227,8 @@ void elements_scrollable_text_line( uint8_t width, FuriString* string, size_t scroll, - bool ellipsis); + bool ellipsis, + bool centered); /** Draw text box element * diff --git a/applications/services/gui/modules/file_browser.c b/applications/services/gui/modules/file_browser.c index 47bf89079..6a87fa0f5 100644 --- a/applications/services/gui/modules/file_browser.c +++ b/applications/services/gui/modules/file_browser.c @@ -604,7 +604,8 @@ static void browser_draw_list(Canvas* canvas, FileBrowserModel* model) { (show_scrollbar ? MAX_LEN_PX - 6 : MAX_LEN_PX), filename, scroll_counter, - (model->item_idx != idx)); + (model->item_idx != idx), + false); } if(show_scrollbar) { diff --git a/firmware/targets/f7/api_symbols.csv b/firmware/targets/f7/api_symbols.csv index 6192cafed..477a2ca33 100644 --- a/firmware/targets/f7/api_symbols.csv +++ b/firmware/targets/f7/api_symbols.csv @@ -831,7 +831,7 @@ Function,+,elements_multiline_text_aligned,void,"Canvas*, uint8_t, uint8_t, Alig Function,+,elements_multiline_text_framed,void,"Canvas*, uint8_t, uint8_t, const char*" Function,+,elements_progress_bar,void,"Canvas*, uint8_t, uint8_t, uint8_t, float" Function,+,elements_progress_bar_with_text,void,"Canvas*, uint8_t, uint8_t, uint8_t, float, const char*" -Function,+,elements_scrollable_text_line,void,"Canvas*, uint8_t, uint8_t, uint8_t, FuriString*, size_t, _Bool" +Function,+,elements_scrollable_text_line,void,"Canvas*, uint8_t, uint8_t, uint8_t, FuriString*, size_t, _Bool, _Bool" Function,+,elements_scrollbar,void,"Canvas*, uint16_t, uint16_t" Function,+,elements_scrollbar_pos,void,"Canvas*, uint8_t, uint8_t, uint8_t, uint16_t, uint16_t" Function,+,elements_slightly_rounded_box,void,"Canvas*, uint8_t, uint8_t, uint8_t, uint8_t"