From 64af4963145470acc614cabd0beec336c54dbcb3 Mon Sep 17 00:00:00 2001 From: Pim van Pelt Date: Sun, 26 Nov 2017 16:10:51 +0100 Subject: [PATCH] Factor out widget_set_{handler,timer}() from app --- include/widget.h | 2 +- src/main.c | 17 ++++++++++++----- src/widget.c | 12 ++++++------ 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/include/widget.h b/include/widget.h index bb70f80..a292b62 100644 --- a/include/widget.h +++ b/include/widget.h @@ -38,7 +38,7 @@ struct widget_t *widget_find(uint16_t x, uint16_t y); void widget_remove(struct widget_t *widget); */ -struct widget_t *widget_create(char *name, uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint32_t timer_msec, widget_event_fn handler, void *user_data); +struct widget_t *widget_create(char *name, uint16_t x, uint16_t y, uint16_t w, uint16_t h); void widget_set_handler(struct widget_t *w, widget_event_fn handler, void *user_data); void widget_delete_handler(struct widget_t *w); void widget_set_timer(struct widget_t *w, uint32_t timer_msec); diff --git a/src/main.c b/src/main.c index fcd716c..848872f 100644 --- a/src/main.c +++ b/src/main.c @@ -53,19 +53,26 @@ void tft_demo(void) // mgos_ili9341_jpg_image(200, 150, 2, "flower.jpg", NULL, 0); screen = screen_create_from_file("fs/screen_main.json"); - w = widget_create("name", 0, 0, 198, 20, 0, widget_name_ev, NULL); + w = widget_create("name", 0, 0, 198, 20); + widget_set_handler(w, widget_name_ev, NULL); screen_widget_add(screen, w); - w = widget_create("network", 198, 0, 22, 20, 0, widget_network_ev, NULL); + w = widget_create("network", 198, 0, 22, 20); + widget_set_handler(w, widget_network_ev, NULL); screen_widget_add(screen, w); - w = widget_create("wifi", 220, 0, 20, 20, 5000, widget_wifi_ev, NULL); + w = widget_create("wifi", 220, 0, 20, 20); + widget_set_handler(w, widget_wifi_ev, NULL); + widget_set_timer(w, 5000); screen_widget_add(screen, w); - w = widget_create("time", 240, 0, 80, 20, 1000, widget_time_ev, NULL); + w = widget_create("time", 240, 0, 80, 20); + widget_set_handler(w, widget_time_ev, NULL); + widget_set_timer(w, 1000); screen_widget_add(screen, w); - w = widget_create("topbar", 0, 21, 320, 2, 0, widget_topbar_ev, NULL); + w = widget_create("topbar", 0, 21, 320, 2); + widget_set_handler(w, widget_topbar_ev, NULL); screen_widget_add(screen, w); } diff --git a/src/widget.c b/src/widget.c index 4305b1b..edf34fb 100644 --- a/src/widget.c +++ b/src/widget.c @@ -25,7 +25,7 @@ void widget_destroy(struct widget_t **widget) { *widget=NULL; } -struct widget_t *widget_create(char *name, uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint32_t timer_msec, widget_event_fn handler, void *user_data) { +struct widget_t *widget_create(char *name, uint16_t x, uint16_t y, uint16_t w, uint16_t h) { struct widget_t *widget; widget = (struct widget_t *) calloc(1, sizeof(*widget)); @@ -37,10 +37,10 @@ struct widget_t *widget_create(char *name, uint16_t x, uint16_t y, uint16_t w, u widget->y=y; widget->w=w; widget->h=h; - widget_set_handler(widget, handler, user_data); - widget_set_timer(widget, timer_msec); - if (handler) - handler(EV_WIDGET_CREATE, widget, NULL); + widget->user_data = NULL; + widget->handler = NULL; + widget->timer_msec = 0; + widget->_timer_id = 0; return widget; } @@ -58,7 +58,7 @@ struct widget_t *widget_create_from_json(const char *json) { return NULL; } json_scanf(json, strlen(json), "{type:%d,label:%Q,icon:%Q}", &type, &label, &icon); - widget = widget_create(name, x, y, w, h, 0, NULL, NULL); + widget = widget_create(name, x, y, w, h); if (name) free(name); return widget; }