mirror of
https://github.com/HASwitchPlate/openHASP.git
synced 2025-07-28 13:46:36 +00:00
Improve swipe events for page change
This commit is contained in:
parent
97f46c1b95
commit
e7ce3e0664
@ -288,6 +288,51 @@ void hasp_send_obj_attribute_color(lv_obj_t* obj, const char* attribute, lv_colo
|
|||||||
|
|
||||||
// ##################### Event Handlers ########################################################
|
// ##################### Event Handlers ########################################################
|
||||||
|
|
||||||
|
void log_event(const char* name, lv_event_t event)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
|
||||||
|
switch(event) {
|
||||||
|
case LV_EVENT_PRESSED:
|
||||||
|
LOG_TRACE(TAG_HASP, "%s Pressed", name);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LV_EVENT_PRESS_LOST:
|
||||||
|
LOG_TRACE(TAG_HASP, "%s Press lost", name);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LV_EVENT_SHORT_CLICKED:
|
||||||
|
LOG_TRACE(TAG_HASP, "%s Short clicked", name);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LV_EVENT_CLICKED:
|
||||||
|
LOG_TRACE(TAG_HASP, "%s Clicked", name);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LV_EVENT_LONG_PRESSED:
|
||||||
|
LOG_TRACE(TAG_HASP, "%S Long press", name);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LV_EVENT_LONG_PRESSED_REPEAT:
|
||||||
|
LOG_TRACE(TAG_HASP, "%s Long press repeat", name);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LV_EVENT_RELEASED:
|
||||||
|
LOG_TRACE(TAG_HASP, "%s Released", name);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LV_EVENT_VALUE_CHANGED:
|
||||||
|
LOG_TRACE(TAG_HASP, "%s Changed", name);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LV_EVENT_PRESSING:
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
LOG_TRACE(TAG_HASP, "%s Other %d", name, event);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when a press on the system layer is detected
|
* Called when a press on the system layer is detected
|
||||||
* @param obj pointer to a button matrix
|
* @param obj pointer to a button matrix
|
||||||
@ -295,6 +340,8 @@ void hasp_send_obj_attribute_color(lv_obj_t* obj, const char* attribute, lv_colo
|
|||||||
*/
|
*/
|
||||||
void wakeup_event_handler(lv_obj_t* obj, lv_event_t event)
|
void wakeup_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||||
{
|
{
|
||||||
|
log_event("wakeup", event);
|
||||||
|
|
||||||
if(event == LV_EVENT_RELEASED && obj == lv_disp_get_layer_sys(NULL)) {
|
if(event == LV_EVENT_RELEASED && obj == lv_disp_get_layer_sys(NULL)) {
|
||||||
hasp_update_sleep_state(); // wakeup?
|
hasp_update_sleep_state(); // wakeup?
|
||||||
if(!haspDevice.get_backlight_power())
|
if(!haspDevice.get_backlight_power())
|
||||||
@ -307,6 +354,8 @@ void wakeup_event_handler(lv_obj_t* obj, lv_event_t event)
|
|||||||
|
|
||||||
void page_event_handler(lv_obj_t* obj, lv_event_t event)
|
void page_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||||
{
|
{
|
||||||
|
log_event("page", event);
|
||||||
|
|
||||||
if(event == LV_EVENT_GESTURE) {
|
if(event == LV_EVENT_GESTURE) {
|
||||||
lv_gesture_dir_t dir = lv_indev_get_gesture_dir(lv_indev_get_act());
|
lv_gesture_dir_t dir = lv_indev_get_gesture_dir(lv_indev_get_act());
|
||||||
switch(dir) {
|
switch(dir) {
|
||||||
@ -331,6 +380,7 @@ void page_event_handler(lv_obj_t* obj, lv_event_t event)
|
|||||||
void generic_event_handler(lv_obj_t* obj, lv_event_t event)
|
void generic_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||||
{
|
{
|
||||||
uint8_t eventid;
|
uint8_t eventid;
|
||||||
|
log_event("generic", event);
|
||||||
|
|
||||||
switch(event) {
|
switch(event) {
|
||||||
case LV_EVENT_PRESSED:
|
case LV_EVENT_PRESSED:
|
||||||
@ -422,6 +472,8 @@ 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)
|
||||||
{
|
{
|
||||||
|
log_event("toggle", event);
|
||||||
|
|
||||||
if(event == LV_EVENT_VALUE_CHANGED) {
|
if(event == LV_EVENT_VALUE_CHANGED) {
|
||||||
bool val = 0;
|
bool val = 0;
|
||||||
hasp_update_sleep_state(); // wakeup?
|
hasp_update_sleep_state(); // wakeup?
|
||||||
@ -464,6 +516,8 @@ void toggle_event_handler(lv_obj_t* obj, lv_event_t event)
|
|||||||
*/
|
*/
|
||||||
static void selector_event_handler(lv_obj_t* obj, lv_event_t event)
|
static void selector_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||||
{
|
{
|
||||||
|
log_event("selector", event);
|
||||||
|
|
||||||
if(event == LV_EVENT_VALUE_CHANGED) {
|
if(event == LV_EVENT_VALUE_CHANGED) {
|
||||||
char buffer[128];
|
char buffer[128];
|
||||||
char property[36];
|
char property[36];
|
||||||
@ -528,6 +582,8 @@ 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)
|
||||||
{
|
{
|
||||||
|
log_event("slider", event);
|
||||||
|
|
||||||
uint16_t evt;
|
uint16_t evt;
|
||||||
switch(event) {
|
switch(event) {
|
||||||
case LV_EVENT_VALUE_CHANGED:
|
case LV_EVENT_VALUE_CHANGED:
|
||||||
@ -587,6 +643,7 @@ static void cpicker_event_handler(lv_obj_t* obj, lv_event_t event)
|
|||||||
{
|
{
|
||||||
char color[6];
|
char color[6];
|
||||||
snprintf_P(color, sizeof(color), PSTR("color"));
|
snprintf_P(color, sizeof(color), PSTR("color"));
|
||||||
|
log_event("cpicker", event);
|
||||||
|
|
||||||
if(event == LV_EVENT_VALUE_CHANGED) {
|
if(event == LV_EVENT_VALUE_CHANGED) {
|
||||||
hasp_update_sleep_state(); // wakeup?
|
hasp_update_sleep_state(); // wakeup?
|
||||||
@ -1089,6 +1146,7 @@ void hasp_new_object(const JsonObject& config, uint8_t& saved_page_id)
|
|||||||
// Prevent losing press when the press is slid out of the objects.
|
// Prevent losing press when the press is slid out of the objects.
|
||||||
// (E.g. a Button can be released out of it if it was being pressed)
|
// (E.g. a Button can be released out of it if it was being pressed)
|
||||||
lv_obj_add_protect(obj, LV_PROTECT_PRESS_LOST);
|
lv_obj_add_protect(obj, LV_PROTECT_PRESS_LOST);
|
||||||
|
lv_obj_set_gesture_parent(obj, false);
|
||||||
|
|
||||||
/* id tag the object */
|
/* id tag the object */
|
||||||
// lv_obj_set_user_data(obj, id);
|
// lv_obj_set_user_data(obj, id);
|
||||||
|
@ -24,6 +24,9 @@ void Page::init(uint8_t start_page)
|
|||||||
_pages[i] = lv_obj_create(NULL, NULL);
|
_pages[i] = lv_obj_create(NULL, NULL);
|
||||||
lv_obj_set_event_cb(_pages[i], page_event_handler);
|
lv_obj_set_event_cb(_pages[i], page_event_handler);
|
||||||
|
|
||||||
|
/**< If the `indev` was pressing this object but swiped out while pressing do not search other object.*/
|
||||||
|
lv_obj_add_protect(_pages[i], LV_PROTECT_PRESS_LOST);
|
||||||
|
|
||||||
uint16_t thispage = i + PAGE_START_INDEX;
|
uint16_t thispage = i + PAGE_START_INDEX;
|
||||||
_meta_data[i].prev = thispage == PAGE_START_INDEX ? HASP_NUM_PAGES : thispage - PAGE_START_INDEX;
|
_meta_data[i].prev = thispage == PAGE_START_INDEX ? HASP_NUM_PAGES : thispage - PAGE_START_INDEX;
|
||||||
_meta_data[i].next = thispage == HASP_NUM_PAGES ? PAGE_START_INDEX : thispage + PAGE_START_INDEX;
|
_meta_data[i].next = thispage == HASP_NUM_PAGES ? PAGE_START_INDEX : thispage + PAGE_START_INDEX;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user