From 045aca52d80834c38384d1562b36a62e62c82c2e Mon Sep 17 00:00:00 2001 From: Olliver Schinagl Date: Wed, 10 Jun 2015 14:30:11 +0200 Subject: [griffin.hmi] add generic confirmation box and add it to print abort Signed-off-by: Olliver Schinagl --- src/eulogium.c | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- src/eulogium.h | 1 + 2 files changed, 58 insertions(+), 2 deletions(-) diff --git a/src/eulogium.c b/src/eulogium.c index 1f8cdda..9dc5a5b 100644 --- a/src/eulogium.c +++ b/src/eulogium.c @@ -33,6 +33,7 @@ static void _on_print_abort_ret(void *data EINA_UNUSED, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED); static void _cb_content_prev_set(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED); +static void _print_abort_confirm_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED); static void _print_abort_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED); static void _on_blink_ret(void *data EINA_UNUSED, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED); static void _but_material_change_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED); @@ -74,9 +75,19 @@ static struct button_def but_return = { .data = NULL, }; -static struct button_def but_print_abort = { +static struct button_def but_print_abort_confirm = { .text = "ABORT", .cb = { + .func = &_print_abort_confirm_cb, + .data = NULL, + .info = "print abort confirm button pressed", + }, + .data = NULL, +}; + +static struct button_def but_print_abort = { + .text = "Yes", + .cb = { .func = &_print_abort_cb, .data = NULL, .info = "print abort button pressed", @@ -1165,6 +1176,17 @@ static void _cb_content_prev_set(void *data, Evas_Object *obj EINA_UNUSED, void elm_naviframe_item_pop(eulogium->navi); } +static void _print_abort_confirm_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + struct eulogium_data *eulogium = data; + Evas_Object *content; + + content = eulogium_menu_confirm(eulogium->navi, gettext_noop("
Abort the print?"), "No", &but_print_abort); + if (!content) + return; + elm_naviframe_item_simple_push(eulogium->navi, content); +} + static void _print_abort_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { struct eulogium_data *eulogium = data; @@ -1794,7 +1816,7 @@ Evas_Object *eulogium_print_progress(struct eulogium_data *eulogium) evas_object_show(eulogium->progress); elm_box_pack_end(_top, eulogium->progress); - _bottom = eulogium_dual_button_add(eulogium->navi, &but_print_progress_tune, &but_print_abort); + _bottom = eulogium_dual_button_add(eulogium->navi, &but_print_progress_tune, &but_print_abort_confirm); evas_object_show(_bottom); return eulogium_split_screen(eulogium->navi, _top, _bottom); @@ -2302,6 +2324,38 @@ Evas_Object *eulogium_multi_screen_menu(struct eulogium_data *eulogium, Evas_Obj return eulogium_split_screen(parent, _top, _bottom); } +Evas_Object *eulogium_menu_confirm(Evas_Object *parent, const char *msg, const char *prev, + const struct button_def *next) +{ + Evas_Object *_top, *_bottom, *obj; + + _top = elm_label_add(parent); + elm_object_text_set(_top, _(msg)); + evas_object_show(_top); + + _bottom = elm_box_add(parent); + elm_box_horizontal_set(_bottom, EINA_TRUE); + evas_object_show(_bottom); + + obj = elm_button_add(_bottom); + evas_object_size_hint_align_set(obj, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_size_hint_weight_set(obj, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_smart_callback_add(obj, "clicked", next->cb.func, next->cb.data); + elm_object_text_set(obj, _(next->text)); + evas_object_show(obj); + elm_box_pack_start(_bottom, obj); + + obj = elm_button_add(_bottom); + evas_object_size_hint_align_set(obj, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_size_hint_weight_set(obj, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_smart_callback_add(obj, "clicked", but_return.cb.func, but_return.cb.data); + elm_object_text_set(obj, _(prev)); + evas_object_show(obj); + elm_box_pack_end(_bottom, obj); + + return eulogium_split_screen(parent, _top, _bottom); +} + Evas_Object *eulogium_dual_button_add(Evas_Object *parent, const struct button_def *left, const struct button_def *right) { Evas_Object *box; @@ -2453,6 +2507,7 @@ static void eulogium_setup(struct eulogium_data *eulogium) eulogium->printer.file_handlers = NULL; eulogium->footer = NULL; eulogium_button_cb_data_set(&but_return, eulogium); + eulogium_button_cb_data_set(&but_print_abort_confirm, eulogium); eulogium_button_cb_data_set(&but_print_abort, eulogium); eulogium_button_cb_data_set(&but_print_progress_tune, eulogium); eulogium_button_cb_data_set(&but_main_print, eulogium); diff --git a/src/eulogium.h b/src/eulogium.h index 657ca96..12d257e 100644 --- a/src/eulogium.h +++ b/src/eulogium.h @@ -176,5 +176,6 @@ Evas_Object *eulogium_print_progress(struct eulogium_data *eulogium); Evas_Object *eulogium_multi_text_menu(struct eulogium_data *eulogium, Evas_Object *parent, struct button_def *button, struct multi_text *data, const uint_fast8_t pagenum, Eina_Bool pageindex); Evas_Object *menu_widget_list(struct eulogium_data *eulogium, Evas_Object *parent, struct menu_def *menu); Evas_Object *eulogium_multi_screen_menu(struct eulogium_data *eulogium, Evas_Object *parent, struct multi_screen_data *screen_data, const uint_fast8_t pagenum, Eina_Bool pageindex); +Evas_Object *eulogium_menu_confirm(Evas_Object *parent, const char *msg, const char *prev, const struct button_def *next); #endif /* _EULOGIUM_H */ -- cgit v0.12