mirror of
https://github.com/HASwitchPlate/openHASP.git
synced 2025-07-28 21:56:35 +00:00
Fix and improve state and part support #295
This commit is contained in:
parent
b895dbd591
commit
f0218f775d
@ -317,9 +317,12 @@ static void hasp_attribute_get_part_state(lv_obj_t* obj, const char* attr_in, ch
|
|||||||
}
|
}
|
||||||
int index = atoi(&attr_in[len - 1]);
|
int index = atoi(&attr_in[len - 1]);
|
||||||
|
|
||||||
// Drop Trailing partnumber
|
if(attr_in[len - 1] == '0') {
|
||||||
if(attr_in[len - 1] == '0' || index > 0) {
|
len--; // Drop Trailing partnumber
|
||||||
len--;
|
} else if(index > 0) {
|
||||||
|
len--; // Drop Trailing partnumber
|
||||||
|
} else {
|
||||||
|
index = -1; // force default state when no trailing number is found
|
||||||
}
|
}
|
||||||
strncpy(attr_out, attr_in, len);
|
strncpy(attr_out, attr_in, len);
|
||||||
attr_out[len] = 0;
|
attr_out[len] = 0;
|
||||||
@ -336,29 +339,61 @@ static void hasp_attribute_get_part_state(lv_obj_t* obj, const char* attr_in, ch
|
|||||||
|
|
||||||
/* Attributes depending on objecttype */
|
/* Attributes depending on objecttype */
|
||||||
state = LV_STATE_DEFAULT;
|
state = LV_STATE_DEFAULT;
|
||||||
|
part = LV_BTN_PART_MAIN;
|
||||||
|
|
||||||
switch(obj_get_type(obj)) {
|
switch(obj_get_type(obj)) {
|
||||||
case LV_HASP_BUTTON:
|
case LV_HASP_BUTTON:
|
||||||
switch(index) {
|
switch(index) {
|
||||||
case 1:
|
case 1:
|
||||||
state = LV_BTN_STATE_PRESSED;
|
state = LV_STATE_CHECKED;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
state = LV_BTN_STATE_DISABLED;
|
state = LV_STATE_PRESSED + LV_STATE_DEFAULT;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
state = LV_BTN_STATE_CHECKED_RELEASED;
|
state = LV_STATE_PRESSED + LV_STATE_CHECKED;
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
state = LV_BTN_STATE_CHECKED_PRESSED;
|
state = LV_STATE_DISABLED + LV_STATE_DEFAULT;
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
state = LV_BTN_STATE_CHECKED_DISABLED;
|
state = LV_STATE_DISABLED + LV_STATE_CHECKED;
|
||||||
break;
|
break;
|
||||||
default:
|
default: // 0 or -1
|
||||||
state = LV_BTN_STATE_RELEASED;
|
state = LV_STATE_DEFAULT;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LV_HASP_BTNMATRIX:
|
||||||
|
switch(index) {
|
||||||
|
case 0:
|
||||||
|
part = LV_BTNMATRIX_PART_BTN;
|
||||||
|
state = LV_STATE_DEFAULT;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
part = LV_BTNMATRIX_PART_BTN;
|
||||||
|
state = LV_STATE_CHECKED;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
part = LV_BTNMATRIX_PART_BTN;
|
||||||
|
state = LV_STATE_PRESSED + LV_STATE_DEFAULT;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
part = LV_BTNMATRIX_PART_BTN;
|
||||||
|
state = LV_STATE_PRESSED + LV_STATE_CHECKED;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
part = LV_BTNMATRIX_PART_BTN;
|
||||||
|
state = LV_STATE_DISABLED + LV_STATE_DEFAULT;
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
part = LV_BTNMATRIX_PART_BTN;
|
||||||
|
state = LV_STATE_DISABLED + LV_STATE_CHECKED;
|
||||||
|
break;
|
||||||
|
default: // -1
|
||||||
|
state = LV_STATE_DEFAULT;
|
||||||
|
part = LV_BTNMATRIX_PART_BG;
|
||||||
}
|
}
|
||||||
part = LV_BTN_PART_MAIN;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case LV_HASP_SLIDER:
|
case LV_HASP_SLIDER:
|
||||||
@ -371,7 +406,7 @@ static void hasp_attribute_get_part_state(lv_obj_t* obj, const char* attr_in, ch
|
|||||||
} else if(index == 2) {
|
} else if(index == 2) {
|
||||||
if(!obj_check_type(obj, LV_HASP_BAR) && !obj_check_type(obj, LV_HASP_SPINNER))
|
if(!obj_check_type(obj, LV_HASP_BAR) && !obj_check_type(obj, LV_HASP_SPINNER))
|
||||||
part = LV_SLIDER_PART_KNOB;
|
part = LV_SLIDER_PART_KNOB;
|
||||||
} else {
|
} else { // index = 0 or -1
|
||||||
part = LV_SLIDER_PART_BG;
|
part = LV_SLIDER_PART_BG;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -389,50 +424,51 @@ static void hasp_attribute_get_part_state(lv_obj_t* obj, const char* attr_in, ch
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case LV_HASP_GAUGE:
|
case LV_HASP_GAUGE:
|
||||||
part = index <= LV_GAUGE_PART_NEEDLE ? index : LV_GAUGE_PART_MAIN;
|
part = (index > 0) && (index <= LV_GAUGE_PART_NEEDLE) ? index : LV_GAUGE_PART_MAIN;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case LV_HASP_TABVIEW:
|
case LV_HASP_TABVIEW:
|
||||||
switch(index) {
|
switch(index) {
|
||||||
|
case 0:
|
||||||
|
part = LV_TABVIEW_PART_TAB_BTN; // Button Matrix
|
||||||
|
state = LV_STATE_DEFAULT;
|
||||||
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
part = LV_TABVIEW_PART_TAB_BG;
|
part = LV_TABVIEW_PART_TAB_BTN; // Button Matrix
|
||||||
state = LV_BTN_STATE_RELEASED;
|
state = LV_STATE_CHECKED;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
part = LV_TABVIEW_PART_TAB_BG;
|
part = LV_TABVIEW_PART_TAB_BTN; // Button Matrix
|
||||||
state = LV_BTN_STATE_PRESSED;
|
state = LV_STATE_PRESSED + LV_STATE_DEFAULT;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
part = LV_TABVIEW_PART_TAB_BG;
|
part = LV_TABVIEW_PART_TAB_BTN; // Button Matrix
|
||||||
state = LV_BTN_STATE_DISABLED;
|
state = LV_STATE_PRESSED + LV_STATE_CHECKED;
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
part = LV_TABVIEW_PART_TAB_BG;
|
part = LV_TABVIEW_PART_TAB_BTN; // Button Matrix
|
||||||
state = LV_BTN_STATE_CHECKED_RELEASED;
|
state = LV_STATE_DISABLED + LV_STATE_DEFAULT;
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
part = LV_TABVIEW_PART_TAB_BG;
|
part = LV_TABVIEW_PART_TAB_BTN; // Button Matrix
|
||||||
state = LV_BTN_STATE_CHECKED_PRESSED;
|
state = LV_STATE_DISABLED + LV_STATE_CHECKED;
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
part = LV_TABVIEW_PART_TAB_BG;
|
part = LV_TABVIEW_PART_TAB_BG; // Matrix background
|
||||||
state = LV_BTN_STATE_CHECKED_DISABLED;
|
// state = LV_STATE_DEFAULT;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 7:
|
case 7:
|
||||||
part = LV_TABVIEW_PART_TAB_BTN;
|
part = LV_TABVIEW_PART_INDIC; // Rectangle-like object under the currently selected tab
|
||||||
|
// state = LV_STATE_DEFAULT;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 8:
|
case 8:
|
||||||
part = LV_TABVIEW_PART_INDIC;
|
part = LV_TABVIEW_PART_BG_SCROLLABLE; // It holds the content of the tabs next to each other
|
||||||
|
// state = LV_STATE_DEFAULT;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 9:
|
default: // 9 or -1
|
||||||
part = LV_TABVIEW_PART_BG_SCROLLABLE;
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
part = LV_TABVIEW_PART_BG;
|
part = LV_TABVIEW_PART_BG;
|
||||||
|
// state = LV_STATE_DEFAULT;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user