diff --git a/src/hasp/hasp_attribute.cpp b/src/hasp/hasp_attribute.cpp index e4de0ae7..ee52dac0 100644 --- a/src/hasp/hasp_attribute.cpp +++ b/src/hasp/hasp_attribute.cpp @@ -1628,6 +1628,18 @@ void hasp_process_obj_attribute(lv_obj_t* obj, const char* attr_p, const char* p } else { attr_out_int(obj, attr, lv_btn_get_checkable(obj)); } + } else if(check_obj_type(obj, LV_HASP_BTNMATRIX)) { + if(update) { + bool toggle = Parser::is_true(payload); + if(toggle) { + lv_btnmatrix_set_btn_ctrl_all(obj, LV_BTNMATRIX_CTRL_CHECKABLE); + } else { + lv_btnmatrix_clear_btn_ctrl_all(obj, LV_BTNMATRIX_CTRL_CHECKABLE); + lv_btnmatrix_clear_btn_ctrl_all(obj, LV_BTNMATRIX_CTRL_CHECK_STATE); + } + } else { + attr_out_int(obj, attr, lv_btn_get_checkable(obj)); + } } else { goto attribute_not_found; } @@ -1658,6 +1670,16 @@ void hasp_process_obj_attribute(lv_obj_t* obj, const char* attr_p, const char* p } break; // attribute_found + case ATTR_ONE_CHECK: + if(check_obj_type(obj, LV_HASP_BTNMATRIX)) { + if(update) { + lv_btnmatrix_set_one_check(obj, Parser::is_true(payload)); + } else { + attr_out_int(obj, attr_p, lv_btnmatrix_get_one_check(obj)); + } + } + break; + case ATTR_CRITICAL_VALUE: case ATTR_ANGLE: case ATTR_LABEL_COUNT: @@ -1702,16 +1724,6 @@ void hasp_process_obj_attribute(lv_obj_t* obj, const char* attr_p, const char* p } break; - case ATTR_ONE_CHECK: - if(check_obj_type(obj, LV_HASP_BTNMATRIX)) { - if(update) { - lv_btnmatrix_set_one_check(obj, Parser::is_true(payload)); - } else { - attr_out_int(obj, attr_p, lv_btnmatrix_get_one_check(obj)); - } - } - break; - case ATTR_DELETE: if(!lv_obj_get_parent(obj)) { LOG_ERROR(TAG_ATTR, F(D_ATTRIBUTE_PAGE_METHOD_INVALID), attr_p);