From e1d3e5090bc90357f4947423bfac2d70416ccef5 Mon Sep 17 00:00:00 2001 From: Olliver Schinagl Date: Wed, 29 Apr 2015 17:08:58 +0200 Subject: Move (almost) all callbacks to the top, add prototypes for them Signed-off-by: Olliver Schinagl --- src/eulogium.c | 464 +++++++++++++++++++++++++++++++-------------------------- 1 file changed, 249 insertions(+), 215 deletions(-) diff --git a/src/eulogium.c b/src/eulogium.c index b93ada0..a0a6613 100644 --- a/src/eulogium.c +++ b/src/eulogium.c @@ -17,6 +17,130 @@ #define COPYRIGHT "Copyright © 2015 Olliver Schinagl and various contributors (see AUTHORS)." +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_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_maint_bp_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED); +static void _but_mat_ch_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED); +static void _but_mat_set_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED); +static void _eulogium_button_main_maintanance_cb(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED); +static void _cb_button_main_print(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED); +static void _but_maint_adv_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED); +static void _eulogium_button_main_mat_cb(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED); + +/* Buttons */ +static struct button_def but_return = { + .text = "RETURN", + .cb = { + .func = &_cb_content_prev_set, + .data = NULL, + .info = "return button pressed", + }, + .data = NULL, +}; + +static struct button_def but_print_abort = { + .text = "ABORT", + .cb = { + .func = _print_abort_cb, + .data = NULL, + .info = "print abort button pressed", + }, + .data = NULL, +}; + +static struct button_def but_print_progress_tune = { + .text = "TUNE", + .cb = { + .func = NULL, + .data = NULL, + .info = "tune progress button pressed", + }, + .data = NULL, +}; + +static struct button_def but_main_print = { + .text = "PRINT", + .cb = { + .func = &_cb_button_main_print, + .data = NULL, + .info = "print button pressed", + }, + .data = NULL, +}; + +static struct button_def but_main_material = { + .text = "MATERIAL", + .cb = { + .func = &_eulogium_button_main_mat_cb, + .data = NULL, + .info = "material button pressed", + }, + .data = NULL, +}; + +static struct button_def but_main_maintanance = { + .text = "MAINTANANCE", + .cb = { + .func = &_eulogium_button_main_maintanance_cb, + .data = NULL, + .info = "maintenance button pressed", + }, + .data = NULL, +}; + +static struct button_def but_maintanance_advanced = { + .text = "ADVANCED", + .cb = { + .func = &_but_maint_adv_cb, + .data = NULL, + }, + .data = NULL, +}; + +static struct button_def but_maintanance_buildplate = { + .text = "BUILD-PLATE", + .cb = { + .func = &_but_maint_bp_cb, + .data = NULL, + }, + .data = NULL, +}; + +static struct button_def but_mat_change = { + .text = "CHANGE", + .cb = { + .func = &_but_mat_ch_cb, + .data = NULL, + }, + .data = NULL, +}; + +static struct button_def but_mat_settings = { + .text = "SETTINGS", + .cb = { + .func = &_but_mat_set_cb, + .data = NULL, + }, + .data = NULL, +}; + +static void _on_print_abort_ret(void *data EINA_UNUSED, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED) +{ + const char *errname, *errmsg; + Eina_Bool print_abort = EINA_FALSE; + + if (eldbus_message_error_get(msg, &errname, &errmsg)) { + EINA_LOG_ERR("%s %s", errname, errmsg); + return; + } + if (!eldbus_message_arguments_get(msg, "b", &print_abort)) { + EINA_LOG_ERR("Failed to abort print."); + return; + } +} + static void _cb_content_prev_set(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { struct eulogium_data *eulogium = data; @@ -30,15 +154,121 @@ static void _cb_content_prev_set(void *data, Evas_Object *obj EINA_UNUSED, void elm_naviframe_item_pop(eulogium->navi); } -static struct button_def but_return = { - .text = "RETURN", - .cb = { - .func = &_cb_content_prev_set, - .data = NULL, - .info = "return button pressed", - }, - .data = NULL, -}; +static void _print_abort_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + struct eulogium_data *eulogium = data; + Elm_Object_Item *item; + + eldbus_proxy_call(eulogium->dbus.proxy[HARMA], "abortPrint", _on_print_abort_ret, eulogium, -1, ""); + + item = elm_naviframe_bottom_item_get(eulogium->navi); + if (item) + elm_naviframe_item_pop_to(item); /* XXX what to do else? | XXX stack corrupted after this? (see error log) */ + else + EINA_LOG_CRIT("There is no bottom of the stack!"); + + /* XXX Quick and ugly cleaning up */ + eulogium->status = NULL; /* XXX memleak here too? how does efl do it */ + eulogium->progress = NULL; /* XXX memleak here? when or how is this freeed by efl */ + + free(eulogium->print.name); + eulogium->print.name = NULL; + free(eulogium->print.file); + eulogium->print.file = NULL; + + eulogium->print.time = 0; + eulogium->print.material = 0; + eulogium->print.progress = 0; +} + +static void _on_blink_ret(void *data EINA_UNUSED, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED) +{ + const char *errname, *errmsg; + + if (eldbus_message_error_get(msg, &errname, &errmsg)) { + EINA_LOG_ERR("%s %s", errname, errmsg); + return; + } +} + +static void _but_maint_bp_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + struct eulogium_data *eulogium = data; + printf("But build-plate\n"); +eldbus_proxy_call(eulogium->dbus.proxy[LED], "blink", _on_blink_ret, NULL, -1, ""); +} + +static void _but_mat_ch_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + printf("But matterial change\n"); +} + +static void _but_mat_set_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + printf("But matterial settings\n"); +} + +static void _eulogium_button_main_maintanance_cb(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED) +{ + struct eulogium_data *eulogium = data; + Evas_Object *content; + + printf("Button maintanance pressed\n"); + content = eulogium_tripple_button_menu(eulogium->navi, &but_maintanance_buildplate, &but_maintanance_advanced, &but_return); + if (!content) + return; + elm_naviframe_item_simple_push(eulogium->navi, content); +} + +static void _cb_button_main_print(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED) +{ + struct eulogium_data *eulogium = data; + Evas_Object *content; + + printf("Button print pressed\n"); + /* TODO: add intermediate window to list usbdrive/sdcard/youmagine */ + content = eulogium_print_menu(eulogium, "/home"); /* TODO: replace later */ + if (!content) + return; + elm_naviframe_item_simple_push(eulogium->navi, content); +} + +static void _but_maint_adv_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) +{ + struct eulogium_data *eulogium = data; + Evas_Object *box, *object; + printf("But maint advanced\n"); + + /* XXX Quick hack to make the adv feature a little more useful, this needs to be made much better! */ + box = elm_box_add(eulogium->navi); + evas_object_show(box); + + object = elm_label_add(box); + elm_object_text_set(object, "Ethernet IP: 1.2.3.4
WiFi IP: 5.6.7.8"); /* TODO: text outline left */ + evas_object_show(object); + elm_box_pack_end(box, object); + + object = elm_button_add(box); + elm_object_text_set(object, but_return.text); /* not pretty using the global XXX */ + evas_object_smart_callback_add(object, "clicked", but_return.cb.func, but_return.cb.data); + evas_object_show(object); + elm_box_pack_end(box, object); + + elm_naviframe_item_simple_push(eulogium->navi, box); +} + +static void _eulogium_button_main_mat_cb(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED) +{ + struct eulogium_data *eulogium = data; + Evas_Object *content; + + printf("Button matts pressed\n"); + + content = eulogium_tripple_button_menu(eulogium->navi, &but_mat_change, &but_mat_settings, &but_return); + if (!content) + return; + elm_naviframe_item_simple_push(eulogium->navi, content); +} Evas_Object *eulogium_button_list_add(Evas_Object *parent) { @@ -168,16 +398,6 @@ void eulogium_print_data_set(struct eulogium_data *eulogium, char *filepath) eulogium->print.time = 12; } -static void _on_blink_ret(void *data EINA_UNUSED, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED) -{ - const char *errname, *errmsg; - - if (eldbus_message_error_get(msg, &errname, &errmsg)) { - EINA_LOG_ERR("%s %s", errname, errmsg); - return; - } -} - /* Function to make the Z-axis of any wheel focus the next/previous focusable widget */ static void _cb_eulogium_input_wheel(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info) { @@ -194,48 +414,6 @@ static void _cb_eulogium_exit(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUS elm_exit(); } -static void _on_print_abort_ret(void *data EINA_UNUSED, const Eldbus_Message *msg, Eldbus_Pending *pending EINA_UNUSED) -{ - const char *errname, *errmsg; - Eina_Bool print_abort = EINA_FALSE; - - if (eldbus_message_error_get(msg, &errname, &errmsg)) { - EINA_LOG_ERR("%s %s", errname, errmsg); - return; - } - if (!eldbus_message_arguments_get(msg, "b", &print_abort)) { - EINA_LOG_ERR("Failed to abort print."); - return; - } -} - -static void _print_abort_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - struct eulogium_data *eulogium = data; - Elm_Object_Item *item; - - eldbus_proxy_call(eulogium->dbus.proxy[HARMA], "abortPrint", _on_print_abort_ret, eulogium, -1, ""); - - item = elm_naviframe_bottom_item_get(eulogium->navi); - if (item) - elm_naviframe_item_pop_to(item); /* XXX what to do else? | XXX stack corrupted after this? (see error log) */ - else - EINA_LOG_CRIT("There is no bottom of the stack!"); - - /* XXX Quick and ugly cleaning up */ - eulogium->status = NULL; /* XXX memleak here too? how does efl do it */ - eulogium->progress = NULL; /* XXX memleak here? when or how is this freeed by efl */ - - free(eulogium->print.name); - eulogium->print.name = NULL; - free(eulogium->print.file); - eulogium->print.file = NULL; - - eulogium->print.time = 0; - eulogium->print.material = 0; - eulogium->print.progress = 0; -} - Evas_Object *eulogium_split_screen(Evas_Object *parent, Evas_Object *top, Evas_Object *bottom) { Evas_Object *table; @@ -656,47 +834,6 @@ static void _eulogium_multi_screen_next_cb(void *data, Evas_Object *obj EINA_UNU free(data); } -static void _but_maint_adv_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - struct eulogium_data *eulogium = data; - Evas_Object *box, *object; - printf("But maint advanced\n"); - - /* XXX Quick hack to make the adv feature a little more useful, this needs to be made much better! */ - box = elm_box_add(eulogium->navi); - evas_object_show(box); - - object = elm_label_add(box); - elm_object_text_set(object, "Ethernet IP: 1.2.3.4
WiFi IP: 5.6.7.8"); /* TODO: text outline left */ - evas_object_show(object); - elm_box_pack_end(box, object); - - object = elm_button_add(box); - elm_object_text_set(object, but_return.text); /* not pretty using the global XXX */ - evas_object_smart_callback_add(object, "clicked", but_return.cb.func, but_return.cb.data); - evas_object_show(object); - elm_box_pack_end(box, object); - - elm_naviframe_item_simple_push(eulogium->navi, box); -} - -static void _but_maint_bp_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - struct eulogium_data *eulogium = data; - printf("But build-plate\n"); -eldbus_proxy_call(eulogium->dbus.proxy[LED], "blink", _on_blink_ret, NULL, -1, ""); -} - -static void _but_mat_ch_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - printf("But matterial change\n"); -} - -static void _but_mat_set_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) -{ - printf("But matterial settings\n"); -} - static void _cb_material_set(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { printf("Material: %s selected\n", (char *)data); @@ -888,111 +1025,6 @@ Evas_Object *eulogium_tripple_button_menu(Evas_Object *parent, const struct butt return eulogium_split_screen(parent, _top, _bottom); } -static struct button_def but_maintanance_advanced = { - .text = "ADVANCED", - .cb = { - .func = &_but_maint_adv_cb, - .data = NULL, - }, - .data = NULL, -}; - -static struct button_def but_maintanance_buildplate = { - .text = "BUILD-PLATE", - .cb = { - .func = &_but_maint_bp_cb, - .data = NULL, - }, - .data = NULL, -}; - -static struct button_def but_mat_change = { - .text = "CHANGE", - .cb = { - .func = &_but_mat_ch_cb, - .data = NULL, - }, - .data = NULL, -}; - -static struct button_def but_mat_settings = { - .text = "SETTINGS", - .cb = { - .func = &_but_mat_set_cb, - .data = NULL, - }, - .data = NULL, -}; - -static void _eulogium_button_main_mat_cb(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED) -{ - struct eulogium_data *eulogium = data; - Evas_Object *content; - - printf("Button matts pressed\n"); - - content = eulogium_tripple_button_menu(eulogium->navi, &but_mat_change, &but_mat_settings, &but_return); - if (!content) - return; - elm_naviframe_item_simple_push(eulogium->navi, content); -} - -static void _eulogium_button_main_maintanance_cb(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED) -{ - struct eulogium_data *eulogium = data; - Evas_Object *content; - - printf("Button maintanance pressed\n"); - content = eulogium_tripple_button_menu(eulogium->navi, &but_maintanance_buildplate, &but_maintanance_advanced, &but_return); - if (!content) - return; - elm_naviframe_item_simple_push(eulogium->navi, content); -} - -static void _cb_button_main_print(void *data, Evas_Object *object EINA_UNUSED, void *event_info EINA_UNUSED) -{ - struct eulogium_data *eulogium = data; - Evas_Object *content; - - printf("Button print pressed\n"); - /* TODO: add intermediate window to list usbdrive/sdcard/youmagine */ - content = eulogium_print_menu(eulogium, "/home"); /* TODO: replace later */ - if (!content) - return; - elm_naviframe_item_simple_push(eulogium->navi, content); -} - -/* Buttons */ -static struct button_def but_main_print = { - .text = "PRINT", - .cb = { - .func = &_cb_button_main_print, - .data = NULL, - .info = "print button pressed", - }, - .data = NULL, -}; - -static struct button_def but_main_material = { - .text = "MATERIAL", - .cb = { - .func = &_eulogium_button_main_mat_cb, - .data = NULL, - .info = "material button pressed", - }, - .data = NULL, -}; - -static struct button_def but_main_maintanance = { - .text = "MAINTANANCE", - .cb = { - .func = &_eulogium_button_main_maintanance_cb, - .data = NULL, - .info = "maintenance button pressed", - }, - .data = NULL, -}; - static struct multi_screen screen[] = { { .type = NONE, @@ -1080,14 +1112,16 @@ static void eulogium_setup(struct eulogium_data *eulogium) eulogium->print.progress = 0; eulogium->print.time = 0; eulogium->print.material = 0.0; - eulogium_button_cb_data_set(&but_main_print, eulogium); - eulogium_button_cb_data_set(&but_main_material, eulogium); - eulogium_button_cb_data_set(&but_main_maintanance, eulogium); - eulogium_button_cb_data_set(&but_mat_change, eulogium); - eulogium_button_cb_data_set(&but_mat_settings, eulogium); - eulogium_button_cb_data_set(&but_maintanance_buildplate, eulogium); - eulogium_button_cb_data_set(&but_maintanance_advanced, eulogium); - eulogium_button_cb_data_set(&but_return, eulogium); + eulogium_button_cb_data_set(&but_return, 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); + eulogium_button_cb_data_set(&but_main_material, eulogium); + eulogium_button_cb_data_set(&but_main_maintanance, eulogium); + eulogium_button_cb_data_set(&but_maintanance_advanced, eulogium); + eulogium_button_cb_data_set(&but_maintanance_buildplate, eulogium); + eulogium_button_cb_data_set(&but_mat_change, eulogium); + eulogium_button_cb_data_set(&but_mat_settings, eulogium); } /* TODO May need this later to change certain connections to objects */ -- cgit v0.12