Factor out widget_set_{handler,timer}() from app

This commit is contained in:
Pim van Pelt
2017-11-26 16:10:51 +01:00
parent 83b0d346ae
commit 64af496314
3 changed files with 19 additions and 12 deletions

View File

@ -38,7 +38,7 @@ struct widget_t *widget_find(uint16_t x, uint16_t y);
void widget_remove(struct widget_t *widget); 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_set_handler(struct widget_t *w, widget_event_fn handler, void *user_data);
void widget_delete_handler(struct widget_t *w); void widget_delete_handler(struct widget_t *w);
void widget_set_timer(struct widget_t *w, uint32_t timer_msec); void widget_set_timer(struct widget_t *w, uint32_t timer_msec);

View File

@ -53,19 +53,26 @@ void tft_demo(void)
// mgos_ili9341_jpg_image(200, 150, 2, "flower.jpg", NULL, 0); // mgos_ili9341_jpg_image(200, 150, 2, "flower.jpg", NULL, 0);
screen = screen_create_from_file("fs/screen_main.json"); 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); 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); 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); 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); 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); screen_widget_add(screen, w);
} }

View File

@ -25,7 +25,7 @@ void widget_destroy(struct widget_t **widget) {
*widget=NULL; *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; struct widget_t *widget;
widget = (struct widget_t *) calloc(1, sizeof(*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->y=y;
widget->w=w; widget->w=w;
widget->h=h; widget->h=h;
widget_set_handler(widget, handler, user_data); widget->user_data = NULL;
widget_set_timer(widget, timer_msec); widget->handler = NULL;
if (handler) widget->timer_msec = 0;
handler(EV_WIDGET_CREATE, widget, NULL); widget->_timer_id = 0;
return widget; return widget;
} }
@ -58,7 +58,7 @@ struct widget_t *widget_create_from_json(const char *json) {
return NULL; return NULL;
} }
json_scanf(json, strlen(json), "{type:%d,label:%Q,icon:%Q}", &type, &label, &icon); 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); if (name) free(name);
return widget; return widget;
} }