[FL-2475] Text Box add three dots trim option (#1136)

* introduce text box debug application
* text box: add strip to dots option
* applications: update text box usage

Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
gornekich
2022-04-19 22:23:50 +03:00
committed by GitHub
parent 57312961e8
commit 9351076c89
17 changed files with 226 additions and 62 deletions

7
applications/gui/modules/widget.c Executable file → Normal file
View File

@@ -154,10 +154,11 @@ void widget_add_text_box_element(
uint8_t height,
Align horizontal,
Align vertical,
const char* text) {
const char* text,
bool strip_to_dots) {
furi_assert(widget);
WidgetElement* text_box_element =
widget_element_text_box_create(x, y, width, height, horizontal, vertical, text);
WidgetElement* text_box_element = widget_element_text_box_create(
x, y, width, height, horizontal, vertical, text, strip_to_dots);
widget_add_element(widget, text_box_element);
}

View File

@@ -81,17 +81,18 @@ void widget_add_string_element(
/** Add Text Box Element
*
* @param widget Widget instance
* @param x x coordinate
* @param y y coordinate
* @param width width to fit text
* @param height height to fit text
* @param horizontal Align instance
* @param vertical Align instance
* @param[in] text Formatted text. The following formats are available:
* "\e#Bold text\e#" - bold font is used
* "\e*Monospaced text\e*" - monospaced font is used
* "\e#Inversed text\e#" - white text on black background
* @param widget Widget instance
* @param x x coordinate
* @param y y coordinate
* @param width width to fit text
* @param height height to fit text
* @param horizontal Align instance
* @param vertical Align instance
* @param[in] text Formatted text. The following formats are available:
* "\e#Bold text\e#" - bold font is used
* "\e*Monospaced text\e*" - monospaced font is used
* "\e#Inversed text\e#" - white text on black background
* @param strip_to_dots Strip text to ... if does not fit to width
*/
void widget_add_text_box_element(
Widget* widget,
@@ -101,7 +102,8 @@ void widget_add_text_box_element(
uint8_t height,
Align horizontal,
Align vertical,
const char* text);
const char* text,
bool strip_to_dots);
/** Add Button Element
*

View File

@@ -60,7 +60,8 @@ WidgetElement* widget_element_text_box_create(
uint8_t height,
Align horizontal,
Align vertical,
const char* text);
const char* text,
bool strip_to_dots);
/** Create button element */
WidgetElement* widget_element_button_create(

View File

@@ -10,6 +10,7 @@ typedef struct {
Align horizontal;
Align vertical;
string_t text;
bool strip_to_dots;
} GuiTextBoxModel;
static void gui_text_box_draw(Canvas* canvas, WidgetElement* element) {
@@ -26,7 +27,8 @@ static void gui_text_box_draw(Canvas* canvas, WidgetElement* element) {
model->height,
model->horizontal,
model->vertical,
string_get_cstr(model->text));
string_get_cstr(model->text),
model->strip_to_dots);
}
}
@@ -46,7 +48,8 @@ WidgetElement* widget_element_text_box_create(
uint8_t height,
Align horizontal,
Align vertical,
const char* text) {
const char* text,
bool strip_to_dots) {
furi_assert(text);
// Allocate and init model
@@ -58,6 +61,7 @@ WidgetElement* widget_element_text_box_create(
model->horizontal = horizontal;
model->vertical = vertical;
string_init_set_str(model->text, text);
model->strip_to_dots = strip_to_dots;
// Allocate and init Element
WidgetElement* gui_string = malloc(sizeof(WidgetElement));