diff options
author | Uros Majstorovic <majstor@majstor.org> | 2022-08-09 22:23:08 +0200 |
---|---|---|
committer | Uros Majstorovic <majstor@majstor.org> | 2022-08-09 22:23:08 +0200 |
commit | 3f913efda03fd840cd526ef72e6f397c7da61bd7 (patch) | |
tree | 08f62c93e0e0660fdb7beba32276ff1ceb7a8a3c /fw/fe310/eos/eve/screen/form.c | |
parent | 810dde21ee65653c15606917b19566cfbaaf165e (diff) |
code layout
Diffstat (limited to 'fw/fe310/eos/eve/screen/form.c')
-rw-r--r-- | fw/fe310/eos/eve/screen/form.c | 52 |
1 files changed, 23 insertions, 29 deletions
diff --git a/fw/fe310/eos/eve/screen/form.c b/fw/fe310/eos/eve/screen/form.c index 8555158..13021a0 100644 --- a/fw/fe310/eos/eve/screen/form.c +++ b/fw/fe310/eos/eve/screen/form.c @@ -9,8 +9,6 @@ #include "page.h" #include "form.h" -#include "widget/widgets.h" - #define MIN(X, Y) (((X) < (Y)) ? (X) : (Y)) #define MAX(X, Y) (((X) > (Y)) ? (X) : (Y)) @@ -57,7 +55,7 @@ static void widgets_destroy(EVEWidget *widget, uint16_t widget_size) { } } -EVEForm *eve_form_create(EVEWindow *window, EVEViewStack *stack, EVEWidgetSpec spec[], uint16_t spec_size, eve_form_uievt_t uievt, eve_form_action_t action, eve_form_destructor_t destructor) { +EVEForm *eve_form_create(EVEWindow *window, EVEViewStack *stack, EVEFormSpec spec[], uint16_t spec_size, eve_form_uievt_t uievt, eve_form_action_t action, eve_form_destructor_t destructor) { EVEWidget *widgets; EVEWidget *widget; EVELabel *label; @@ -65,17 +63,17 @@ EVEForm *eve_form_create(EVEWindow *window, EVEViewStack *stack, EVEWidgetSpec s int w_size = 0; int i, r; - for (i=0; i<spec_size; i++) { - w_size += eve_widget_size(spec[i].widget.type); - } + if (uievt == NULL) uievt = eve_form_uievt; + if (destructor == NULL) destructor = eve_form_destroy; form = eve_malloc(sizeof(EVEForm)); if (form == NULL) { return NULL; } - if (uievt == NULL) uievt = eve_form_uievt; - if (destructor == NULL) destructor = eve_form_destroy; eve_form_init(form, window, stack, NULL, 0, uievt, action, destructor); + for (i=0; i<spec_size; i++) { + w_size += eve_widget_size(spec[i].widget.type); + } widgets = eve_malloc(w_size); if (widgets == NULL) { eve_free(form); @@ -84,7 +82,7 @@ EVEForm *eve_form_create(EVEWindow *window, EVEViewStack *stack, EVEWidgetSpec s widget = widgets; for (i=0; i<spec_size; i++) { - r = eve_widget_create(widget, spec[i].widget.type, &spec[i].widget.g, (EVEPage *)form, &spec[i].widget.spec); + r = eve_widget_create(widget, &spec[i].widget, (EVEPage *)form); if (r) { widgets_destroy(widgets, i); eve_free(widgets); @@ -92,7 +90,6 @@ EVEForm *eve_form_create(EVEWindow *window, EVEViewStack *stack, EVEWidgetSpec s return NULL; } if (spec[i].label.title) { - EVEFont *font = spec[i].label.font ? spec[i].label.font : eve_window_font(window); label = eve_malloc(sizeof(EVELabel)); if (label == NULL) { eve_widget_destroy(widget); @@ -101,15 +98,13 @@ EVEForm *eve_form_create(EVEWindow *window, EVEViewStack *stack, EVEWidgetSpec s eve_free(form); return NULL; } - eve_label_init(label, &spec[i].label.g, font, spec[i].label.title); + eve_label_create(label, &spec[i].label, (EVEPage *)form); eve_widget_set_label(widget, label); - if (label->g.w == 0) label->g.w = eve_font_str_w(font, label->title); } - if (widget->label && (widget->label->g.w == 0)) eve_font_str_w(label->font, label->title) + EVE_FORM_LABEL_MARGIN; if (widget->g.w == 0) widget->g.w = window->g.w - (widget->label ? widget->label->g.w : 0); widget = eve_widget_next(widget); } - eve_form_update(form, widgets, spec_size); + eve_form_set_widget(form, widgets, spec_size); return form; } @@ -118,11 +113,11 @@ void eve_form_init(EVEForm *form, EVEWindow *window, EVEViewStack *stack, EVEWid memset(form, 0, sizeof(EVEForm)); eve_page_init(&form->p, window, stack, NULL, 0, EVE_PAGE_OPT_SCROLL_Y | EVE_PAGE_OPT_SCROLL_BACK | EVE_PAGE_OPT_TRACK_EXT_Y, eve_page_draw, eve_page_touch, (eve_view_uievt_t)uievt, (eve_page_destructor_t)destructor); form->action = action; - eve_form_update(form, widget, widget_size); + eve_form_set_widget(form, widget, widget_size); } -void eve_form_update(EVEForm *form, EVEWidget *widget, uint16_t widget_size) { - eve_page_update((EVEPage *)form, widget, widget_size); +void eve_form_set_widget(EVEForm *form, EVEWidget *widget, uint16_t widget_size) { + eve_page_set_widget((EVEPage *)form, widget, widget_size); form_update_g(form, NULL); } @@ -138,25 +133,24 @@ int eve_form_uievt(EVEForm *form, uint16_t evt, void *param) { form_update_g(form, (EVEWidget *)param); break; - case EVE_UIEVT_PAGE_SCROLL_START: + case EVE_UIEVT_GEST_SCROLL_START: break; - case EVE_UIEVT_PAGE_SCROLL_STOP: + case EVE_UIEVT_GEST_SCROLL_STOP: break; - case EVE_UIEVT_PAGE_TRACK_START: + case EVE_UIEVT_GEST_TRACK_START: break; - case EVE_UIEVT_PAGE_TRACK_STOP: { + case EVE_UIEVT_GEST_TRACK_STOP: { EVEUIEvtTouch *touch_p = (EVEUIEvtTouch *)param; - if (touch_p->evt & EVE_TOUCH_ETYPE_TRACK_STOP) { - if (touch_p->touch->eevt & EVE_TOUCH_EETYPE_TRACK_RIGHT) { - eve_page_close((EVEPage *)form); - return 1; - } - if (touch_p->touch->eevt & EVE_TOUCH_EETYPE_TRACK_LEFT) { - if (form->action) form->action(form); - } + + if (touch_p->touch->eevt & EVE_TOUCH_EETYPE_TRACK_RIGHT) { + eve_page_close((EVEPage *)form); + return 1; + } + if (touch_p->touch->eevt & EVE_TOUCH_EETYPE_TRACK_LEFT) { + if (form->action) form->action(form); } break; } |