void controller_network_failure_back(void);
void controller_network_failure_next();
+void controller_network_failure_try_reconnect(void);
+
#endif /* CONTROLLER_CONTROLLER_NETWORK_FAILURE_H_ */
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;
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_ */
--- /dev/null
+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
static void controller_network_failure_destroy(void)
{
free(controller);
+ model_connection_subscribe_reconnect(NULL);
}
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)
{
model_connection_connect();
}
+
+void controller_network_failure_try_reconnect(void)
+{
+ model_connection_try_reconnect();
+}
#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)
{
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);
+ }
+}
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)