34 lines
1.0 KiB
C
34 lines
1.0 KiB
C
#ifndef __SCREEN_H
|
|
#define __SCREEN_H
|
|
|
|
#include "mgos.h"
|
|
#include "frozen/frozen.h"
|
|
#include "common/queue.h"
|
|
#include "widget.h"
|
|
|
|
struct screen_t {
|
|
char *name;
|
|
|
|
// Private
|
|
SLIST_HEAD(widget_entries, widget_list_t) widget_entries;
|
|
widget_event_fn default_widget_handler;
|
|
void *default_user_data;
|
|
};
|
|
|
|
struct screen_t *screen_create(char *name);
|
|
struct screen_t *screen_create_from_file(char *fn, widget_event_fn handler, void *user_data);
|
|
struct screen_t *screen_create_from_json(char *json, widget_event_fn handler, void *user_data);
|
|
void screen_destroy(struct screen_t **s);
|
|
|
|
void screen_widget_set_handler(struct screen_t *s, widget_event_fn handler, void *user_data);
|
|
|
|
bool screen_widget_add(struct screen_t *s, struct widget_t *w);
|
|
struct widget_t *screen_widget_add_from_file(struct screen_t *s, char *fn);
|
|
|
|
bool screen_widget_destroy(struct screen_t *s, struct widget_t **w);
|
|
|
|
uint16_t screen_get_num_widgets(struct screen_t *s);
|
|
struct widget_t *screen_widget_find_by_xy(struct screen_t *s, uint16_t x, uint16_t y);
|
|
|
|
#endif //__SCREEN_H
|