Update arc and colorpicker

This commit is contained in:
fvanroie 2020-10-28 22:01:20 +01:00
parent ae6cad97c4
commit a6af4f3854
2 changed files with 46 additions and 15 deletions

View File

@ -656,6 +656,8 @@ static void hasp_process_obj_attribute_val(lv_obj_t * obj, const char * attr, co
: hasp_out_int(obj, attr, lv_slider_get_value(obj));
} else if(check_obj_type(objtype, LV_HASP_LED)) {
return update ? lv_led_set_bright(obj, (uint8_t)val) : hasp_out_int(obj, attr, lv_led_get_bright(obj));
} else if(check_obj_type(objtype, LV_HASP_ARC)) {
return update ? lv_arc_set_value(obj, intval) : hasp_out_int(obj, attr, lv_arc_get_value(obj));
} else if(check_obj_type(objtype, LV_HASP_GAUGE)) {
return update ? lv_gauge_set_value(obj, 0, intval) : hasp_out_int(obj, attr, lv_gauge_get_value(obj, 0));
} else if(check_obj_type(objtype, LV_HASP_ROLLER)) {
@ -683,28 +685,35 @@ static void hasp_process_obj_attribute_range(lv_obj_t * obj, const char * attr,
if(check_obj_type(objtype, LV_HASP_SLIDER)) {
int16_t min = lv_slider_get_min_value(obj);
int16_t max = lv_slider_get_max_value(obj);
if(update && (set_min ? val : min) <= (set_max ? val : max)) return; // prevent setting min<=max
if(update && (set_min ? val : min) >= (set_max ? val : max)) return; // prevent setting min>=max
return update ? lv_slider_set_range(obj, set_min ? val : min, set_max ? val : max)
: hasp_out_int(obj, attr, set_min ? lv_slider_get_min_value(obj) : lv_slider_get_max_value(obj));
}
if(check_obj_type(objtype, LV_HASP_GAUGE)) {
int16_t min = lv_gauge_get_min_value(obj);
int16_t max = lv_gauge_get_max_value(obj);
if(update && (set_min ? val : min) <= (set_max ? val : max)) return; // prevent setting min<=max
if(update && (set_min ? val : min) >= (set_max ? val : max)) return; // prevent setting min>=max
return update ? lv_gauge_set_range(obj, set_min ? val : min, set_max ? val : max)
: hasp_out_int(obj, attr, set_min ? lv_gauge_get_min_value(obj) : lv_gauge_get_max_value(obj));
}
if(check_obj_type(objtype, LV_HASP_ARC)) {
int16_t min = lv_arc_get_min_value(obj);
int16_t max = lv_arc_get_max_value(obj);
if(update && (set_min ? val : min) >= (set_max ? val : max)) return; // prevent setting min>=max
return update ? lv_arc_set_range(obj, set_min ? val : min, set_max ? val : max)
: hasp_out_int(obj, attr, set_min ? lv_arc_get_min_value(obj) : lv_arc_get_max_value(obj));
}
if(check_obj_type(objtype, LV_HASP_BAR)) {
int16_t min = lv_bar_get_min_value(obj);
int16_t max = lv_bar_get_max_value(obj);
if(update && (set_min ? val : min) <= (set_max ? val : max)) return; // prevent setting min<=max
if(update && (set_min ? val : min) >= (set_max ? val : max)) return; // prevent setting min>=max
return update ? lv_bar_set_range(obj, set_min ? val : min, set_max ? val : max)
: hasp_out_int(obj, attr, set_min ? lv_bar_get_min_value(obj) : lv_bar_get_max_value(obj));
}
if(check_obj_type(objtype, LV_HASP_LMETER)) {
int16_t min = lv_linemeter_get_min_value(obj);
int16_t max = lv_linemeter_get_max_value(obj);
if(update && (set_min ? val : min) <= (set_max ? val : max)) return; // prevent setting min<=max
if(update && (set_min ? val : min) >= (set_max ? val : max)) return; // prevent setting min>=max
return update ? lv_linemeter_set_range(obj, set_min ? val : min, set_max ? val : max)
: hasp_out_int(obj, attr,
set_min ? lv_linemeter_get_min_value(obj) : lv_linemeter_get_max_value(obj));
@ -739,11 +748,31 @@ void hasp_process_obj_attribute(lv_obj_t * obj, const char * attr_p, const char
case ATTR_Y:
return update ? lv_obj_set_y(obj, val) : hasp_out_int(obj, attr, lv_obj_get_y(obj));
case ATTR_W:
return update ? lv_obj_set_width(obj, val) : hasp_out_int(obj, attr, lv_obj_get_width(obj));
case ATTR_W: {
if(update) {
lv_obj_set_width(obj, val);
if(check_obj_type(obj, LV_HASP_CPICKER)) {
lv_cpicker_set_type(obj, lv_obj_get_width(obj) == lv_obj_get_height(obj) ? LV_CPICKER_TYPE_DISC
: LV_CPICKER_TYPE_RECT);
}
} else {
hasp_out_int(obj, attr, lv_obj_get_width(obj));
}
return;
}
case ATTR_H:
return update ? lv_obj_set_height(obj, val) : hasp_out_int(obj, attr, lv_obj_get_height(obj));
case ATTR_H: {
if(update) {
lv_obj_set_height(obj, val);
if(check_obj_type(obj, LV_HASP_CPICKER)) {
lv_cpicker_set_type(obj, lv_obj_get_width(obj) == lv_obj_get_height(obj) ? LV_CPICKER_TYPE_DISC
: LV_CPICKER_TYPE_RECT);
}
} else {
hasp_out_int(obj, attr, lv_obj_get_height(obj));
}
return;
}
case ATTR_ID:
return update ? (void)(obj->user_data = (uint8_t)val) : hasp_out_int(obj, attr, obj->user_data);
@ -791,12 +820,12 @@ void hasp_process_obj_attribute(lv_obj_t * obj, const char * attr_p, const char
}
break;
case ATTR_RECT:
if(check_obj_type(obj, LV_HASP_CPICKER)) {
lv_cpicker_set_type(obj, is_true(payload) ? LV_CPICKER_TYPE_RECT : LV_CPICKER_TYPE_DISC);
return;
}
break;
// case ATTR_RECT:
// if(check_obj_type(obj, LV_HASP_CPICKER)) {
// lv_cpicker_set_type(obj, is_true(payload) ? LV_CPICKER_TYPE_RECT : LV_CPICKER_TYPE_DISC);
// return;
// }
// break;
case ATTR_MODE:
if(check_obj_type(obj, LV_HASP_BUTTON)) {
@ -924,6 +953,8 @@ bool check_obj_type(const char * lvobjtype, lv_hasp_obj_type_t haspobjtype)
return (strcmp_P(lvobjtype, PSTR("slider")) == 0);
case LV_HASP_GAUGE:
return (strcmp_P(lvobjtype, PSTR("gauge")) == 0);
case LV_HASP_ARC:
return (strcmp_P(lvobjtype, PSTR("arc")) == 0);
case LV_HASP_BAR:
return (strcmp_P(lvobjtype, PSTR("bar")) == 0);
case LV_HASP_LMETER:

View File

@ -247,7 +247,7 @@ _HASP_ATTRIBUTE(SCALE_END_LINE_WIDTH, scale_end_line_width, lv_style_int_t)
#define ATTR_HIDDEN 11082
#define ATTR_VIS 16320
#define ATTR_MODE 45891
#define ATTR_RECT 11204
// #define ATTR_RECT 11204
#define ATTR_ROWS 52153
#define ATTR_MIN 46130
#define ATTR_MAX 45636