summaryrefslogtreecommitdiff
path: root/fw/fe310/eos/eve/widget/togglew.c
diff options
context:
space:
mode:
Diffstat (limited to 'fw/fe310/eos/eve/widget/togglew.c')
-rw-r--r--fw/fe310/eos/eve/widget/togglew.c27
1 files changed, 18 insertions, 9 deletions
diff --git a/fw/fe310/eos/eve/widget/togglew.c b/fw/fe310/eos/eve/widget/togglew.c
index c68e191..06d5fc3 100644
--- a/fw/fe310/eos/eve/widget/togglew.c
+++ b/fw/fe310/eos/eve/widget/togglew.c
@@ -10,7 +10,7 @@
#include "widget.h"
-void eve_togglew_init(EVEToggleWidget *widget, EVERect *g, EVEPage *page, EVEFont *font, char *labels) {
+int eve_togglew_init(EVEToggleWidget *widget, EVERect *g, EVEPage *page, EVEFont *font, char *labels) {
EVEWidget *_widget = &widget->w;
memset(widget, 0, sizeof(EVEToggleWidget));
@@ -18,16 +18,18 @@ void eve_togglew_init(EVEToggleWidget *widget, EVERect *g, EVEPage *page, EVEFon
widget->font = font;
widget->labels = labels;
if (_widget->g.h == 0) _widget->g.h = eve_font_h(widget->font);
+
+ return EVE_OK;
}
int eve_togglew_create(EVEWidget *_widget, EVEWidgetSpec *spec, EVEPage *page) {
EVEToggleWidget *widget = (EVEToggleWidget *)_widget;
EVEToggleSpec *tspec = &spec->tspec.toggle;
EVEFont *font = tspec->font ? tspec->font : eve_window_font(page->v.window);
+ int rv;
- eve_togglew_init(widget, &spec->g, page, font, tspec->labels);
-
- return EVE_OK;
+ rv = eve_togglew_init(widget, &spec->g, page, font, tspec->labels);
+ return rv;
}
uint8_t eve_togglew_draw(EVEWidget *_widget, uint8_t tag0) {
@@ -46,23 +48,30 @@ uint8_t eve_togglew_draw(EVEWidget *_widget, uint8_t tag0) {
int eve_togglew_touch(EVEWidget *_widget, EVETouch *touch, uint16_t evt) {
EVEToggleWidget *widget = (EVEToggleWidget *)_widget;
+ EVEPage *page = _widget->page;
+
+ /* widget received non-touch event, always return 0 */
+ if (evt & EVE_TOUCH_ETYPE_EXT) return 0;
if (evt & EVE_TOUCH_ETYPE_TAG_UP) {
widget->state = !widget->state;
+
+ eve_view_uievt_push(&page->v, EVE_UIEVT_WIDGET_UPDATE, _widget);
+
return 1;
}
return 0;
}
+uint8_t eve_togglew_get(EVEToggleWidget *widget) {
+ return widget->state;
+}
+
void eve_togglew_set(EVEToggleWidget *widget) {
widget->state = 1;
}
-void eve_togglew_clr(EVEToggleWidget *widget) {
+void eve_togglew_clear(EVEToggleWidget *widget) {
widget->state = 0;
}
-
-uint8_t eve_togglew_get(EVEToggleWidget *widget) {
- return widget->state;
-} \ No newline at end of file