void network_wireless_set_update_callbacks(void *data);
void network_wired_set_update_callbacks(void *data);
void _popup_failed_no_retry_wireless_status(struct _priv *priv);
+static void _data_event_cb(enum event_type type, void *data);
struct _priv * current_priv = NULL;
switch (type) {
case EVENT_DATA_INIT_FAIL_WIRELESS:
+ if (priv->cur_type != TYPE_WIRELESS)
+ return;
+
priv->wireless_update_requested = false;
/* Failed to initialize wireless */
static bool _create(layoutmgr *lmgr, void *data)
{
struct _priv *priv;
- struct datamgr *dmgr;
-// struct listmgr *listmgr;
Evas_Object *base, *ly;
- //Evas_Object *wired;
if (!lmgr) {
_ERR("Invalid argument.");
priv->ly = ly;
current_priv = priv;
-/*
- wired = utils_add_layout(ly, "grp.layout.wired.content", EINA_TRUE);
- if (!wired) {
- _ERR("Add layout failed.");
- free(priv);
- evas_object_del(ly);
- return false;
- }
- priv->wired_layout = wired;
-*/
-
- dmgr = datamgr_create(get_wireless_data_class(), _data_event_cb, priv);
- if (!dmgr) {
- _ERR("Create datamgr failed.");
- free(priv);
- evas_object_del(ly);
-// evas_object_del(wired);
- return false;
- }
-/* listmgr = listmgr_create(ly);
- if (!listmgr) {
- _ERR("Create gridmgr failed.");
- goto err;
- }
- if (!listmgr_add_list(listmgr, LIST_WIRELESS,
- get_wireless_grid_class(), NULL, priv)) {
- _ERR("Add wireless list failed.");
- listmgr_destroy(listmgr);
- goto err;
- }
-*/
- priv->wirelessmgr = dmgr;
-// priv->listmgr = listmgr;
- priv->wireless_support = true;
priv->wireless_update_requested = false;
// TODO: detect currently selected network type
- priv->cur_type = TYPE_WIRELESS;
+ priv->cur_type = TYPE_NONE;
if (!_draw_network_buttons(priv, (Evas_Object *)data)) {
_ERR("Draw network buttons failed.");
- //listmgr_destroy(listmgr);
goto err;
}
- /* wired connection data */
- if (!wired_connection_init(&priv->wired, _data_event_cb, priv)) {
- _ERR("Failed to initialize wired connection");
- goto err;
- }
layoutmgr_set_layout_data(lmgr, LAYOUT_ID_NETWORK, priv);
-/* listmgr_add_inner_grid_cb(priv->listmgr, LIST_WIRELESS,
- &_grid_input_handler, priv);
-
- if (data) {
- listmgr_set_list_next_focus(priv->listmgr, LIST_WIRELESS,
- (Evas_Object *)data, ELM_FOCUS_UP, EINA_FALSE, ELM_FOCUS_DOWN);
-
- elm_object_focus_next_object_set((Evas_Object *)data, priv->network_type_btn, ELM_FOCUS_DOWN);
- }
-*/
return true;
err:
- //evas_object_del(wired);
- datamgr_destroy(dmgr);
free(priv);
evas_object_del(ly);
static void _show(void *layout_data)
{
struct _priv *priv;
+ struct datamgr *dmgr;
if (!layout_data) {
_ERR("Invalid argument.");
}
priv = layout_data;
+ /* initialize wireless */
+ if (priv->wirelessmgr == NULL) {
+ dmgr = datamgr_create(get_wireless_data_class(), _data_event_cb, priv);
+ if (!dmgr) {
+ _ERR("Create datamgr failed.");
+ } else {
+ priv->wirelessmgr = dmgr;
+ priv->wireless_update_requested = false;
+ }
+ }
+
+ if (priv->wired == NULL) {
+ if (!wired_connection_init(&priv->wired, _data_event_cb, priv)) {
+ _ERR("Failed to initialize wired connection");
+ }
+ }
if (priv->ly) {
evas_object_show(priv->ly);
- //elm_object_part_content_set(priv->base, PART_CONTENT_NETWORK, priv->ly);
elm_object_part_content_set(priv->base, PART_CONTENT, priv->ly);
-
-// if (priv->cur_type == TYPE_WIRELESS)
-// _retry_wireless_network(priv);
}
- update_style(priv);
+
+ priv->cur_type = TYPE_WIRELESS;
+ if (priv->wirelessmgr)
+ update_style(priv);
+
menumgr_update(priv->menu);
}
_ERR("Invalid argument.");
return;
}
-
priv = layout_data;
+
+ if (priv->wirelessmgr) {
+ datamgr_destroy(priv->wirelessmgr);
+ priv->wirelessmgr = NULL;
+ }
+
+ if (priv->wired) {
+ wired_connection_deinit(priv->wired);
+ priv->wired = NULL;
+ }
+
if (priv->ly) {
evas_object_hide(priv->ly);
//elm_object_part_content_unset(priv->base, PART_CONTENT_NETWORK);
elm_object_part_content_unset(priv->base, PART_CONTENT);
}
+ priv->cur_type = TYPE_NONE;
}
static void _destroy(void *layout_data)
priv = layout_data;
- if (priv->wirelessmgr)
+ if (priv->wirelessmgr) {
datamgr_destroy(priv->wirelessmgr);
-
- if (priv->listmgr) {
- listmgr_remove_inner_grid_cb(priv->listmgr, LIST_WIRELESS,
- &_grid_input_handler);
- listmgr_destroy(priv->listmgr);
+ priv->wirelessmgr = NULL;
}
if (priv->wired) {
priv->wired = NULL;
}
+ if (priv->listmgr) {
+ listmgr_remove_inner_grid_cb(priv->listmgr, LIST_WIRELESS,
+ &_grid_input_handler);
+ listmgr_destroy(priv->listmgr);
+ }
+
menumgr_destroy(priv->menu);
evas_object_del(priv->ly);