add widget_ev_to_str(); Pass 'ed' through to EV_WIDGET_TOUCH_{UP,DOWN} calls

This commit is contained in:
Pim van Pelt
2017-11-26 19:27:57 +01:00
parent e826324244
commit 3cb5fc18e7
6 changed files with 51 additions and 12 deletions

View File

@ -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

View File

@ -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);

View File

@ -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;
}
}

View File

@ -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:

View File

@ -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:

View File

@ -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: