diff --git a/include/widget.h b/include/widget.h index 4bc4eb6..be989cf 100644 --- a/include/widget.h +++ b/include/widget.h @@ -11,8 +11,8 @@ struct widget_t; #define EV_WIDGET_DRAW 3 #define EV_WIDGET_REDRAW 4 #define EV_WIDGET_TIMER 5 -#define EV_WIDGET_TOUCH_UP 6 -#define EV_WIDGET_TOUCH_DOWN 7 +#define EV_WIDGET_TOUCH_UP 6 // struct mgos_stmpe610_event_data * +#define EV_WIDGET_TOUCH_DOWN 7 // struct mgos_stmpe610_event_data * enum widget_type_t { WIDGET_TYPE_NONE =0, @@ -53,5 +53,8 @@ struct widget_t *widget_create_from_json(const char *json); struct widget_t *widget_create_from_file(const char *fn); void widget_destroy(struct widget_t **widget); +// Convert ev in EV_WIDGET_* to string +void widget_ev_to_str(int ev, char *s, int slen); + #endif // __WIDGET_H diff --git a/src/main.c b/src/main.c index 9dc382b..ac82a63 100644 --- a/src/main.c +++ b/src/main.c @@ -23,18 +23,14 @@ static void touch_handler(struct mgos_stmpe610_event_data *ed) { LOG(LL_INFO, ("Touch %s at (%d,%d) pressure=%d, length=%d", ed->direction==TOUCH_UP?"UP":"DOWN", x, y, ed->z, ed->length)); widget = screen_widget_find_by_xy(screen, x, y); - if (widget) { - LOG(LL_INFO, ("Widget '%s' found", widget->name)); - } - if (ed->direction==TOUCH_DOWN) { widget_network_recv(); if (widget && widget->handler) - widget->handler(EV_WIDGET_TOUCH_DOWN, widget, NULL); + widget->handler(EV_WIDGET_TOUCH_DOWN, widget, ed); } else { widget_network_send(); if (widget && widget->handler) - widget->handler(EV_WIDGET_TOUCH_UP, widget, NULL); + widget->handler(EV_WIDGET_TOUCH_UP, widget, ed); } } @@ -47,7 +43,7 @@ void tft_demo(void) mgos_ili9341_setGammaCurve(DEFAULT_GAMMA_CURVE); mgos_ili9341_setFont(DEFAULT_FONT, NULL); - mgos_ili9341_jpg_image(CENTER, CENTER, 1, "mongoose-os.jpg", NULL, 0); +// mgos_ili9341_jpg_image(CENTER, CENTER, 1, "mongoose-os.jpg", NULL, 0); // mgos_ili9341_jpg_image(200, 150, 2, "flower.jpg", NULL, 0); screen = screen_create_from_file("/screen_main.json", widget_default_ev, NULL); diff --git a/src/widget.c b/src/widget.c index ad5d7a7..a0cce58 100644 --- a/src/widget.c +++ b/src/widget.c @@ -138,3 +138,32 @@ void widget_delete_timer(struct widget_t *w) { widget_set_timer(w, 0); return; } + +void widget_ev_to_str(int ev, char *s, int slen) { + switch(ev) { + case EV_WIDGET_CREATE: + strncpy(s, "CREATE", slen); + break; + case EV_WIDGET_DRAW: + strncpy(s, "DRAW", slen); + break; + case EV_WIDGET_REDRAW: + strncpy(s, "REDRAW", slen); + break; + case EV_WIDGET_TIMER: + strncpy(s, "TIMER", slen); + break; + case EV_WIDGET_TOUCH_UP: + strncpy(s, "TOUCH_UP", slen); + break; + case EV_WIDGET_TOUCH_DOWN: + strncpy(s, "TOUCH_DOWN", slen); + break; + case EV_WIDGET_DESTROY: + strncpy(s, "DESTROY", slen); + break; + default: // EV_WIDGET_NONE + snprintf(s, slen, "EV%d", ev); + break; + } +} diff --git a/src/widget_default.c b/src/widget_default.c index a708d27..320759f 100644 --- a/src/widget_default.c +++ b/src/widget_default.c @@ -3,10 +3,13 @@ #include "mongoose-touch.h" void widget_default_ev(int ev, struct widget_t *w, void *ev_data) { + char evname[15]; + if (!w) return; + widget_ev_to_str(ev, evname, sizeof(evname)-1); - LOG(LL_INFO, ("Event %d received for widget '%s'", ev, w->name)); + LOG(LL_INFO, ("Event %s received for widget '%s'", evname, w->name)); switch(ev) { case EV_WIDGET_CREATE: diff --git a/unittest/test_screen.c b/unittest/test_screen.c index 488ba6b..b68f2ad 100644 --- a/unittest/test_screen.c +++ b/unittest/test_screen.c @@ -5,10 +5,14 @@ extern int _mgos_timers; static void test_screen_default_ev(int ev, struct widget_t *w, void *ev_data) { + char evname[15]; + if (!w) return; - LOG(LL_INFO, ("Event %d received for widget '%s'", ev, w->name)); + widget_ev_to_str(ev, evname, sizeof(evname)-1); + + LOG(LL_INFO, ("Event %s received for widget '%s'", evname, w->name)); switch(ev) { case EV_WIDGET_CREATE: diff --git a/unittest/test_widget.c b/unittest/test_widget.c index c42c70c..baf8a4b 100644 --- a/unittest/test_widget.c +++ b/unittest/test_widget.c @@ -4,10 +4,14 @@ extern int _mgos_timers; static void test_widget_default_ev(int ev, struct widget_t *w, void *ev_data) { + char evname[15]; + if (!w) return; - LOG(LL_INFO, ("Event %d received for widget '%s'", ev, w->name)); + widget_ev_to_str(ev, evname, sizeof(evname)-1); + + LOG(LL_INFO, ("Event %s received for widget '%s'", evname, w->name)); switch(ev) { case EV_WIDGET_CREATE: