Fix attribute bugs

This commit is contained in:
fvanroie 2020-10-19 22:11:09 +02:00
parent c1e497c3ad
commit 4e6f6a8268

View File

@ -597,8 +597,8 @@ static void hasp_process_obj_attribute_val(lv_obj_t * obj, const char * attr, co
lv_obj_get_type(obj, &list); lv_obj_get_type(obj, &list);
const char * objtype = list.type[0]; const char * objtype = list.type[0];
if(check_obj_type(objtype, LV_HASP_BUTTON)) { if(check_obj_type(objtype, LV_HASP_BUTTON) && lv_btn_get_checkable(obj)) {
if(lv_btn_get_checkable(obj)) { if(update) {
lv_btn_state_t state; lv_btn_state_t state;
switch(val) { switch(val) {
case 0: case 0:
@ -607,11 +607,27 @@ static void hasp_process_obj_attribute_val(lv_obj_t * obj, const char * attr, co
case 1: case 1:
state = LV_BTN_STATE_CHECKED_RELEASED; state = LV_BTN_STATE_CHECKED_RELEASED;
break; break;
case 3:
state = LV_BTN_STATE_CHECKED_DISABLED;
break;
default: default:
state = LV_BTN_STATE_DISABLED; state = LV_BTN_STATE_DISABLED;
};
return lv_btn_set_state(obj, state);
} else {
lv_btn_state_t state = lv_btn_get_state(obj);
switch(state) {
case LV_BTN_STATE_RELEASED:
case LV_BTN_STATE_PRESSED:
return hasp_out_int(obj, attr, 0);
case LV_BTN_STATE_CHECKED_RELEASED:
case LV_BTN_STATE_CHECKED_PRESSED:
return hasp_out_int(obj, attr, 1);
case LV_BTN_STATE_DISABLED:
return hasp_out_int(obj, attr, 2);
case LV_BTN_STATE_CHECKED_DISABLED:
return hasp_out_int(obj, attr, 3);
} }
lv_btn_set_state(obj, state);
return;
} }
} }
if(check_obj_type(objtype, LV_HASP_CHECKBOX)) { if(check_obj_type(objtype, LV_HASP_CHECKBOX)) {
@ -661,24 +677,28 @@ static void hasp_process_obj_attribute_range(lv_obj_t * obj, const char * attr,
if(check_obj_type(objtype, LV_HASP_SLIDER)) { if(check_obj_type(objtype, LV_HASP_SLIDER)) {
int16_t min = lv_slider_get_min_value(obj); int16_t min = lv_slider_get_min_value(obj);
int16_t max = lv_slider_get_max_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
return update ? lv_slider_set_range(obj, set_min ? val : min, set_max ? val : 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)); : 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)) { if(check_obj_type(objtype, LV_HASP_GAUGE)) {
int16_t min = lv_gauge_get_min_value(obj); int16_t min = lv_gauge_get_min_value(obj);
int16_t max = lv_gauge_get_max_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
return update ? lv_gauge_set_range(obj, set_min ? val : min, set_max ? val : 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)); : 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_BAR)) { if(check_obj_type(objtype, LV_HASP_BAR)) {
int16_t min = lv_bar_get_min_value(obj); int16_t min = lv_bar_get_min_value(obj);
int16_t max = lv_bar_get_max_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
return update ? lv_bar_set_range(obj, set_min ? val : min, set_max ? val : 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)); : 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)) { if(check_obj_type(objtype, LV_HASP_LMETER)) {
int16_t min = lv_linemeter_get_min_value(obj); int16_t min = lv_linemeter_get_min_value(obj);
int16_t max = lv_linemeter_get_max_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
return update ? lv_linemeter_set_range(obj, set_min ? val : min, set_max ? val : max) return update ? lv_linemeter_set_range(obj, set_min ? val : min, set_max ? val : max)
: hasp_out_int(obj, attr, : hasp_out_int(obj, attr,
set_min ? lv_linemeter_get_min_value(obj) : lv_linemeter_get_max_value(obj)); set_min ? lv_linemeter_get_min_value(obj) : lv_linemeter_get_max_value(obj));