Remove String usage

This commit is contained in:
fvanroie 2020-03-29 03:05:58 +02:00
parent 93ec40f348
commit 00bd0707ed
2 changed files with 170 additions and 160 deletions

View File

@ -9,6 +9,11 @@
LV_FONT_DECLARE(unscii_8_icon);
static inline bool is_true(const char * s)
{
return (!strcmp_P(s, PSTR("true")) || !strcmp_P(s, PSTR("TRUE")) || !strcmp_P(s, PSTR("1")));
}
lv_color_t haspLogColor(lv_color_t color)
{
uint8_t r = (LV_COLOR_GET_R(color) * 263 + 7) >> 5;
@ -25,26 +30,26 @@ lv_color_t haspPayloadToColor(const char * payload)
if(!strcmp_P(payload, PSTR("red"))) return haspLogColor(LV_COLOR_RED);
break;
case 4:
if(!strcmp_P(payload, PSTR("aqua"))) return haspLogColor(LV_COLOR_AQUA);
if(!strcmp_P(payload, PSTR("blue"))) return haspLogColor(LV_COLOR_BLUE);
if(!strcmp_P(payload, PSTR("cyan"))) return haspLogColor(LV_COLOR_CYAN);
if(!strcmp_P(payload, PSTR("gray"))) return haspLogColor(LV_COLOR_GRAY);
if(!strcmp_P(payload, PSTR("aqua"))) return haspLogColor(LV_COLOR_AQUA);
if(!strcmp_P(payload, PSTR("lime"))) return haspLogColor(LV_COLOR_LIME);
if(!strcmp_P(payload, PSTR("teal"))) return haspLogColor(LV_COLOR_TEAL);
if(!strcmp_P(payload, PSTR("navy"))) return haspLogColor(LV_COLOR_NAVY);
break;
case 5:
if(!strcmp_P(payload, PSTR("olive"))) return haspLogColor(LV_COLOR_OLIVE);
if(!strcmp_P(payload, PSTR("green"))) return haspLogColor(LV_COLOR_GREEN);
if(!strcmp_P(payload, PSTR("white"))) return haspLogColor(LV_COLOR_WHITE);
if(!strcmp_P(payload, PSTR("black"))) return haspLogColor(LV_COLOR_BLACK);
if(!strcmp_P(payload, PSTR("olive"))) return haspLogColor(LV_COLOR_OLIVE);
break;
case 6:
if(!strcmp_P(payload, PSTR("maroon"))) return haspLogColor(LV_COLOR_MAROON);
if(!strcmp_P(payload, PSTR("yellow"))) return haspLogColor(LV_COLOR_YELLOW);
if(!strcmp_P(payload, PSTR("orange"))) return haspLogColor(LV_COLOR_ORANGE);
if(!strcmp_P(payload, PSTR("purple"))) return haspLogColor(LV_COLOR_PURPLE);
if(!strcmp_P(payload, PSTR("silver"))) return haspLogColor(LV_COLOR_SILVER);
if(!strcmp_P(payload, PSTR("yellow"))) return haspLogColor(LV_COLOR_YELLOW);
if(!strcmp_P(payload, PSTR("maroon"))) return haspLogColor(LV_COLOR_MAROON);
break;
case 7:
if(!strcmp_P(payload, PSTR("magenta"))) return haspLogColor(LV_COLOR_MAGENTA);
@ -65,9 +70,9 @@ lv_color_t haspPayloadToColor(const char * payload)
return LV_COLOR_BLACK;
}
void haspAttributeNotFound(String & strAttr)
static void haspAttributeNotFound(const char * attr)
{
Log.warning(F("HASP: Unknown property %s"), strAttr.c_str());
Log.warning(F("HASP: Unknown property %s"), attr);
}
void set_cpicker_value(lv_obj_t * obj, const char * payload)
@ -110,142 +115,150 @@ void haspSetOpacity(lv_obj_t * obj, uint8_t val)
#endif
}
void haspSetLocalStyle(lv_obj_t * obj, String & strAttr, String & strPayload)
void haspSetLocalStyle(lv_obj_t * obj, const char * attr_p, const char * payload)
{
uint8_t part = LV_TABLE_PART_BG;
uint8_t state = LV_STATE_DEFAULT;
int16_t var = strPayload.toInt();
// lv_color_t color = lv_color_hex((uint32_t)strPayload.toInt());
// debugPrintln(strAttr + ":" + strPayload);
int16_t var = atoi(payload);
// Check Trailing partnumber
if(strAttr.endsWith(F("1"))) {
part = LV_TABLE_PART_CELL1;
} else if(strAttr.endsWith(F("2"))) {
part = LV_TABLE_PART_CELL2;
} else if(strAttr.endsWith(F("3"))) {
part = LV_TABLE_PART_CELL3;
} else if(strAttr.endsWith(F("4"))) {
part = LV_TABLE_PART_CELL4;
// } else if(strAttr.endsWith(F("9"))) {
// part = LV_PAGE_PART_SCRL;
int len = strlen(attr_p);
if(len > 0) {
// Check Trailing partnumber
if(attr_p[len - 1] == '1') {
part = LV_TABLE_PART_CELL1;
} else if(attr_p[len - 1] == '2') {
part = LV_TABLE_PART_CELL2;
} else if(attr_p[len - 1] == '3') {
part = LV_TABLE_PART_CELL3;
} else if(attr_p[len - 1] == '4') {
part = LV_TABLE_PART_CELL4;
// } else if(attr[len - 1] == '9') {
// part = LV_PAGE_PART_SCRL;
}
}
// Remove Trailing part digit
if(part != LV_TABLE_PART_BG && strAttr.length() > 0) strAttr.remove(strAttr.length() - 1);
char attr[128];
if(part != LV_TABLE_PART_BG && len > 0) {
strncpy(attr, attr_p, len - 1);
} else {
strncpy(attr, attr_p, len);
}
// debugPrintln(strAttr + "&" + part);
if(strAttr == F("radius")) {
if(!strcmp_P(attr, PSTR("radius"))) {
return lv_obj_set_style_local_radius(obj, part, state, (lv_style_int_t)var);
} else if(strAttr == F("clip_corner")) {
} else if(!strcmp_P(attr, PSTR("clip_corner"))) {
return lv_obj_set_style_local_clip_corner(obj, part, state, (bool)var);
} else if(strAttr == F("size")) {
} else if(!strcmp_P(attr, PSTR("size"))) {
return lv_obj_set_style_local_size(obj, part, state, (lv_style_int_t)var);
} else if(strAttr == F("transform_width")) {
} else if(!strcmp_P(attr, PSTR("transform_width"))) {
return lv_obj_set_style_local_transform_width(obj, part, state, (lv_style_int_t)var);
} else if(strAttr == F("transform_height")) {
} else if(!strcmp_P(attr, PSTR("transform_height"))) {
return lv_obj_set_style_local_transform_height(obj, part, state, (lv_style_int_t)var);
} else if(strAttr == F("opa_scale")) {
} else if(!strcmp_P(attr, PSTR("opa_scale"))) {
return lv_obj_set_style_local_opa_scale(obj, part, state, (lv_opa_t)var);
} else if(strAttr == F("pad_top")) {
} else if(!strcmp_P(attr, PSTR("pad_top"))) {
return lv_obj_set_style_local_pad_top(obj, part, state, (lv_style_int_t)var);
} else if(strAttr == F("pad_bottom")) {
} else if(!strcmp_P(attr, PSTR("pad_bottom"))) {
return lv_obj_set_style_local_pad_bottom(obj, part, state, (lv_style_int_t)var);
} else if(strAttr == F("pad_left")) {
} else if(!strcmp_P(attr, PSTR("pad_left"))) {
return lv_obj_set_style_local_pad_left(obj, part, state, (lv_style_int_t)var);
} else if(strAttr == F("pad_right")) {
} else if(!strcmp_P(attr, PSTR("pad_right"))) {
return lv_obj_set_style_local_pad_right(obj, part, state, (lv_style_int_t)var);
} else if(strAttr == F("pad_inner")) {
} else if(!strcmp_P(attr, PSTR("pad_inner"))) {
return lv_obj_set_style_local_pad_inner(obj, part, state, (lv_style_int_t)var);
} else if(strAttr == F("bg_blend_mode")) {
} else if(!strcmp_P(attr, PSTR("bg_blend_mode"))) {
return lv_obj_set_style_local_bg_blend_mode(obj, part, state, (lv_blend_mode_t)var);
} else if(strAttr == F("bg_main_stop")) {
} else if(!strcmp_P(attr, PSTR("bg_main_stop"))) {
return lv_obj_set_style_local_bg_main_stop(obj, part, state, (lv_style_int_t)var);
} else if(strAttr == F("bg_grad_stop")) {
} else if(!strcmp_P(attr, PSTR("bg_grad_stop"))) {
return lv_obj_set_style_local_bg_grad_stop(obj, part, state, (lv_style_int_t)var);
} else if(strAttr == F("bg_grad_dir")) {
} else if(!strcmp_P(attr, PSTR("bg_grad_dir"))) {
return lv_obj_set_style_local_bg_grad_dir(obj, part, state, (lv_grad_dir_t)var);
} else if(strAttr == F("bg_color")) {
lv_color_t color = haspPayloadToColor(strPayload.c_str());
} else if(!strcmp_P(attr, PSTR("bg_color"))) {
lv_color_t color = haspPayloadToColor(payload);
if(part != 64)
return lv_obj_set_style_local_bg_color(obj, part, state, color);
else
return lv_obj_set_style_local_bg_color(obj, LV_PAGE_PART_SCRL, LV_STATE_CHECKED, color);
} else if(strAttr == F("bg_grad_color")) {
lv_color_t color = haspPayloadToColor(strPayload.c_str());
} else if(!strcmp_P(attr, PSTR("bg_grad_color"))) {
lv_color_t color = haspPayloadToColor(payload);
return lv_obj_set_style_local_bg_grad_color(obj, part, state, color);
} else if(strAttr == F("bg_opa")) {
} else if(!strcmp_P(attr, PSTR("bg_opa"))) {
return lv_obj_set_style_local_bg_opa(obj, part, state, (lv_opa_t)var);
} else if(strAttr == F("border_width")) {
} else if(!strcmp_P(attr, PSTR("border_width"))) {
return lv_obj_set_style_local_border_width(obj, part, state, (lv_style_int_t)var);
} else if(strAttr == F("border_side")) {
} else if(!strcmp_P(attr, PSTR("border_side"))) {
return lv_obj_set_style_local_border_side(obj, part, state, (lv_border_side_t)var);
} else if(strAttr == F("border_blend_mode")) {
} else if(!strcmp_P(attr, PSTR("border_blend_mode"))) {
return lv_obj_set_style_local_border_blend_mode(obj, part, state, (lv_blend_mode_t)var);
} else if(strAttr == F("border_post")) {
} else if(!strcmp_P(attr, PSTR("border_post"))) {
return lv_obj_set_style_local_border_post(obj, part, state, (bool)var);
} else if(strAttr == F("border_color")) {
lv_color_t color = haspPayloadToColor(strPayload.c_str());
} else if(!strcmp_P(attr, PSTR("border_color"))) {
lv_color_t color = haspPayloadToColor(payload);
return lv_obj_set_style_local_border_color(obj, part, state, color);
} else if(strAttr == F("border_opa")) {
} else if(!strcmp_P(attr, PSTR("border_opa"))) {
return lv_obj_set_style_local_border_opa(obj, part, state, (lv_opa_t)var);
} else if(strAttr == F("outline_width")) {
} else if(!strcmp_P(attr, PSTR("outline_width"))) {
return lv_obj_set_style_local_outline_width(obj, part, state, (lv_style_int_t)var);
} else if(strAttr == F("outline_pad")) {
} else if(!strcmp_P(attr, PSTR("outline_pad"))) {
return lv_obj_set_style_local_outline_pad(obj, part, state, (lv_style_int_t)var);
} else if(strAttr == F("outline_blend_mode")) {
} else if(!strcmp_P(attr, PSTR("outline_blend_mode"))) {
return lv_obj_set_style_local_outline_blend_mode(obj, part, state, (lv_blend_mode_t)var);
} else if(strAttr == F("outline_color")) {
lv_color_t color = haspPayloadToColor(strPayload.c_str());
} else if(!strcmp_P(attr, PSTR("outline_color"))) {
lv_color_t color = haspPayloadToColor(payload);
return lv_obj_set_style_local_outline_color(obj, part, state, color);
} else if(strAttr == F("outline_opa")) {
} else if(!strcmp_P(attr, PSTR("outline_opa"))) {
return lv_obj_set_style_local_outline_opa(obj, part, state, (lv_opa_t)var);
} else if(strAttr == F("shadow_width")) {
} else if(!strcmp_P(attr, PSTR("shadow_width"))) {
return lv_obj_set_style_local_shadow_width(obj, part, state, (lv_style_int_t)var);
} else if(strAttr == F("shadow_ofs_x")) {
} else if(!strcmp_P(attr, PSTR("shadow_ofs_x"))) {
return lv_obj_set_style_local_shadow_ofs_x(obj, part, state, (lv_style_int_t)var);
} else if(strAttr == F("shadow_ofs_y")) {
} else if(!strcmp_P(attr, PSTR("shadow_ofs_y"))) {
return lv_obj_set_style_local_shadow_ofs_y(obj, part, state, (lv_style_int_t)var);
} else if(strAttr == F("shadow_spread")) {
} else if(!strcmp_P(attr, PSTR("shadow_spread"))) {
return lv_obj_set_style_local_shadow_spread(obj, part, state, (lv_style_int_t)var);
} else if(strAttr == F("shadow_blend_mode")) {
} else if(!strcmp_P(attr, PSTR("shadow_blend_mode"))) {
return lv_obj_set_style_local_shadow_blend_mode(obj, part, state, (lv_blend_mode_t)var);
} else if(strAttr == F("shadow_color")) {
lv_color_t color = haspPayloadToColor(strPayload.c_str());
} else if(!strcmp_P(attr, PSTR("shadow_color"))) {
lv_color_t color = haspPayloadToColor(payload);
return lv_obj_set_style_local_shadow_color(obj, part, state, color);
} else if(strAttr == F("shadow_opa")) {
} else if(!strcmp_P(attr, PSTR("shadow_opa"))) {
return lv_obj_set_style_local_shadow_opa(obj, part, state, (lv_opa_t)var);
} else if(strAttr == F("pattern_repeat")) {
} else if(!strcmp_P(attr, PSTR("pattern_repeat"))) {
return lv_obj_set_style_local_pattern_repeat(obj, part, state, (bool)var);
} else if(strAttr == F("pattern_blend_mode")) {
} else if(!strcmp_P(attr, PSTR("pattern_blend_mode"))) {
return lv_obj_set_style_local_pattern_blend_mode(obj, part, state, (lv_blend_mode_t)var);
} else if(strAttr == F("pattern_recolor")) {
lv_color_t color = haspPayloadToColor(strPayload.c_str());
} else if(!strcmp_P(attr, PSTR("pattern_recolor"))) {
lv_color_t color = haspPayloadToColor(payload);
return lv_obj_set_style_local_pattern_recolor(obj, part, state, color);
} else if(strAttr == F("pattern_opa")) {
} else if(!strcmp_P(attr, PSTR("pattern_opa"))) {
return lv_obj_set_style_local_pattern_opa(obj, part, state, (lv_opa_t)var);
} else if(strAttr == F("pattern_recolor_opa")) {
} else if(!strcmp_P(attr, PSTR("pattern_recolor_opa"))) {
return lv_obj_set_style_local_pattern_recolor_opa(obj, part, state, (lv_opa_t)var);
} else if(strAttr == F("pattern_image")) {
} else if(!strcmp_P(attr, PSTR("pattern_image"))) {
// return lv_obj_set_style_local_pattern_image(obj, part, state, (constvoid *)var);
} else if(strAttr == F("value_letter_space")) {
} else if(!strcmp_P(attr, PSTR("value_letter_space"))) {
return lv_obj_set_style_local_value_letter_space(obj, part, state, (lv_style_int_t)var);
} else if(strAttr == F("value_line_space")) {
} else if(!strcmp_P(attr, PSTR("value_line_space"))) {
return lv_obj_set_style_local_value_line_space(obj, part, state, (lv_style_int_t)var);
} else if(strAttr == F("value_blend_mode")) {
} else if(!strcmp_P(attr, PSTR("value_blend_mode"))) {
return lv_obj_set_style_local_value_blend_mode(obj, part, state, (lv_blend_mode_t)var);
} else if(strAttr == F("value_ofs_x")) {
} else if(!strcmp_P(attr, PSTR("value_ofs_x"))) {
return lv_obj_set_style_local_value_ofs_x(obj, part, state, (lv_style_int_t)var);
} else if(strAttr == F("value_ofs_y")) {
} else if(!strcmp_P(attr, PSTR("value_ofs_y"))) {
return lv_obj_set_style_local_value_ofs_y(obj, part, state, (lv_style_int_t)var);
} else if(strAttr == F("value_align")) {
} else if(!strcmp_P(attr, PSTR("value_align"))) {
return lv_obj_set_style_local_value_align(obj, part, state, (lv_align_t)var);
} else if(strAttr == F("value_color")) {
lv_color_t color = haspPayloadToColor(strPayload.c_str());
} else if(!strcmp_P(attr, PSTR("value_color"))) {
lv_color_t color = haspPayloadToColor(payload);
return lv_obj_set_style_local_value_color(obj, part, state, color);
} else if(strAttr == F("value_opa")) {
} else if(!strcmp_P(attr, PSTR("value_opa"))) {
return lv_obj_set_style_local_value_opa(obj, part, state, (lv_opa_t)var);
} else if(strAttr == F("value_font")) {
} else if(!strcmp_P(attr, PSTR("value_font"))) {
#if ESP32
switch(var) {
case 8:
@ -267,25 +280,25 @@ void haspSetLocalStyle(lv_obj_t * obj, String & strAttr, String & strPayload)
return;
#endif
// return lv_obj_set_style_local_value_font(obj, part, state, (constlv_font_t *)var);
} else if(strAttr == F("value_str")) {
return lv_obj_set_style_local_value_str(obj, part, state, (const char *)strPayload.c_str());
} else if(strAttr == F("text_letter_space")) {
} else if(!strcmp_P(attr, PSTR("value_str"))) {
return lv_obj_set_style_local_value_str(obj, part, state, (const char *)payload);
} else if(!strcmp_P(attr, PSTR("text_letter_space"))) {
return lv_obj_set_style_local_text_letter_space(obj, part, state, (lv_style_int_t)var);
} else if(strAttr == F("text_line_space")) {
} else if(!strcmp_P(attr, PSTR("text_line_space"))) {
return lv_obj_set_style_local_text_line_space(obj, part, state, (lv_style_int_t)var);
} else if(strAttr == F("text_decor")) {
} else if(!strcmp_P(attr, PSTR("text_decor"))) {
return lv_obj_set_style_local_text_decor(obj, part, state, (lv_text_decor_t)var);
} else if(strAttr == F("text_blend_mode")) {
} else if(!strcmp_P(attr, PSTR("text_blend_mode"))) {
return lv_obj_set_style_local_text_blend_mode(obj, part, state, (lv_blend_mode_t)var);
} else if(strAttr == F("text_color")) {
lv_color_t color = haspPayloadToColor(strPayload.c_str());
} else if(!strcmp_P(attr, PSTR("text_color"))) {
lv_color_t color = haspPayloadToColor(payload);
return lv_obj_set_style_local_text_color(obj, part, state, color);
} else if(strAttr == F("text_sel_color")) {
lv_color_t color = haspPayloadToColor(strPayload.c_str());
} else if(!strcmp_P(attr, PSTR("text_sel_color"))) {
lv_color_t color = haspPayloadToColor(payload);
return lv_obj_set_style_local_text_sel_color(obj, part, state, color);
} else if(strAttr == F("text_opa")) {
} else if(!strcmp_P(attr, PSTR("text_opa"))) {
return lv_obj_set_style_local_text_opa(obj, part, state, (lv_opa_t)var);
} else if(strAttr == F("text_font")) {
} else if(!strcmp_P(attr, PSTR("text_font"))) {
#if ESP32
switch(var) {
case 8:
@ -307,52 +320,52 @@ void haspSetLocalStyle(lv_obj_t * obj, String & strAttr, String & strPayload)
return;
#endif
// return lv_obj_set_style_local_text_font(obj, part, state, (constlv_font_t *)var);
} else if(strAttr == F("line_width")) {
} else if(!strcmp_P(attr, PSTR("line_width"))) {
return lv_obj_set_style_local_line_width(obj, part, state, (lv_style_int_t)var);
} else if(strAttr == F("line_blend_mode")) {
} else if(!strcmp_P(attr, PSTR("line_blend_mode"))) {
return lv_obj_set_style_local_line_blend_mode(obj, part, state, (lv_blend_mode_t)var);
} else if(strAttr == F("line_dash_width")) {
} else if(!strcmp_P(attr, PSTR("line_dash_width"))) {
return lv_obj_set_style_local_line_dash_width(obj, part, state, (lv_style_int_t)var);
} else if(strAttr == F("line_dash_gap")) {
} else if(!strcmp_P(attr, PSTR("line_dash_gap"))) {
return lv_obj_set_style_local_line_dash_gap(obj, part, state, (lv_style_int_t)var);
} else if(strAttr == F("line_rounded")) {
} else if(!strcmp_P(attr, PSTR("line_rounded"))) {
return lv_obj_set_style_local_line_rounded(obj, part, state, (bool)var);
} else if(strAttr == F("line_color")) {
lv_color_t color = haspPayloadToColor(strPayload.c_str());
} else if(!strcmp_P(attr, PSTR("line_color"))) {
lv_color_t color = haspPayloadToColor(payload);
return lv_obj_set_style_local_line_color(obj, part, state, color);
} else if(strAttr == F("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);
}
/* Property not found */
haspAttributeNotFound(strAttr);
haspAttributeNotFound(attr);
}
void haspSetObjAttribute1(lv_obj_t * obj, String & strAttr, String & strPayload)
void haspSetObjAttribute1(lv_obj_t * obj, const char * attr, const char * payload)
{
uint16_t val = (uint16_t)strPayload.toInt();
int16_t val = atoi(payload);
if(strAttr == F("x")) {
if(!strcmp_P(attr, PSTR("x"))) {
lv_obj_set_x(obj, val);
return;
} else if(strAttr == F("y")) {
} else if(!strcmp_P(attr, PSTR("y"))) {
lv_obj_set_y(obj, val);
return;
} else if(strAttr == F("w")) {
} else if(!strcmp_P(attr, PSTR("w"))) {
lv_obj_set_width(obj, val);
return;
} else if(strAttr == F("h")) {
} else if(!strcmp_P(attr, PSTR("h"))) {
lv_obj_set_height(obj, val);
return;
}
haspSetLocalStyle(obj, strAttr, strPayload);
haspSetLocalStyle(obj, attr, payload);
}
void haspSetObjAttribute3(lv_obj_t * obj, String & strAttr, String & strPayload)
void haspSetObjAttribute3(lv_obj_t * obj, const char * attr, const char * payload)
{
uint16_t val = (uint16_t)strPayload.toInt();
int16_t val = atoi(payload);
if(strAttr == F("vis")) {
if(!strcmp_P(attr, PSTR("vis"))) {
lv_obj_set_hidden(obj, val == 0);
return;
} else {
@ -360,25 +373,25 @@ void haspSetObjAttribute3(lv_obj_t * obj, String & strAttr, String & strPayload)
lv_obj_type_t list;
lv_obj_get_type(obj, &list);
if(strAttr == F("txt")) { // In order of likelihood to occur
if(!strcmp_P(attr, PSTR("txt"))) { // In order of likelihood to occur
if(check_obj_type(list.type[0], LV_HASP_BUTTON)) {
haspSetLabelText(obj, strPayload.c_str());
haspSetLabelText(obj, payload);
return;
} else if(check_obj_type(list.type[0], LV_HASP_LABEL)) {
lv_label_set_text(obj, strPayload.c_str());
lv_label_set_text(obj, payload);
return;
} else if(check_obj_type(list.type[0], LV_HASP_CHECKBOX)) {
#if LVGL7
lv_checkbox_set_text(obj, strPayload.c_str());
lv_checkbox_set_text(obj, payload);
#else
lv_cb_set_text(obj, strPayload.c_str());
lv_cb_set_text(obj, payload);
#endif
return;
}
}
if(strAttr == F("val")) { // In order of likelihood to occur
int16_t intval = (int16_t)strPayload.toInt();
if(!strcmp_P(attr, PSTR("val"))) { // In order of likelihood to occur
int16_t intval = atoi(payload);
#if LVGL7
if(check_obj_type(list.type[0], LV_HASP_BUTTON)) {
@ -445,13 +458,13 @@ void haspSetObjAttribute3(lv_obj_t * obj, String & strAttr, String & strPayload)
lv_bar_set_value(obj, intval, LV_ANIM_OFF);
return;
} else if(check_obj_type(list.type[0], LV_HASP_CPICKER)) {
set_cpicker_value(obj, strPayload.c_str());
set_cpicker_value(obj, payload);
return;
}
}
if(strAttr == F("min")) { // In order of likelihood to occur
int16_t min = (int16_t)strPayload.toInt();
if(!strcmp_P(attr, PSTR("min"))) { // In order of likelihood to occur
int16_t min = atoi(payload);
if(check_obj_type(list.type[0], LV_HASP_SLIDER)) {
int16_t max = lv_slider_get_max_value(obj);
lv_slider_set_range(obj, min, max);
@ -471,8 +484,8 @@ void haspSetObjAttribute3(lv_obj_t * obj, String & strAttr, String & strPayload)
}
}
if(strAttr == F("max")) { // In order of likelihood to occur
int16_t max = (int16_t)strPayload.toInt();
if(!strcmp_P(attr, PSTR("max"))) { // In order of likelihood to occur
int16_t max = atoi(payload);
if(check_obj_type(list.type[0], LV_HASP_SLIDER)) {
int16_t min = lv_slider_get_max_value(obj);
lv_slider_set_range(obj, min, max);
@ -492,14 +505,14 @@ void haspSetObjAttribute3(lv_obj_t * obj, String & strAttr, String & strPayload)
}
}
}
haspSetLocalStyle(obj, strAttr, strPayload);
haspSetLocalStyle(obj, attr, payload);
}
void haspSetObjAttribute4(lv_obj_t * obj, String & strAttr, String & strPayload)
void haspSetObjAttribute4(lv_obj_t * obj, const char * attr, const char * payload)
{
uint16_t val = (uint16_t)strPayload.toInt();
int16_t val = atoi(payload);
if(strAttr == F("rows")) {
if(!strcmp_P(attr, PSTR("rows"))) {
lv_obj_type_t list;
lv_obj_get_type(obj, &list);
@ -507,100 +520,97 @@ void haspSetObjAttribute4(lv_obj_t * obj, String & strAttr, String & strPayload)
lv_roller_set_visible_row_count(obj, (uint8_t)val);
return;
}
} else if(strAttr == F("rect")) {
} else if(!strcmp_P(attr, PSTR("rect"))) {
lv_obj_type_t list;
lv_obj_get_type(obj, &list);
if(check_obj_type(list.type[0], LV_HASP_CPICKER)) {
strPayload.toLowerCase();
if(strPayload == F("true")) val = 1;
if(is_true(payload)) val = 1;
lv_cpicker_set_type(obj, val ? LV_CPICKER_TYPE_RECT : LV_CPICKER_TYPE_DISC);
return;
}
}
haspSetLocalStyle(obj, strAttr, strPayload);
haspSetLocalStyle(obj, attr, payload);
}
void haspSetObjAttribute6(lv_obj_t * obj, String & strAttr, String & strPayload)
void haspSetObjAttribute6(lv_obj_t * obj, const char * attr, const char * payload)
{
uint16_t val = (uint16_t)strPayload.toInt();
int16_t val = atoi(payload);
if(strAttr == F("hidden")) {
if(!strcmp_P(attr, PSTR("hidden"))) {
lv_obj_set_hidden(obj, val == 0);
return;
} else if(strAttr == F("toggle")) {
} else if(!strcmp_P(attr, PSTR("toggle"))) {
lv_obj_type_t list;
lv_obj_get_type(obj, &list);
if(check_obj_type(list.type[0], LV_HASP_BUTTON)) {
haspSetToggle(obj, strPayload.toInt() > 0);
haspSetToggle(obj, atoi(payload) > 0);
return;
}
}
haspSetLocalStyle(obj, strAttr, strPayload);
haspSetLocalStyle(obj, attr, payload);
}
void haspSetObjAttribute7(lv_obj_t * obj, String & strAttr, String & strPayload)
void haspSetObjAttribute7(lv_obj_t * obj, const char * attr, const char * payload)
{
uint16_t val = (uint16_t)strPayload.toInt();
int16_t val = atoi(payload);
if(strAttr == F("opacity")) {
if(!strcmp_P(attr, PSTR("opacity"))) {
haspSetOpacity(obj, val);
return;
} else if(strAttr == F("enabled")) {
} else if(!strcmp_P(attr, PSTR("enabled"))) {
lv_obj_set_click(obj, val != 0);
return;
} else if(strAttr == F("options")) {
} else if(!strcmp_P(attr, PSTR("options"))) {
/* .options depend on objecttype */
lv_obj_type_t list;
lv_obj_get_type(obj, &list);
if(check_obj_type(list.type[0], LV_HASP_DDLIST)) {
#if LVGL7
lv_dropdown_set_options(obj, strPayload.c_str());
lv_dropdown_set_options(obj, payload);
#else
lv_ddlist_set_options(obj, strPayload.c_str());
lv_ddlist_set_options(obj, payload);
#endif
return;
} else if(check_obj_type(list.type[0], LV_HASP_ROLLER)) {
lv_roller_ext_t * ext = (lv_roller_ext_t *)lv_obj_get_ext_attr(obj);
lv_roller_set_options(obj, strPayload.c_str(), ext->mode);
lv_roller_set_options(obj, payload, ext->mode);
return;
}
}
haspSetLocalStyle(obj, strAttr, strPayload);
haspSetLocalStyle(obj, attr, payload);
}
void haspSetObjAttribute(lv_obj_t * obj, String strAttr, String strPayload)
void hasp_set_obj_attribute(lv_obj_t * obj, const char * attr_p, const char * payload)
{
if(!obj) {
Log.warning(F("HASP: Unknown object"));
return;
}
if(strAttr.startsWith(".")) {
strAttr.remove(0, 1);
} else {
// return haspAttributeNotFound(strAttr);
}
// strip starting '.'
char * attr = (char *)attr_p;
if(*attr == '.') attr++;
switch(strAttr.length()) {
switch(strlen(attr)) {
case 1:
haspSetObjAttribute1(obj, strAttr, strPayload);
haspSetObjAttribute1(obj, attr, payload);
break;
case 4:
haspSetObjAttribute4(obj, strAttr, strPayload);
haspSetObjAttribute4(obj, attr, payload);
break;
case 3:
haspSetObjAttribute3(obj, strAttr, strPayload);
haspSetObjAttribute3(obj, attr, payload);
break;
case 6:
haspSetObjAttribute6(obj, strAttr, strPayload);
haspSetObjAttribute6(obj, attr, payload);
break;
case 7:
haspSetObjAttribute7(obj, strAttr, strPayload);
haspSetObjAttribute7(obj, attr, payload);
break;
default:
haspSetLocalStyle(obj, strAttr, strPayload);
haspSetLocalStyle(obj, attr, payload);
}
}

View File

@ -8,7 +8,7 @@
extern "C" {
#endif
void haspSetObjAttribute(lv_obj_t * obj, String strAttr, String strPayload);
void hasp_set_obj_attribute(lv_obj_t * obj, const char * attr_p, const char * payload);
void haspSetOpacity(lv_obj_t * obj, uint8_t val);
#ifdef __cplusplus