diff --git a/applications/services/gui/elements.c b/applications/services/gui/elements.c index f70a9f232..dac046d51 100644 --- a/applications/services/gui/elements.c +++ b/applications/services/gui/elements.c @@ -90,6 +90,29 @@ void elements_scrollbar_pos( } } +void elements_scrollbar_horizontal( + Canvas* canvas, + uint8_t x, + uint8_t y, + uint8_t width, + uint16_t pos, + uint16_t total) { + furi_assert(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(uint8_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; + canvas_draw_box(canvas, x + (block_w * pos), y - 3, MAX(block_w, 1), 3); + } +} + void elements_scrollbar(Canvas* canvas, uint16_t pos, uint16_t total) { furi_assert(canvas); diff --git a/applications/services/gui/elements.h b/applications/services/gui/elements.h index e8029f75b..f565b0ad8 100644 --- a/applications/services/gui/elements.h +++ b/applications/services/gui/elements.h @@ -65,6 +65,23 @@ void elements_scrollbar_pos( uint16_t pos, uint16_t total); +/** Draw horizontal scrollbar on canvas at specific position. + * + * @param canvas Canvas instance + * @param x scrollbar position on X axis + * @param y scrollbar position on Y axis + * @param width scrollbar width + * @param pos current element + * @param total total elements + */ +void elements_scrollbar_horizontal( + Canvas* canvas, + uint8_t x, + uint8_t y, + uint8_t width, + uint16_t pos, + uint16_t total); + /** Draw scrollbar on canvas. * @note width 3px, height equal to canvas height * diff --git a/firmware/targets/f7/api_symbols.csv b/firmware/targets/f7/api_symbols.csv index ab4be83c0..47b8d0eed 100644 --- a/firmware/targets/f7/api_symbols.csv +++ b/firmware/targets/f7/api_symbols.csv @@ -1,5 +1,5 @@ entry,status,name,type,params -Version,+,34.4,, +Version,+,34.5,, Header,+,applications/drivers/subghz/cc1101_ext/cc1101_ext_interconnect.h,, Header,+,applications/main/archive/helpers/favorite_timeout.h,, Header,+,applications/services/applications.h,, @@ -841,6 +841,7 @@ Function,+,elements_scrollable_text_line,void,"Canvas*, uint8_t, uint8_t, uint8_ Function,+,elements_scrollable_text_line_centered,void,"Canvas*, uint8_t, uint8_t, uint8_t, FuriString*, size_t, _Bool, _Bool" Function,+,elements_scrollable_text_line_str,void,"Canvas*, uint8_t, uint8_t, uint8_t, const char*, size_t, _Bool, _Bool" Function,+,elements_scrollbar,void,"Canvas*, uint16_t, uint16_t" +Function,+,elements_scrollbar_horizontal,void,"Canvas*, uint8_t, uint8_t, uint8_t, 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" Function,+,elements_slightly_rounded_frame,void,"Canvas*, uint8_t, uint8_t, uint8_t, uint8_t"