mirror of
https://github.com/HASwitchPlate/openHASP.git
synced 2025-07-19 17:26:38 +00:00
Fix dropdown text when show_selected=0
This commit is contained in:
parent
22b9d894dc
commit
31a1272c5e
@ -1751,6 +1751,7 @@ static hasp_attribute_type_t attribute_common_text(lv_obj_t* obj, uint16_t attr_
|
||||
{LV_HASP_LABEL, ATTR_TEXT, my_label_set_text, my_label_get_text},
|
||||
{LV_HASP_LABEL, ATTR_TEMPLATE, my_obj_set_template, my_obj_get_template},
|
||||
{LV_HASP_CHECKBOX, ATTR_TEXT, lv_checkbox_set_text, lv_checkbox_get_text},
|
||||
{LV_HASP_DROPDOWN, ATTR_TEXT, my_dropdown_set_text, my_dropdown_get_text},
|
||||
{LV_HASP_TABVIEW, ATTR_TEXT, my_tabview_set_text, my_tabview_get_text},
|
||||
{LV_HASP_TEXTAREA, ATTR_TEXT, lv_textarea_set_text, lv_textarea_get_text},
|
||||
{LV_HASP_TAB, ATTR_TEXT, my_tab_set_text, my_tab_get_text},
|
||||
|
@ -472,6 +472,31 @@ lv_obj_t* FindButtonLabel(lv_obj_t* btn)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// OK - lvgl does not return a const char *
|
||||
static const char* my_dropdown_get_text(const lv_obj_t* dd)
|
||||
{
|
||||
const char* str_p = lv_dropdown_get_text((lv_obj_t*)dd);
|
||||
return str_p ? str_p : "";
|
||||
}
|
||||
|
||||
// OK - lvgl does not return a const char *
|
||||
static void my_dropdown_set_text(lv_obj_t* dd, const char* text)
|
||||
{
|
||||
size_t len = 0;
|
||||
if(text) len = strlen(text) + 1;
|
||||
|
||||
// release previous text
|
||||
char* str_p = (char*)lv_dropdown_get_text(dd);
|
||||
if(str_p) lv_mem_free(str_p);
|
||||
|
||||
// reserve and copy new text
|
||||
str_p = (char*)lv_mem_alloc(len);
|
||||
if(str_p != NULL) strncpy(str_p, text, len);
|
||||
|
||||
lv_dropdown_set_text((lv_obj_t*)dd, str_p); // library does not return const
|
||||
lv_obj_invalidate(dd); // Needed if old ptr is equal to new ptr
|
||||
}
|
||||
|
||||
// OK - lvgl does not return a const char *
|
||||
static const char* my_label_get_text(const lv_obj_t* label)
|
||||
{
|
||||
|
@ -99,6 +99,10 @@ void delete_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
my_obj_del_task(obj);
|
||||
break;
|
||||
|
||||
case LV_HASP_DROPDOWN:
|
||||
lv_mem_free(lv_dropdown_get_text(obj));
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -302,8 +306,8 @@ static void event_object_selection_changed(lv_obj_t* obj, uint8_t eventid, int16
|
||||
char eventname[8];
|
||||
Parser::get_event_name(eventid, eventname, sizeof(eventname));
|
||||
if(const char* tag = my_obj_get_tag(obj))
|
||||
snprintf_P(data, sizeof(data), PSTR("{\"event\":\"%s\",\"val\":%d,\"text\":%s,\"tag\":%s}"), eventname,
|
||||
val, serialized_text, tag);
|
||||
snprintf_P(data, sizeof(data), PSTR("{\"event\":\"%s\",\"val\":%d,\"text\":%s,\"tag\":%s}"), eventname, val,
|
||||
serialized_text, tag);
|
||||
else
|
||||
snprintf_P(data, sizeof(data), PSTR("{\"event\":\"%s\",\"val\":%d,\"text\":%s}"), eventname, val,
|
||||
serialized_text);
|
||||
|
@ -640,6 +640,7 @@ void hasp_new_object(const JsonObject& config, uint8_t& saved_page_id)
|
||||
case HASP_OBJ_DROPDOWN:
|
||||
obj = lv_dropdown_create(parent_obj, NULL);
|
||||
if(obj) {
|
||||
lv_dropdown_set_text(obj, NULL); // Clear default text
|
||||
lv_dropdown_set_draw_arrow(obj, true);
|
||||
// lv_dropdown_set_anim_time(obj, 200);
|
||||
lv_obj_set_top(obj, true);
|
||||
|
Loading…
x
Reference in New Issue
Block a user