mirror of
https://github.com/HASwitchPlate/openHASP.git
synced 2025-07-27 05:06:44 +00:00
Allow align specified by numbers as in previous versions. Fix mode attribute.
This commit is contained in:
parent
a7b4b94fe4
commit
53047411d2
@ -226,31 +226,29 @@ static lv_font_t* haspPayloadToFont(const char* payload)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void hasp_process_label_long_mode(lv_obj_t* obj, const char* payload, bool update)
|
static hasp_attribute_type_t hasp_process_label_long_mode(lv_obj_t* obj, const char* payload, char** text, bool update)
|
||||||
{
|
{
|
||||||
|
const char* arr[] = {PSTR("expand"), PSTR("break"), PSTR("dots"), PSTR("scroll"), PSTR("loop"), PSTR("crop")};
|
||||||
|
uint8_t count = sizeof(arr) / sizeof(arr[0]);
|
||||||
|
uint8_t i = 0;
|
||||||
|
|
||||||
if(update) {
|
if(update) {
|
||||||
lv_label_long_mode_t mode = LV_LABEL_LONG_EXPAND;
|
for(i = 0; i < count; i++) {
|
||||||
if(!strcasecmp_P(payload, PSTR("expand"))) {
|
if(!strcasecmp_P(payload, arr[i])) {
|
||||||
mode = LV_LABEL_LONG_EXPAND;
|
lv_label_set_long_mode(obj, (lv_label_long_mode_t)i);
|
||||||
} else if(!strcasecmp_P(payload, PSTR("break"))) {
|
break;
|
||||||
mode = LV_LABEL_LONG_BREAK;
|
|
||||||
} else if(!strcasecmp_P(payload, PSTR("dots"))) {
|
|
||||||
mode = LV_LABEL_LONG_DOT;
|
|
||||||
} else if(!strcasecmp_P(payload, PSTR("scroll"))) {
|
|
||||||
mode = LV_LABEL_LONG_SROLL;
|
|
||||||
} else if(!strcasecmp_P(payload, PSTR("loop"))) {
|
|
||||||
mode = LV_LABEL_LONG_SROLL_CIRC;
|
|
||||||
} else if(!strcasecmp_P(payload, PSTR("crop"))) {
|
|
||||||
mode = LV_LABEL_LONG_CROP;
|
|
||||||
} else {
|
|
||||||
LOG_WARNING(TAG_ATTR, F("Invalid long mode"));
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
lv_label_set_long_mode(obj, mode);
|
|
||||||
} else {
|
|
||||||
// Getter needed
|
|
||||||
attr_out_int(obj, "mode", lv_label_get_long_mode(obj));
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
i = lv_label_get_long_mode(obj);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(i < count) {
|
||||||
|
strcpy_P(*text, arr[i]);
|
||||||
|
return HASP_ATTR_TYPE_STR;
|
||||||
|
}
|
||||||
|
|
||||||
|
return HASP_ATTR_TYPE_NOT_FOUND;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void hasp_attribute_get_part_state(lv_obj_t* obj, const char* attr_in, char* attr_out, uint8_t& part,
|
static void hasp_attribute_get_part_state(lv_obj_t* obj, const char* attr_in, char* attr_out, uint8_t& part,
|
||||||
@ -975,7 +973,8 @@ static hasp_attribute_type_t attribute_common_align(lv_obj_t* obj, const char* a
|
|||||||
} else if(!strcasecmp_P(payload, PSTR("auto"))) {
|
} else if(!strcasecmp_P(payload, PSTR("auto"))) {
|
||||||
val = LV_LABEL_ALIGN_AUTO;
|
val = LV_LABEL_ALIGN_AUTO;
|
||||||
} else {
|
} else {
|
||||||
return HASP_ATTR_TYPE_ALIGN_INVALID;
|
val = atoi(payload);
|
||||||
|
if(val > LV_LABEL_ALIGN_AUTO) return HASP_ATTR_TYPE_ALIGN_INVALID;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1035,6 +1034,40 @@ static hasp_attribute_type_t attribute_common_align(lv_obj_t* obj, const char* a
|
|||||||
return HASP_ATTR_TYPE_STR;
|
return HASP_ATTR_TYPE_STR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static hasp_attribute_type_t attribute_common_mode(lv_obj_t* obj, const char* payload, char** text, int32_t& val,
|
||||||
|
bool update)
|
||||||
|
{
|
||||||
|
switch(obj_get_type(obj)) {
|
||||||
|
case LV_HASP_BUTTON: {
|
||||||
|
lv_obj_t* label = FindButtonLabel(obj);
|
||||||
|
if(label) {
|
||||||
|
hasp_attribute_type_t ret = hasp_process_label_long_mode(label, payload, text, update);
|
||||||
|
lv_obj_set_width(label, lv_obj_get_width(obj));
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
break; // not found
|
||||||
|
}
|
||||||
|
|
||||||
|
case LV_HASP_LABEL:
|
||||||
|
return hasp_process_label_long_mode(obj, payload, text, update);
|
||||||
|
|
||||||
|
case LV_HASP_ROLLER:
|
||||||
|
if(update) {
|
||||||
|
val = Parser::is_true(payload);
|
||||||
|
lv_roller_set_options(obj, lv_roller_get_options(obj), (lv_roller_mode_t)val);
|
||||||
|
} else {
|
||||||
|
lv_roller_ext_t* ext = (lv_roller_ext_t*)lv_obj_get_ext_attr(obj);
|
||||||
|
val = ext->mode;
|
||||||
|
}
|
||||||
|
return HASP_ATTR_TYPE_INT;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break; // not found
|
||||||
|
}
|
||||||
|
|
||||||
|
return HASP_ATTR_TYPE_NOT_FOUND;
|
||||||
|
}
|
||||||
|
|
||||||
static hasp_attribute_type_t attribute_common_text(lv_obj_t* obj, const char* attr, const char* payload, char** text,
|
static hasp_attribute_type_t attribute_common_text(lv_obj_t* obj, const char* attr, const char* payload, char** text,
|
||||||
bool update)
|
bool update)
|
||||||
{
|
{
|
||||||
@ -1685,33 +1718,6 @@ void old_process_obj_attribute(lv_obj_t* obj, const char* attr_p, const char* pa
|
|||||||
/* 16-bit Hash Lookup Table */
|
/* 16-bit Hash Lookup Table */
|
||||||
switch(attr_hash) {
|
switch(attr_hash) {
|
||||||
|
|
||||||
case ATTR_MODE:
|
|
||||||
switch(obj_get_type(obj)) {
|
|
||||||
case LV_HASP_BUTTON: {
|
|
||||||
lv_obj_t* label = FindButtonLabel(obj);
|
|
||||||
if(label) {
|
|
||||||
hasp_process_label_long_mode(label, payload, update);
|
|
||||||
lv_obj_set_width(label, lv_obj_get_width(obj));
|
|
||||||
}
|
|
||||||
return; // attribute_found
|
|
||||||
}
|
|
||||||
case LV_HASP_LABEL:
|
|
||||||
hasp_process_label_long_mode(obj, payload, update);
|
|
||||||
return; // attribute_found
|
|
||||||
case LV_HASP_ROLLER:
|
|
||||||
if(update) {
|
|
||||||
lv_roller_set_options(obj, lv_roller_get_options(obj),
|
|
||||||
(lv_roller_mode_t)Parser::is_true(payload));
|
|
||||||
} else {
|
|
||||||
lv_roller_ext_t* ext = (lv_roller_ext_t*)lv_obj_get_ext_attr(obj);
|
|
||||||
attr_out_int(obj, attr_p, ext->mode);
|
|
||||||
}
|
|
||||||
return; // attribute_found
|
|
||||||
default:
|
|
||||||
break; // not found
|
|
||||||
}
|
|
||||||
break; // not found
|
|
||||||
|
|
||||||
case ATTR_OPTIONS:
|
case ATTR_OPTIONS:
|
||||||
switch(obj_get_type(obj)) {
|
switch(obj_get_type(obj)) {
|
||||||
case LV_HASP_DROPDOWN:
|
case LV_HASP_DROPDOWN:
|
||||||
@ -1896,7 +1902,10 @@ void hasp_process_obj_attribute(lv_obj_t* obj, const char* attribute, const char
|
|||||||
ret = HASP_ATTR_TYPE_STR;
|
ret = HASP_ATTR_TYPE_STR;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// case ATTR_MODE:
|
case ATTR_MODE:
|
||||||
|
ret = attribute_common_mode(obj, payload, &text, val, update);
|
||||||
|
break;
|
||||||
|
|
||||||
// case ATTR_OPTIONS:
|
// case ATTR_OPTIONS:
|
||||||
// case ATTR_BTN_POS:
|
// case ATTR_BTN_POS:
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user