mirror of
https://github.com/HASwitchPlate/openHASP.git
synced 2025-07-25 20:26:41 +00:00
Address issue #88
This commit is contained in:
parent
6ef4538fda
commit
1f1b3eebd1
@ -136,7 +136,7 @@ typedef int16_t lv_coord_t;
|
|||||||
|
|
||||||
/* Repeated trigger period in long press [ms]
|
/* Repeated trigger period in long press [ms]
|
||||||
* Time between `LV_EVENT_LONG_PRESSED_REPEAT */
|
* Time between `LV_EVENT_LONG_PRESSED_REPEAT */
|
||||||
#define LV_INDEV_DEF_LONG_PRESS_REP_TIME 100
|
#define LV_INDEV_DEF_LONG_PRESS_REP_TIME 200
|
||||||
|
|
||||||
|
|
||||||
/* Gesture threshold in pixels */
|
/* Gesture threshold in pixels */
|
||||||
|
@ -40,7 +40,7 @@
|
|||||||
|
|
||||||
extern uint8_t hasp_sleep_state;
|
extern uint8_t hasp_sleep_state;
|
||||||
|
|
||||||
dispatch_conf_t dispatch_setings = {.teleperiod = 10};
|
dispatch_conf_t dispatch_setings = {.teleperiod = 300};
|
||||||
|
|
||||||
uint32_t dispatchLastMillis;
|
uint32_t dispatchLastMillis;
|
||||||
uint8_t nCommands = 0;
|
uint8_t nCommands = 0;
|
||||||
@ -615,22 +615,13 @@ void dispatch_object_generic_event(lv_obj_t* obj, uint8_t eventid)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Send out the on/off event, with the val
|
// Send out the on/off event, with the val
|
||||||
void dispatch_object_toggle_event(lv_obj_t* obj, bool state)
|
void dispatch_object_val_event(lv_obj_t* obj, uint8_t eventid, int16_t val)
|
||||||
{
|
{
|
||||||
char data[40];
|
char data[40];
|
||||||
char eventname[8];
|
char eventname[8];
|
||||||
|
|
||||||
dispatch_get_event_name(state, eventname, sizeof(eventname));
|
dispatch_get_event_name(eventid, eventname, sizeof(eventname));
|
||||||
snprintf_P(data, sizeof(data), PSTR("{\"event\":\"%s\",\"val\":%d}"), eventname, state);
|
snprintf_P(data, sizeof(data), PSTR("{\"event\":\"%s\",\"val\":%d}"), eventname, val);
|
||||||
dispatch_obj_data(obj, data);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Send out the changed event, with the val
|
|
||||||
void dispatch_object_value_changed(lv_obj_t* obj, int16_t state)
|
|
||||||
{
|
|
||||||
char data[48];
|
|
||||||
|
|
||||||
snprintf_P(data, sizeof(data), PSTR("{\"event\":\"changed\",\"val\":%d}"), state);
|
|
||||||
dispatch_obj_data(obj, data);
|
dispatch_obj_data(obj, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,8 +77,7 @@ void dispatch_send_obj_attribute_color(uint8_t pageid, uint8_t btnid, const char
|
|||||||
uint8_t b);
|
uint8_t b);
|
||||||
|
|
||||||
void dispatch_object_generic_event(lv_obj_t* obj, uint8_t eventid);
|
void dispatch_object_generic_event(lv_obj_t* obj, uint8_t eventid);
|
||||||
void dispatch_object_toggle_event(lv_obj_t* obj, bool state);
|
void dispatch_object_val_event(lv_obj_t* obj, uint8_t eventid, int16_t val);
|
||||||
void dispatch_object_value_changed(lv_obj_t* obj, int16_t state);
|
|
||||||
void dispatch_object_selection_changed(lv_obj_t* obj, int16_t val, const char* text);
|
void dispatch_object_selection_changed(lv_obj_t* obj, int16_t val, const char* text);
|
||||||
void dispatch_object_color_changed(lv_obj_t* obj, lv_color_t color);
|
void dispatch_object_color_changed(lv_obj_t* obj, lv_color_t color);
|
||||||
|
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
const char** btnmatrix_default_map; // memory pointer to lvgl default btnmatrix map
|
const char** btnmatrix_default_map; // memory pointer to lvgl default btnmatrix map
|
||||||
// static unsigned long last_change_event = 0;
|
// static unsigned long last_change_event = 0;
|
||||||
static bool last_press_was_short = false; // Avoid SHORT + UP double events
|
static bool last_press_was_short = false; // Avoid SHORT + UP double events
|
||||||
|
static lv_style_int_t last_value_sent;
|
||||||
|
|
||||||
// ##################### Object Finders ########################################################
|
// ##################### Object Finders ########################################################
|
||||||
|
|
||||||
@ -404,7 +405,6 @@ void generic_event_handler(lv_obj_t* obj, lv_event_t event)
|
|||||||
void toggle_event_handler(lv_obj_t* obj, lv_event_t event)
|
void toggle_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||||
{
|
{
|
||||||
if(event == LV_EVENT_VALUE_CHANGED) {
|
if(event == LV_EVENT_VALUE_CHANGED) {
|
||||||
char property[36]; // 4 for val only
|
|
||||||
bool val = 0;
|
bool val = 0;
|
||||||
hasp_update_sleep_state(); // wakeup?
|
hasp_update_sleep_state(); // wakeup?
|
||||||
|
|
||||||
@ -430,7 +430,7 @@ void toggle_event_handler(lv_obj_t* obj, lv_event_t event)
|
|||||||
// hasp_send_obj_attribute_int(obj, property, val);
|
// hasp_send_obj_attribute_int(obj, property, val);
|
||||||
|
|
||||||
hasp_update_sleep_state(); // wakeup?
|
hasp_update_sleep_state(); // wakeup?
|
||||||
dispatch_object_toggle_event(obj, val);
|
dispatch_object_val_event(obj, val, val);
|
||||||
dispatch_normalized_group_value(obj->user_data.groupid, obj, val, HASP_EVENT_OFF, HASP_EVENT_ON);
|
dispatch_normalized_group_value(obj->user_data.groupid, obj, val, HASP_EVENT_OFF, HASP_EVENT_ON);
|
||||||
|
|
||||||
} else if(event == LV_EVENT_DELETE) {
|
} else if(event == LV_EVENT_DELETE) {
|
||||||
@ -510,24 +510,28 @@ static void selector_event_handler(lv_obj_t* obj, lv_event_t event)
|
|||||||
*/
|
*/
|
||||||
void slider_event_handler(lv_obj_t* obj, lv_event_t event)
|
void slider_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||||
{
|
{
|
||||||
if(event == LV_EVENT_VALUE_CHANGED) {
|
uint16_t evt;
|
||||||
/* bool is_dragged;
|
switch(event) {
|
||||||
|
case LV_EVENT_VALUE_CHANGED:
|
||||||
|
break;
|
||||||
|
|
||||||
if(obj->user_data.objid == LV_HASP_SLIDER) {
|
case LV_EVENT_DELETE:
|
||||||
is_dragged = lv_slider_is_dragged(obj);
|
LOG_VERBOSE(TAG_HASP, F(D_OBJECT_DELETED));
|
||||||
} else if(obj->user_data.objid == LV_HASP_ARC) {
|
hasp_object_delete(obj);
|
||||||
is_dragged = lv_arc_is_dragged(obj);
|
break;
|
||||||
}
|
|
||||||
|
|
||||||
if(is_dragged && (millis() - last_change_event < LV_INDEV_DEF_LONG_PRESS_TIME)) {
|
case LV_EVENT_PRESSED:
|
||||||
return;
|
hasp_update_sleep_state(); // wakeup on press down?
|
||||||
}
|
evt = HASP_EVENT_DOWN;
|
||||||
*/
|
case LV_EVENT_LONG_PRESSED_REPEAT:
|
||||||
|
if(event == LV_EVENT_LONG_PRESSED_REPEAT) evt = HASP_EVENT_CHANGED;
|
||||||
|
case LV_EVENT_RELEASED: {
|
||||||
|
if(event == LV_EVENT_RELEASED) evt = HASP_EVENT_UP;
|
||||||
|
|
||||||
int16_t val = 0;
|
// case LV_EVENT_PRESSED || LV_EVENT_LONG_PRESSED_REPEAT || LV_EVENT_RELEASED
|
||||||
int16_t min = 0;
|
int16_t val;
|
||||||
int16_t max = 0;
|
int16_t min;
|
||||||
hasp_update_sleep_state(); // wakeup?
|
int16_t max;
|
||||||
|
|
||||||
if(obj->user_data.objid == LV_HASP_SLIDER) {
|
if(obj->user_data.objid == LV_HASP_SLIDER) {
|
||||||
val = lv_slider_get_value(obj);
|
val = lv_slider_get_value(obj);
|
||||||
@ -540,12 +544,19 @@ void slider_event_handler(lv_obj_t* obj, lv_event_t event)
|
|||||||
} else {
|
} else {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
dispatch_object_value_changed(obj, val);
|
|
||||||
dispatch_normalized_group_value(obj->user_data.groupid, obj, val, min, max);
|
|
||||||
|
|
||||||
} else if(event == LV_EVENT_DELETE) {
|
if((event == LV_EVENT_LONG_PRESSED_REPEAT && last_value_sent != val) ||
|
||||||
LOG_VERBOSE(TAG_HASP, F(D_OBJECT_DELETED));
|
event != LV_EVENT_LONG_PRESSED_REPEAT) {
|
||||||
hasp_object_delete(obj);
|
last_value_sent = val;
|
||||||
|
dispatch_object_val_event(obj, evt, val);
|
||||||
|
dispatch_normalized_group_value(obj->user_data.groupid, obj, val, min, max);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
// LOG_VERBOSE(TAG_HASP, F("Event ID: %d"), event);
|
||||||
|
;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user