From 6fdef909b1654f10991676640473222d3ececf3f Mon Sep 17 00:00:00 2001 From: Krzysztof Wieclaw Date: Tue, 10 Jul 2018 16:08:40 +0200 Subject: [PATCH] Connection failure view added Change-Id: Idf3e063b2bfb064b58c2827af4e05a5c4e02f6ce Signed-off-by: Krzysztof Wieclaw --- inc/controller/controller_network_failure.h | 2 ++ inc/model/model_base.h | 1 + inc/model/model_connection.h | 2 ++ res/edje/view_network_failure.edc | 47 +++++++++++++++++++++++++++++ src/controller/controller_network_failure.c | 13 ++++++++ src/model/model_connection.c | 19 +++++++++++- src/view/view_network_failure.c | 10 ++---- 7 files changed, 85 insertions(+), 9 deletions(-) create mode 100644 res/edje/view_network_failure.edc diff --git a/inc/controller/controller_network_failure.h b/inc/controller/controller_network_failure.h index 20485d9..23e65d7 100644 --- a/inc/controller/controller_network_failure.h +++ b/inc/controller/controller_network_failure.h @@ -24,4 +24,6 @@ void controller_network_failure_init(t_view_update_cb view_update_cb); void controller_network_failure_back(void); void controller_network_failure_next(); +void controller_network_failure_try_reconnect(void); + #endif /* CONTROLLER_CONTROLLER_NETWORK_FAILURE_H_ */ diff --git a/inc/model/model_base.h b/inc/model/model_base.h index 5252376..19d006a 100644 --- a/inc/model/model_base.h +++ b/inc/model/model_base.h @@ -34,6 +34,7 @@ typedef void (*t_model_update_cb)(s_model_data *data); typedef struct _s_model { t_model_update_cb controller_update_cb; + t_model_update_cb reconnect_cb; char player_name[PLAYER_NAME_MAX_LEN + 1]; } s_model; diff --git a/inc/model/model_connection.h b/inc/model/model_connection.h index d56fc14..73002d4 100644 --- a/inc/model/model_connection.h +++ b/inc/model/model_connection.h @@ -28,5 +28,7 @@ void model_connection_subscribe_event(t_model_update_cb model_update_cb); void model_connection_connect(void); bool model_connection_player_name_set(const char *player_name); +void model_connection_subscribe_reconnect(t_model_update_cb model_update_cb); +void model_connection_try_reconnect(void); #endif /* MODEL_MODEL_CONNECTION_H_ */ diff --git a/res/edje/view_network_failure.edc b/res/edje/view_network_failure.edc new file mode 100644 index 0000000..d942a61 --- /dev/null +++ b/res/edje/view_network_failure.edc @@ -0,0 +1,47 @@ +images{ + image: "bg_dark.png" COMP; +} +collections{ + group{ + name: "main"; + parts{ + part{ + name: "background"; + type: IMAGE; + desc{ + state: "default" 0.0; + image.normal: "bg_dark.png"; + } + } + part{ + name: "error_text"; + type: TEXT; + desc{ + state: "default" 0.0; + rel1.relative: 0.0 0.13; + rel2.relative: 1.0 0.19; + color: 240 35 61 255; + text{ + text: "Network error!"; + size: 22; + font: "SamsungOne"; + } + } + } + part{ + name: "description_text"; + type: TEXT; + desc{ + rel1.relative: 0.0 0.3; + rel2.relative: 1.0 0.7; + color: 248 238 204 255; + text{ + text: "Trying to reconnect..."; + size: 25; + font: "SamsungOne"; + } + } + } + } + } +} \ No newline at end of file diff --git a/src/controller/controller_network_failure.c b/src/controller/controller_network_failure.c index 3e1c054..ad949a2 100644 --- a/src/controller/controller_network_failure.c +++ b/src/controller/controller_network_failure.c @@ -26,6 +26,7 @@ static s_controller *controller = NULL; static void controller_network_failure_destroy(void) { free(controller); + model_connection_subscribe_reconnect(NULL); } static void _connected_cb(s_model_data *model_data) @@ -34,12 +35,19 @@ static void _connected_cb(s_model_data *model_data) controller_network_failure_destroy(); } +static void _reconnected_cb(s_model_data *model_data) +{ + view_manager_set_view(VIEW_CONNECT_TO_CAR); + controller_network_failure_destroy(); +} + void controller_network_failure_init(t_view_update_cb view_update_cb) { controller = calloc(1, sizeof(s_controller)); controller->view_update_cb = view_update_cb; model_connection_subscribe_event(_connected_cb); + model_connection_subscribe_reconnect(_reconnected_cb); } void controller_network_failure_back(void) @@ -51,3 +59,8 @@ void controller_network_failure_next() { model_connection_connect(); } + +void controller_network_failure_try_reconnect(void) +{ + model_connection_try_reconnect(); +} diff --git a/src/model/model_connection.c b/src/model/model_connection.c index 814763f..5a91fb7 100644 --- a/src/model/model_connection.c +++ b/src/model/model_connection.c @@ -17,7 +17,7 @@ #include "gear-racing-controller.h" #include "model/model_connection.h" -s_model model_connection = { 0, { 0, } }; +s_model model_connection = { 0, 0, { 0, } }; void model_connection_init(void) { @@ -46,4 +46,21 @@ bool model_connection_player_name_set(const char *player_name) return true; } +void model_connection_subscribe_reconnect(t_model_update_cb model_update_cb) +{ + model_connection.reconnect_cb = model_update_cb; +} + +void model_connection_try_reconnect(void) +{ + static s_model_data model_data = { + .type = MODEL_TYPE_END, + 0, + }; + //TODO: Reconnect processing + + if (model_connection.reconnect_cb) { + model_connection.reconnect_cb(&model_data); + } +} diff --git a/src/view/view_network_failure.c b/src/view/view_network_failure.c index 6734608..bd17d58 100644 --- a/src/view/view_network_failure.c +++ b/src/view/view_network_failure.c @@ -31,19 +31,13 @@ static void _layout_back_cb(void *data, Evas_Object *obj, void *event_info) controller_network_failure_back(); } -static void _ok_button_clicked_cb(void *data, Evas_Object *obj, void *event_info) -{ - controller_network_failure_next(); -} - static void _view_network_failure_create_gui(Evas_Object *parent) { - s_info.view_base.layout = view_base_create_layout(parent, EDJ_FILE, GRP_MAIN); + s_info.view_base.layout = view_base_create_layout(parent, "edje/view_network_failure.edj", GRP_MAIN); eext_object_event_callback_add(s_info.view_base.layout, EEXT_CALLBACK_BACK, _layout_back_cb, NULL); elm_layout_text_set(s_info.view_base.layout, "txt_title", "Network failure"); - view_base_create_button(s_info.view_base.layout, "Button_Ok", "Ok", NULL, NULL, _ok_button_clicked_cb, NULL); - view_base_create_button(s_info.view_base.layout, "Button_Cancel", "Cancel", NULL, NULL, NULL, NULL); + controller_network_failure_try_reconnect(); } s_view_base *view_network_failure_init(Evas_Object *parent) -- 2.7.4