Add cstr version of elements_scrollable_text_line

This commit is contained in:
Willy-JL
2023-04-30 22:10:00 +01:00
parent 3a07160c38
commit b851102801
4 changed files with 28 additions and 7 deletions

View File

@@ -573,16 +573,16 @@ void elements_string_fit_width(Canvas* canvas, FuriString* string, uint8_t width
} }
} }
void elements_scrollable_text_line( void elements_scrollable_text_line_str(
Canvas* canvas, Canvas* canvas,
uint8_t x, uint8_t x,
uint8_t y, uint8_t y,
uint8_t width, uint8_t width,
FuriString* string, const char* string,
size_t scroll, size_t scroll,
bool ellipsis, bool ellipsis,
bool centered) { bool centered) {
FuriString* line = furi_string_alloc_set(string); FuriString* line = furi_string_alloc_set_str(string);
size_t len_px = canvas_string_width(canvas, furi_string_get_cstr(line)); size_t len_px = canvas_string_width(canvas, furi_string_get_cstr(line));
if(len_px > width) { if(len_px > width) {
@@ -631,6 +631,18 @@ void elements_scrollable_text_line(
furi_string_free(line); furi_string_free(line);
} }
void elements_scrollable_text_line(
Canvas* canvas,
uint8_t x,
uint8_t y,
uint8_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( void elements_text_box(
Canvas* canvas, Canvas* canvas,
uint8_t x, uint8_t x,

View File

@@ -220,6 +220,15 @@ void elements_string_fit_width(Canvas* canvas, FuriString* string, uint8_t width
* @param[in] ellipsis The ellipsis flag: true to add ellipse * @param[in] ellipsis The ellipsis flag: true to add ellipse
* @param[in] centered The centered flag: true to center text on x and y * @param[in] centered The centered flag: true to center text on x and y
*/ */
void elements_scrollable_text_line_str(
Canvas* canvas,
uint8_t x,
uint8_t y,
uint8_t width,
const char* string,
size_t scroll,
bool ellipsis,
bool centered);
void elements_scrollable_text_line( void elements_scrollable_text_line(
Canvas* canvas, Canvas* canvas,
uint8_t x, uint8_t x,

View File

@@ -47,9 +47,9 @@ static void menu_draw_callback(Canvas* canvas, void* _model) {
size_t items_count = MenuItemArray_size(model->items); size_t items_count = MenuItemArray_size(model->items);
if(items_count) { if(items_count) {
MenuItem* item; MenuItem* item;
FuriString* name = furi_string_alloc();
size_t shift_position; size_t shift_position;
if(XTREME_SETTINGS()->wii_menu) { if(XTREME_SETTINGS()->wii_menu) {
FuriString* name = furi_string_alloc();
if(position < 2) { if(position < 2) {
shift_position = 0; shift_position = 0;
} else if(position >= items_count - 2 + (items_count % 2)) { } else if(position >= items_count - 2 + (items_count % 2)) {
@@ -99,6 +99,7 @@ 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);
} else { } else {
// First line // First line
canvas_set_font(canvas, FontSecondary); canvas_set_font(canvas, FontSecondary);
@@ -129,8 +130,7 @@ static void menu_draw_callback(Canvas* canvas, void* _model) {
} else { } else {
scroll_counter -= 1; scroll_counter -= 1;
} }
furi_string_set(name, item->label); elements_scrollable_text_line_str(canvas, 22, 36, 98, item->label, scroll_counter, false, false);
elements_scrollable_text_line(canvas, 22, 36, 98, name, scroll_counter, false, false);
// Third line // Third line
canvas_set_font(canvas, FontSecondary); canvas_set_font(canvas, FontSecondary);
shift_position = (2 + position + items_count - 1) % items_count; shift_position = (2 + position + items_count - 1) % items_count;
@@ -147,7 +147,6 @@ static void menu_draw_callback(Canvas* canvas, void* _model) {
elements_frame(canvas, 0, 21, 128 - 5, 21); elements_frame(canvas, 0, 21, 128 - 5, 21);
elements_scrollbar(canvas, position, items_count); elements_scrollbar(canvas, position, items_count);
} }
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);

View File

@@ -853,6 +853,7 @@ Function,+,elements_multiline_text_framed,void,"Canvas*, uint8_t, uint8_t, const
Function,+,elements_progress_bar,void,"Canvas*, uint8_t, uint8_t, uint8_t, float" 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_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, _Bool" Function,+,elements_scrollable_text_line,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,void,"Canvas*, uint16_t, uint16_t"
Function,+,elements_scrollbar_pos,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_box,void,"Canvas*, uint8_t, uint8_t, uint8_t, uint8_t"
1 entry status name type params
853 Function + elements_progress_bar void Canvas*, uint8_t, uint8_t, uint8_t, float
854 Function + elements_progress_bar_with_text void Canvas*, uint8_t, uint8_t, uint8_t, float, const char*
855 Function + elements_scrollable_text_line void Canvas*, uint8_t, uint8_t, uint8_t, FuriString*, size_t, _Bool, _Bool
856 Function + elements_scrollable_text_line_str void Canvas*, uint8_t, uint8_t, uint8_t, const char*, size_t, _Bool, _Bool
857 Function + elements_scrollbar void Canvas*, uint16_t, uint16_t
858 Function + elements_scrollbar_pos void Canvas*, uint8_t, uint8_t, uint8_t, uint16_t, uint16_t
859 Function + elements_slightly_rounded_box void Canvas*, uint8_t, uint8_t, uint8_t, uint8_t