Add long mode for buttons

This commit is contained in:
fvanroie 2020-03-29 20:40:14 +02:00
parent 0bef2ec42a
commit 9979fe9e71

View File

@ -98,25 +98,32 @@ void set_label_long_mode(lv_obj_t * obj, const char * payload)
lv_label_set_long_mode(obj, mode); lv_label_set_long_mode(obj, mode);
} }
void haspSetLabelText(lv_obj_t * obj, const char * value) lv_obj_t * FindButtonLabel(lv_obj_t * btn)
{ {
if(!obj) { if(btn) {
Log.warning(F("HASP: Button not defined")); lv_obj_t * label = lv_obj_get_child_back(btn, NULL);
return;
}
lv_obj_t * label = lv_obj_get_child_back(obj, NULL);
if(label) { if(label) {
lv_obj_type_t list; lv_obj_type_t list;
lv_obj_get_type(label, &list); lv_obj_get_type(label, &list);
if(check_obj_type(list.type[0], LV_HASP_LABEL)) { if(check_obj_type(list.type[0], LV_HASP_LABEL)) {
Log.verbose(F("HASP: Setting value to %s"), value); return label;
lv_label_set_text(label, value);
} }
} else { } else {
Log.error(F("HASP: haspSetLabelText NULL Pointer encountered")); Log.error(F("HASP: FindButtonLabel NULL Pointer encountered"));
}
} else {
Log.warning(F("HASP: Button not defined"));
}
return NULL;
}
static inline void haspSetLabelText(lv_obj_t * obj, const char * value)
{
lv_obj_t * label = FindButtonLabel(obj);
if(label) {
lv_label_set_text(label, value);
} }
} }
@ -138,7 +145,6 @@ void haspSetLocalStyle(lv_obj_t * obj, const char * attr_p, const char * payload
int16_t var = atoi(payload); int16_t var = atoi(payload);
int len = strlen(attr_p); int len = strlen(attr_p);
if(len > 0) { if(len > 0) {
// Check Trailing partnumber // Check Trailing partnumber
if(attr_p[len - 1] == '1') { if(attr_p[len - 1] == '1') {
@ -152,15 +158,14 @@ void haspSetLocalStyle(lv_obj_t * obj, const char * attr_p, const char * payload
// } else if(attr[len - 1] == '9') { // } else if(attr[len - 1] == '9') {
// part = LV_PAGE_PART_SCRL; // part = LV_PAGE_PART_SCRL;
} }
}
// Remove Trailing part digit // Remove Trailing part digit
char attr[128]; char attr[128];
if(part != LV_TABLE_PART_BG && len > 0) { if(part != LV_TABLE_PART_BG && len > 0) {
strncpy(attr, attr_p, len - 1); len--;
} else {
strncpy(attr, attr_p, len);
} }
strncpy(attr, attr_p, len + 1);
attr[len] = 0;
// debugPrintln(strAttr + "&" + part); // debugPrintln(strAttr + "&" + part);
@ -352,9 +357,10 @@ void haspSetLocalStyle(lv_obj_t * obj, const char * attr_p, const char * payload
} else if(!strcmp_P(attr, PSTR("line_opa"))) { } else if(!strcmp_P(attr, PSTR("line_opa"))) {
return lv_obj_set_style_local_line_opa(obj, part, state, (lv_opa_t)var); return lv_obj_set_style_local_line_opa(obj, part, state, (lv_opa_t)var);
} }
}
/* Property not found */ /* Property not found */
haspAttributeNotFound(attr); haspAttributeNotFound(attr_p);
} }
void haspSetObjAttribute1(lv_obj_t * obj, const char * attr, const char * payload) void haspSetObjAttribute1(lv_obj_t * obj, const char * attr, const char * payload)
@ -548,6 +554,15 @@ void haspSetObjAttribute4(lv_obj_t * obj, const char * attr, const char * payloa
} }
if(!strcmp_P(attr, PSTR("mode"))) { if(!strcmp_P(attr, PSTR("mode"))) {
if(check_obj_type(list.type[0], LV_HASP_BUTTON)) {
lv_obj_t * label = FindButtonLabel(obj);
if(label) {
set_label_long_mode(label, payload);
lv_obj_set_width(label, lv_obj_get_width(obj));
}
return;
}
if(check_obj_type(list.type[0], LV_HASP_LABEL)) { if(check_obj_type(list.type[0], LV_HASP_LABEL)) {
set_label_long_mode(obj, payload); set_label_long_mode(obj, payload);
return; return;
@ -563,7 +578,7 @@ void haspSetObjAttribute6(lv_obj_t * obj, const char * attr, const char * payloa
int16_t val = atoi(payload); int16_t val = atoi(payload);
if(!strcmp_P(attr, PSTR("hidden"))) { if(!strcmp_P(attr, PSTR("hidden"))) {
lv_obj_set_hidden(obj, val == 0); lv_obj_set_hidden(obj, is_true(payload));
return; return;
} else { } else {
lv_obj_type_t list; lv_obj_type_t list;
@ -571,7 +586,7 @@ void haspSetObjAttribute6(lv_obj_t * obj, const char * attr, const char * payloa
if(!strcmp_P(attr, PSTR("toggle"))) { if(!strcmp_P(attr, PSTR("toggle"))) {
if(check_obj_type(list.type[0], LV_HASP_BUTTON)) { if(check_obj_type(list.type[0], LV_HASP_BUTTON)) {
haspSetToggle(obj, atoi(payload) > 0); haspSetToggle(obj, is_true(payload));
return; return;
} }
} }
@ -587,7 +602,7 @@ void haspSetObjAttribute7(lv_obj_t * obj, const char * attr, const char * payloa
haspSetOpacity(obj, val); haspSetOpacity(obj, val);
return; return;
} else if(!strcmp_P(attr, PSTR("enabled"))) { } else if(!strcmp_P(attr, PSTR("enabled"))) {
lv_obj_set_click(obj, val != 0); lv_obj_set_click(obj, is_true(payload));
return; return;
} else if(!strcmp_P(attr, PSTR("options"))) { } else if(!strcmp_P(attr, PSTR("options"))) {
/* .options depend on objecttype */ /* .options depend on objecttype */