diff --git a/applications/services/gui/elements.c b/applications/services/gui/elements.c index 36da76636..5b1f14cba 100644 --- a/applications/services/gui/elements.c +++ b/applications/services/gui/elements.c @@ -101,14 +101,17 @@ void elements_scrollbar_horizontal( size_t pos, size_t total) { furi_check(canvas); + // prevent overflows canvas_set_color(canvas, ColorWhite); canvas_draw_box(canvas, x, y - 3, width, 3); + // dot line canvas_set_color(canvas, ColorBlack); for(size_t i = x; i < width + x; i += 2) { canvas_draw_dot(canvas, i, y - 2); } + // Position block if(total) { float block_w = ((float)width) / total; @@ -606,12 +609,23 @@ void elements_string_fit_width(Canvas* canvas, FuriString* string, size_t width) } } -void elements_scrollable_text_line_str( +void elements_scrollable_text_line( Canvas* canvas, int32_t x, int32_t y, size_t width, - const char* string, + FuriString* string, + size_t scroll, + bool ellipsis) { + elements_scrollable_text_line_centered(canvas, x, y, width, string, scroll, ellipsis, false); +} + +void elements_scrollable_text_line_centered( + Canvas* canvas, + int32_t x, + int32_t y, + size_t width, + FuriString* string, size_t scroll, bool ellipsis, bool centered) { @@ -667,31 +681,6 @@ void elements_scrollable_text_line_str( furi_string_free(line); } -void elements_scrollable_text_line( - Canvas* canvas, - int32_t x, - int32_t y, - size_t width, - FuriString* string, - size_t scroll, - bool ellipsis) { - elements_scrollable_text_line_str( - canvas, x, y, width, furi_string_get_cstr(string), scroll, ellipsis, false); -} - -void elements_scrollable_text_line_centered( - Canvas* canvas, - int32_t x, - int32_t y, - size_t width, - FuriString* string, - size_t scroll, - bool ellipsis, - bool centered) { - elements_scrollable_text_line_str( - canvas, x, y, width, furi_string_get_cstr(string), scroll, ellipsis, centered); -} - void elements_text_box( Canvas* canvas, int32_t x, diff --git a/applications/services/gui/elements.h b/applications/services/gui/elements.h index e23d6265a..7144d4d18 100644 --- a/applications/services/gui/elements.h +++ b/applications/services/gui/elements.h @@ -229,17 +229,7 @@ void elements_string_fit_width(Canvas* canvas, FuriString* string, size_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_str( - Canvas* canvas, - int32_t x, - int32_t y, - size_t width, - const char* string, - size_t scroll, - bool ellipsis, - bool centered); void elements_scrollable_text_line( Canvas* canvas, int32_t x, @@ -248,6 +238,18 @@ void elements_scrollable_text_line( FuriString* string, size_t scroll, bool ellipsis); + +/** Draw scrollable text line, optionally centered + * + * @param canvas The canvas + * @param[in] x X coordinate + * @param[in] y Y coordinate + * @param[in] width The 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 horizontally, x coordinate will indicate the middle + */ void elements_scrollable_text_line_centered( Canvas* canvas, int32_t x, diff --git a/targets/f7/api_symbols.csv b/targets/f7/api_symbols.csv index 313bf34bf..f979bbbbb 100644 --- a/targets/f7/api_symbols.csv +++ b/targets/f7/api_symbols.csv @@ -997,7 +997,6 @@ Function,+,elements_progress_bar,void,"Canvas*, int32_t, int32_t, size_t, float" Function,+,elements_progress_bar_with_text,void,"Canvas*, int32_t, int32_t, size_t, float, const char*" Function,+,elements_scrollable_text_line,void,"Canvas*, int32_t, int32_t, size_t, FuriString*, size_t, _Bool" Function,+,elements_scrollable_text_line_centered,void,"Canvas*, int32_t, int32_t, size_t, FuriString*, size_t, _Bool, _Bool" -Function,+,elements_scrollable_text_line_str,void,"Canvas*, int32_t, int32_t, size_t, const char*, size_t, _Bool, _Bool" Function,+,elements_scrollbar,void,"Canvas*, size_t, size_t" Function,+,elements_scrollbar_horizontal,void,"Canvas*, int32_t, int32_t, size_t, size_t, size_t" Function,+,elements_scrollbar_pos,void,"Canvas*, int32_t, int32_t, size_t, size_t, size_t"