mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-16 04:24:45 -07:00
Add cstr version of elements_scrollable_text_line
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
|
Reference in New Issue
Block a user