Fix genlist style
[apps/native/ug-wifi-efl.git] / sources / ui-gadget / viewers-layout / view_detail.c
1 /*
2  * Wi-Fi
3  *
4  * Copyright 2012 Samsung Electronics Co., Ltd
5  *
6  * Licensed under the Flora License, Version 1.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * http://www.tizenopensource.org/license
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  *
18  */
19 #include <efl_extension.h>
20
21 #include "ug_wifi.h"
22 #include "view_detail.h"
23 #include "i18nmanager.h"
24 #include "viewer_manager.h"
25 #include "viewer_list.h"
26 #include "winset_popup.h"
27 #include "common_utils.h"
28 #include "common_ip_info.h"
29 #include "common_eap_connect.h"
30
31 typedef struct _view_detail_data {
32         Evas_Object *win;
33         Evas_Object *nav;
34         char *ap_image_path;
35         wifi_ap_h ap;
36         eap_info_list_t *eap_info_list;
37         full_ip_info_t *ip_info;
38         Evas_Object *forget_confirm_popup;
39         Evas_Object *view_detail_list;
40         Evas_Object *btn;
41         Evas_Object *ctxpopup;
42 } view_detail_data;
43
44 static int view_detail_end = TRUE;
45 extern wifi_appdata *ug_app_state;
46 static view_detail_data *_detail_data = NULL;
47 static Eina_Bool rotate_flag = EINA_FALSE;
48 static int pos_changed = 0;
49
50 static Eina_Bool detailview_sk_cb(void *data, Elm_Object_Item *it);
51 static void forget_sk_cb(void *data, Evas_Object *obj, void *event_info);
52 static void _transition_finished_sub_cb(void *data, Evas_Object *obj, void *event_info);
53 static void _create_ctxpopup_forget_btn_cb(void *data, Evas_Object *obj, void *event_info);
54 static void _ctxpopup_del_cb(void *data, Evas_Object *obj, void *event_info);
55 static void _ctxpopup_move(Evas_Object *parent);
56 static void _ctxpopup_dismissed_cb(void *data, Evas_Object *obj, void *event_info);
57 static void _ctxpopup_delete_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
58 static void _ctxpopup_rotate_cb(void *data, Evas_Object *obj, void *event_info);
59 static void _ctxpopup_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
60
61 static void _create_ctxpopup_forget_btn_cb(void *data, Evas_Object *obj, void *event_info)
62 {
63         struct ug_data *ugd = NULL;
64         Evas_Object *parent = NULL;
65         Elm_Object_Item *item = NULL;
66
67         ugd = (struct ug_data *)ug_app_state->gadget;
68         retm_if(ugd == NULL);
69
70         parent = ugd->win_main;
71         if (!parent || !_detail_data) {
72                 return;
73         }
74
75         if (_detail_data->ctxpopup) {
76                 evas_object_del(_detail_data->ctxpopup);
77         }
78
79         _detail_data->ctxpopup = elm_ctxpopup_add(parent);
80
81         elm_ctxpopup_auto_hide_disabled_set(_detail_data->ctxpopup, EINA_TRUE);
82         elm_object_style_set(_detail_data->ctxpopup, "more/default");
83         eext_object_event_callback_add(_detail_data->ctxpopup, EEXT_CALLBACK_BACK,
84                         _ctxpopup_del_cb, NULL);
85         eext_object_event_callback_add(_detail_data->ctxpopup, EEXT_CALLBACK_MORE,
86                         _ctxpopup_del_cb, NULL);
87         evas_object_smart_callback_add(_detail_data->ctxpopup, "dismissed",
88                         _ctxpopup_dismissed_cb, NULL);
89         evas_object_event_callback_add(_detail_data->ctxpopup, EVAS_CALLBACK_DEL,
90                         _ctxpopup_delete_cb, parent);
91         evas_object_event_callback_add(parent, EVAS_CALLBACK_RESIZE,
92                         _ctxpopup_resize_cb, _detail_data->ctxpopup);
93
94         evas_object_smart_callback_add(elm_object_top_widget_get(_detail_data->ctxpopup),
95                         "rotation,changed", _ctxpopup_rotate_cb, _detail_data->ctxpopup);
96
97         item = elm_ctxpopup_item_append(_detail_data->ctxpopup,
98                         "IDS_WIFI_SK_FORGET", NULL, forget_sk_cb, _detail_data);
99         elm_object_item_domain_text_translatable_set(item, PACKAGE, EINA_TRUE);
100
101         elm_ctxpopup_direction_priority_set(_detail_data->ctxpopup,
102                         ELM_CTXPOPUP_DIRECTION_UP, ELM_CTXPOPUP_DIRECTION_UNKNOWN,
103                         ELM_CTXPOPUP_DIRECTION_UNKNOWN, ELM_CTXPOPUP_DIRECTION_UNKNOWN);
104
105         _ctxpopup_move(_detail_data->ctxpopup);
106         evas_object_show(_detail_data->ctxpopup);
107 }
108
109 static void _ctxpopup_del_cb(void *data, Evas_Object *obj, void *event_info)
110 {
111         __COMMON_FUNC_ENTER__;
112
113         if (!_detail_data)
114                 return;
115
116         evas_object_del(_detail_data->ctxpopup);
117         _detail_data->ctxpopup = NULL;
118
119         __COMMON_FUNC_EXIT__;
120 }
121
122 static void _ctxpopup_move(Evas_Object *parent)
123 {
124         __COMMON_FUNC_ENTER__;
125
126         if (!_detail_data)
127                 return;
128
129         Evas_Object *win;
130         Evas_Coord w, h;
131         int pos = -1;
132
133         win = elm_object_top_widget_get(_detail_data->ctxpopup);
134         elm_win_screen_size_get(win, NULL, NULL, &w, &h);
135         pos = elm_win_rotation_get(win);
136         if (pos == 0 || pos == 180) {
137                 pos_changed = 0;
138         } else if (pos == 90 || pos == 270) {
139                 pos_changed = 1;
140         }
141
142         switch (pos) {
143                 case 0:
144                 case 180:
145                         evas_object_move(_detail_data->ctxpopup, (w/2), h);
146                         break;
147                 case 90:
148                         evas_object_move(_detail_data->ctxpopup, (h/2), w);
149                         break;
150                 case 270:
151                         evas_object_move(_detail_data->ctxpopup, (h/2), w);
152                         break;
153         }
154         __COMMON_FUNC_EXIT__;
155 }
156
157 static void _ctxpopup_dismissed_cb(void *data, Evas_Object *obj, void *event_info)
158 {
159         __COMMON_FUNC_ENTER__;
160
161         if (!_detail_data)
162                 return;
163
164         Evas_Object *_win_main = data;
165
166         if (!rotate_flag) {
167                 evas_object_del(_detail_data->ctxpopup);
168                 _detail_data->ctxpopup = NULL;
169         } else {
170                 _ctxpopup_move(_win_main);
171                 evas_object_show(_detail_data->ctxpopup);
172                 rotate_flag = EINA_FALSE;
173         }
174
175         __COMMON_FUNC_EXIT__;
176 }
177
178 static void _ctxpopup_delete_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
179 {
180         __COMMON_FUNC_ENTER__;
181
182         Evas_Object *navi = (Evas_Object *)data;
183         Evas_Object *ctx = obj;
184
185         if (navi == NULL)
186                 return;
187
188         if (ctx == NULL)
189                 return;
190
191         evas_object_smart_callback_del(ctx, "dismissed",
192                         _ctxpopup_dismissed_cb);
193         evas_object_event_callback_del(navi, EVAS_CALLBACK_RESIZE,
194                         _ctxpopup_resize_cb);
195         evas_object_smart_callback_del(elm_object_top_widget_get(ctx),
196                         "rotation,changed", _ctxpopup_rotate_cb);
197         evas_object_event_callback_del_full(ctx, EVAS_CALLBACK_DEL,
198                         _ctxpopup_delete_cb, navi);
199
200         __COMMON_FUNC_EXIT__;
201
202 }
203
204 static void _ctxpopup_rotate_cb(void *data, Evas_Object *obj, void *event_info)
205 {
206
207         __COMMON_FUNC_ENTER__;
208
209         if (!_detail_data)
210                 return;
211
212         Evas_Object *_win_main = data;
213
214         _ctxpopup_move(_win_main);
215         evas_object_show(_detail_data->ctxpopup);
216
217         __COMMON_FUNC_EXIT__;
218 }
219
220 static void _ctxpopup_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
221 {
222         __COMMON_FUNC_ENTER__;
223
224         if (_detail_data->ctxpopup) {
225                 Evas_Object *win;
226                 Evas_Coord w, h;
227                 int pos = -1;
228
229                 win = elm_object_top_widget_get(_detail_data->ctxpopup);
230                 elm_win_screen_size_get(win, NULL, NULL, &w, &h);
231                 pos = elm_win_rotation_get(win);
232                 if (pos == 0 || pos == 180) {
233                         pos = 0;
234                 } else if (pos == 90 || pos == 270) {
235                         pos = 1;
236                 }
237                 if (pos_changed != pos) {
238                         rotate_flag = EINA_TRUE;
239                 } else
240                         rotate_flag = EINA_FALSE;
241         }
242         else
243                 rotate_flag = EINA_FALSE;
244
245         __COMMON_FUNC_EXIT__;
246 }
247
248 static char *_view_detail_grouptitle_text_get(void *data,
249                 Evas_Object *obj, const char *part)
250 {
251         __COMMON_FUNC_ENTER__;
252
253         retvm_if(NULL == part, NULL);
254
255         char *ret = NULL;
256         char *tmp = NULL;
257         char *txt = NULL;
258
259         if (!strcmp("elm.text", part)) {
260                 _detail_data = (view_detail_data *)data;
261                 retvm_if(NULL == _detail_data, NULL);
262
263                 if (wifi_ap_get_essid(_detail_data->ap, &tmp) != WIFI_ERROR_NONE) {
264                                 ret = NULL;
265                 }
266
267                 txt = evas_textblock_text_utf8_to_markup(NULL, tmp);
268                 g_free(tmp);
269                 ret = g_strdup(txt);
270                 g_free(txt);
271         }
272
273         __COMMON_FUNC_EXIT__;
274         return ret;
275 }
276
277 static Evas_Object *_view_detail_grouptitle_content_get(void *data, Evas_Object *obj, const char *part)
278 {
279         retvm_if(NULL == data || NULL == part, NULL);
280
281         view_detail_data *_detail_data = (view_detail_data *)data;
282         _detail_data = (view_detail_data *)data;
283         Evas_Object* icon = NULL;
284
285         if (!strcmp("elm.swallow.end", part)) {
286                 char *temp_str = NULL;
287
288                 /* for strength */
289                 icon = elm_image_add(obj);
290                 retvm_if(NULL == icon, NULL);
291
292                 if (_detail_data->ap_image_path != NULL) {
293                         temp_str = g_strdup_printf("%s.png", _detail_data->ap_image_path);
294                 } else {
295                         /* if there is no ap_image_path (NO AP Found situation)
296                          * So use a default image */
297                         temp_str = g_strdup_printf("%s.png", "A01-3_icon_lock_00");
298                 }
299                 evas_object_color_set(icon, 2, 61, 132, 204);
300
301                 elm_image_file_set(icon, CUSTOM_EDITFIELD_PATH, temp_str);
302                 g_free(temp_str);
303
304                 evas_object_size_hint_min_set(icon, ELM_SCALE_SIZE(DEFAULT_BUTTON_CIRCLE_SIZE), ELM_SCALE_SIZE(DEFAULT_BUTTON_CIRCLE_SIZE));
305
306         }
307         return icon;
308 }
309
310 static void _remove_all(view_detail_data *_detail_data)
311 {
312         __COMMON_FUNC_ENTER__;
313
314         if (_detail_data) {
315
316                 if (_detail_data->forget_confirm_popup != NULL) {
317                         evas_object_del(_detail_data->forget_confirm_popup);
318                         _detail_data->forget_confirm_popup = NULL;
319                 }
320
321                 if (_detail_data->ctxpopup) {
322                         evas_object_del(_detail_data->ctxpopup);
323                         _detail_data->ctxpopup = NULL;
324                 }
325
326                 if (_detail_data->eap_info_list) {
327                         eap_info_remove(_detail_data->eap_info_list);
328                 }
329
330                 ip_info_remove(_detail_data->ip_info->ip_info_list);
331                 ip_info_delete_prev(_detail_data->ip_info->prev_ip_info);
332                 _detail_data->ip_info->ip_info_list = NULL;
333                 _detail_data->eap_info_list = NULL;
334
335                 g_free(_detail_data->ap_image_path);
336                 _detail_data->ap_image_path = NULL;
337                 g_free(_detail_data);
338
339                 _detail_data = NULL;
340         }
341
342         __COMMON_FUNC_EXIT__;
343 }
344
345 static gboolean __forget_wifi_ap(gpointer data)
346 {
347         __COMMON_FUNC_ENTER__;
348
349         wifi_ap_h ap = (wifi_ap_h)data;
350
351         wlan_manager_forget(ap);
352
353         viewer_manager_update_item_favorite_status(ap);
354         wifi_ap_destroy(ap);
355
356         __COMMON_FUNC_EXIT__;
357         return FALSE;
358 }
359
360 static void ok_cb(void *data, Evas_Object *obj, void *event_info)
361 {
362         __COMMON_FUNC_ENTER__;
363
364         guint id;
365         wifi_ap_h ap = NULL;
366         //view_detail_data *_detail_data;
367
368         if (view_detail_end == TRUE) {
369                 return;
370         }
371
372         view_detail_end = TRUE;
373         _detail_data = (view_detail_data *)data;
374         retm_if(NULL == _detail_data);
375
376         wifi_ap_clone(&ap, _detail_data->ap);
377
378         if (_detail_data->forget_confirm_popup != NULL) {
379                 evas_object_del(_detail_data->forget_confirm_popup);
380                 _detail_data->forget_confirm_popup = NULL;
381         }
382
383         _remove_all(_detail_data);
384
385         elm_naviframe_item_pop(viewer_manager_get_naviframe());
386
387         id = common_util_managed_idle_add(__forget_wifi_ap, (gpointer)ap);
388         if (!id) {
389                 wifi_ap_destroy(ap);
390         }
391
392         __COMMON_FUNC_EXIT__;
393 }
394
395 static void cancel_cb(void *data, Evas_Object *obj, void *event_info)
396 {
397         __COMMON_FUNC_ENTER__;
398
399 //      view_detail_data *_detail_data = (view_detail_data *)data;
400         _detail_data = (view_detail_data *)data;
401         retm_if(NULL == _detail_data);
402
403         if (_detail_data->forget_confirm_popup != NULL) {
404                 evas_object_del(_detail_data->forget_confirm_popup);
405                 _detail_data->forget_confirm_popup = NULL;
406         }
407
408         __COMMON_FUNC_EXIT__;
409 }
410
411 static void forget_sk_cb(void *data, Evas_Object *obj, void *event_info)
412 {
413         __COMMON_FUNC_ENTER__;
414
415 //      view_detail_data *_detail_data = (view_detail_data *)data;
416         _detail_data = (view_detail_data *)data;
417         retm_if(NULL == _detail_data);
418
419         if (!_detail_data->forget_confirm_popup) {
420                 popup_btn_info_t popup_data;
421                 memset(&popup_data, 0, sizeof(popup_data));
422
423                 popup_data.title_txt = "IDS_WIFI_OPT_FORGET_NETWORK";
424                 popup_data.info_txt = "IDS_WIFI_POP_CURRENT_NETWORK_WILL_BE_DISCONNECTED";
425                 popup_data.btn1_cb = cancel_cb;
426                 popup_data.btn1_txt = "IDS_WIFI_SK_CANCEL";
427                 popup_data.btn1_data = _detail_data;
428                 popup_data.btn2_cb = ok_cb;
429                 popup_data.btn2_txt = "IDS_WIFI_SK_FORGET";
430                 popup_data.btn2_data = _detail_data;
431
432                 _detail_data->forget_confirm_popup = common_utils_show_info_popup(_detail_data->win, &popup_data);
433         }
434
435         if (_detail_data->ctxpopup != NULL) {
436                 evas_object_del(_detail_data->ctxpopup);
437                 _detail_data->ctxpopup = NULL;
438         }
439
440         __COMMON_FUNC_EXIT__;
441 }
442
443 static Eina_Bool detailview_sk_cb(void *data, Elm_Object_Item *it)
444 {
445         __COMMON_FUNC_ENTER__;
446
447         Evas_Object *navi_frame = NULL;
448
449         if (view_detail_end == TRUE) {
450                 return EINA_TRUE;
451         }
452
453         view_detail_end = TRUE;
454
455 //      view_detail_data *_detail_data = (view_detail_data *)data;
456         _detail_data = (view_detail_data *)data;
457         retvm_if(NULL == _detail_data, EINA_TRUE);
458
459         /* Delete context popup */
460         if (_detail_data->ctxpopup) {
461                 evas_object_del(_detail_data->ctxpopup);
462                 _detail_data->ctxpopup = NULL;
463         }
464
465         navi_frame = viewer_manager_get_naviframe();
466         retvm_if(NULL == navi_frame, EINA_TRUE);
467
468         evas_object_smart_callback_add(navi_frame, "transition,finished",
469                         _transition_finished_sub_cb, _detail_data);
470
471         __COMMON_FUNC_EXIT__;
472
473         return EINA_TRUE;
474 }
475
476 static void __view_detail_imf_ctxt_evnt_cb(void *data, Ecore_IMF_Context *ctx, int value)
477 {
478         if (!data) {
479                 return;
480         }
481         if (value == ECORE_IMF_INPUT_PANEL_STATE_SHOW) {
482                 DEBUG_LOG(UG_NAME_NORMAL, "Key pad is now open");
483                 elm_object_item_signal_emit(data, "elm,state,sip,shown", "");
484         } else if (value == ECORE_IMF_INPUT_PANEL_STATE_HIDE) {
485                 DEBUG_LOG(UG_NAME_NORMAL, "Key pad is now closed");
486                 elm_object_item_signal_emit(data, "elm,state,sip,hidden", "");
487         }
488         return;
489 }
490
491 static gboolean __view_detail_load_ip_info_list_cb(void *data)
492 {
493         __COMMON_FUNC_ENTER__;
494         Elm_Object_Item *navi_it = NULL;
495         Evas_Object *list = NULL;
496         Evas_Object *layout;
497         _detail_data = (view_detail_data *)data;
498
499         if (!_detail_data) {
500                 return FALSE;
501         }
502
503         navi_it = elm_naviframe_top_item_get(viewer_manager_get_naviframe());
504         layout = elm_object_item_part_content_get(navi_it, "elm.swallow.content");
505
506         /* Create an EAP connect view list */
507         list = elm_object_part_content_get(layout, "elm.swallow.content");
508
509         /* Append ip info list */
510         _detail_data->ip_info = ip_info_append_items(_detail_data->ap,
511                         PACKAGE, list, __view_detail_imf_ctxt_evnt_cb, navi_it);
512         if (_detail_data && _detail_data->btn) {
513                 elm_object_disabled_set(_detail_data->btn, EINA_FALSE);
514         }
515         __COMMON_FUNC_EXIT__;
516         return FALSE;
517 }
518
519 static void _transition_finished_sub_cb(void *data, Evas_Object *obj, void *event_info)
520 {
521         __COMMON_FUNC_ENTER__;
522
523         Evas_Object *navi = NULL;
524         Elm_Object_Item *target_item = NULL;
525         wifi_connection_state_e connection_state;
526
527         _detail_data = (view_detail_data *)data;
528         if (!_detail_data) {
529                 __COMMON_FUNC_EXIT__;
530                 return;
531         }
532
533 #if 0
534         if (_detail_data->eap_info_list) {
535                 eap_info_save_data(_detail_data->eap_info_list);
536         }
537 #endif
538
539         navi = (Evas_Object *)viewer_manager_get_naviframe();
540         if (navi == NULL) {
541                 __COMMON_FUNC_EXIT__;
542                 return;
543         } else {
544                 ip_info_save_data(_detail_data->ip_info);
545
546                 evas_object_smart_callback_del(navi, "transition,finished",
547                                 _transition_finished_sub_cb);
548
549                 if (_detail_data->ip_info->is_info_changed == TRUE &&
550                                 _detail_data->ap != NULL) {
551                         wifi_ap_get_connection_state(_detail_data->ap, &connection_state);
552                         if (WIFI_CONNECTION_STATE_CONNECTED == connection_state) {
553                                 target_item = item_get_for_ap(_detail_data->ap);
554                                 viewer_list_item_radio_mode_set(target_item,
555                                                 VIEWER_ITEM_RADIO_MODE_CONNECTING);
556                         }
557                 }
558
559                 _remove_all(_detail_data);
560         }
561
562         __COMMON_FUNC_EXIT__;
563 }
564
565 static void gl_lang_changed(void *data, Evas_Object *obj, void *event_info)
566 {
567         elm_genlist_realized_items_update(obj);
568 }
569
570 void view_detail(wifi_device_info_t *device_info, Evas_Object *win_main,
571                 Evas_Object *btn)
572 {
573         __COMMON_FUNC_ENTER__;
574         bool favorite = 0;
575         guint id;
576         wifi_ap_h ap;
577         static Elm_Genlist_Item_Class grouptitle_itc;
578         Evas_Object *layout = NULL;
579         Evas_Object *navi_frame = NULL;
580         Evas_Object *detailview_list = NULL;
581         Elm_Object_Item *title = NULL;
582         Elm_Object_Item *navi_it = NULL;
583         Evas_Object *more_btn = NULL;
584
585         if (device_info == NULL) {
586                 ERROR_LOG(UG_NAME_NORMAL, "Failed: device_info is NULL");
587                 return;
588         }
589
590         navi_frame = viewer_manager_get_naviframe();
591         if (navi_frame == NULL) {
592                 ERROR_LOG(UG_NAME_NORMAL, "Failed to get naviframe");
593                 return;
594         }
595         ecore_imf_input_panel_hide();
596         view_detail_end = FALSE;
597
598         _detail_data = g_try_new0(view_detail_data, 1);
599         retm_if(NULL == _detail_data);
600
601         _detail_data->win = win_main;
602         _detail_data->nav = navi_frame;
603         _detail_data->ap = ap = device_info->ap;
604         wifi_ap_is_favorite(ap, &favorite);
605
606         if (device_info->ap_image_path) {
607                 _detail_data->ap_image_path = g_strdup(device_info->ap_image_path);
608         }
609         _detail_data->btn = btn;
610         if (ug_app_state->ug_type == UG_VIEW_SETUP_WIZARD) {
611                 layout = elm_layout_add(navi_frame);
612
613                 elm_layout_file_set(layout, SETUP_WIZARD_EDJ_PATH, "detail_pwlock");
614                 elm_object_domain_translatable_part_text_set(layout,
615                         "text.title", PACKAGE, "IDS_WIFI_HEADER_WI_FI_NETWORK_INFO_ABB");
616
617                 navi_it = elm_naviframe_item_push(navi_frame,
618                                         NULL, NULL, NULL, layout, NULL);
619                 elm_naviframe_item_title_enabled_set(navi_it, EINA_FALSE, EINA_FALSE);
620
621                 struct ug_data *ugd = (struct ug_data *)ug_app_state->gadget;
622                 int change_ang = elm_win_rotation_get(ugd->win_main);
623                 if (change_ang == 0 || change_ang == 180) {
624                         common_utils_contents_rotation_adjust(UG_EVENT_ROTATE_PORTRAIT);
625                         edje_object_signal_emit((Evas_Object *)elm_layout_edje_get(layout)
626                                 ,"location,vertical", "elm");
627                 } else {
628                         common_utils_contents_rotation_adjust(UG_EVENT_ROTATE_LANDSCAPE);
629                         edje_object_signal_emit((Evas_Object *)elm_layout_edje_get(layout),
630                                 "location,horizontal", "elm");
631                 }
632         } else {
633                 layout = common_utils_create_layout(navi_frame);
634
635                 navi_it = elm_naviframe_item_push(navi_frame,
636                                 "IDS_WIFI_HEADER_WI_FI_NETWORK_INFO_ABB",
637                                 NULL, NULL, layout, NULL);
638                 elm_object_item_domain_text_translatable_set(navi_it,
639                                 PACKAGE, EINA_TRUE);
640         }
641
642         evas_object_show(layout);
643
644         detailview_list = elm_genlist_add(layout);
645         assertm_if(NULL == detailview_list, "NULL!!");
646
647         elm_object_style_set(detailview_list, "dialogue");
648         _detail_data->view_detail_list = detailview_list;
649
650         evas_object_smart_callback_add(detailview_list, "language,changed",
651                         gl_lang_changed, NULL);
652
653         grouptitle_itc.item_style = WIFI_GENLIST_2LINE_BOTTOM_TEXT_ICON_STYLE;
654         grouptitle_itc.func.text_get = _view_detail_grouptitle_text_get;
655         grouptitle_itc.func.content_get = _view_detail_grouptitle_content_get;
656         grouptitle_itc.func.state_get = NULL;
657         grouptitle_itc.func.del = NULL;
658
659         /* AP name and signal strength icon */
660         title = elm_genlist_item_append(detailview_list,
661                                 &grouptitle_itc, _detail_data, NULL, ELM_GENLIST_ITEM_GROUP,
662                                 NULL, NULL);
663         elm_genlist_item_select_mode_set(title, ELM_OBJECT_SELECT_MODE_NONE);
664
665         elm_object_part_content_set(layout, "elm.swallow.content", detailview_list);
666
667         evas_object_data_set(navi_frame, SCREEN_TYPE_ID_KEY,
668                                 (void *)VIEW_MANAGER_VIEW_TYPE_DETAIL);
669
670         /* Set pop callback */
671         elm_naviframe_item_pop_cb_set(navi_it, detailview_sk_cb, _detail_data);
672
673         if (favorite) {
674                 /* Toolbar Forget button */
675 #if 0
676                 Evas_Object *toolbar = NULL;
677
678                 toolbar = elm_toolbar_add(navi_frame);
679                 elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
680                 elm_toolbar_transverse_expanded_set(toolbar, EINA_TRUE);
681                 elm_toolbar_select_mode_set(toolbar, ELM_OBJECT_SELECT_MODE_NONE);
682
683                 elm_toolbar_item_append(toolbar, NULL,
684                                 sc(PACKAGE, I18N_TYPE_Forget),
685                                 forget_sk_cb, _detail_data);
686
687                 elm_object_item_part_content_set(navi_it, "toolbar", toolbar);
688 #endif
689
690                 more_btn = elm_button_add(_detail_data->nav);
691                 elm_object_style_set(more_btn, "naviframe/more/default");
692                 evas_object_smart_callback_add(more_btn, "clicked",
693                                 _create_ctxpopup_forget_btn_cb, win_main);
694                 elm_object_item_part_content_set(navi_it, "toolbar_more_btn", more_btn);
695         }
696
697         wifi_security_type_e type = WIFI_SECURITY_TYPE_NONE;
698         wifi_ap_get_security_type(ap, &type);
699         if (WIFI_SECURITY_TYPE_EAP == type) {
700                 wifi_connection_state_e connection_state;
701                 wifi_ap_get_connection_state(ap, &connection_state);
702                 if (favorite || WIFI_CONNECTION_STATE_CONNECTED == connection_state) {
703                         _detail_data->eap_info_list = eap_info_append_items(ap,
704                                         detailview_list, PACKAGE, __view_detail_imf_ctxt_evnt_cb,
705                                         navi_it);
706                 }
707         }
708
709         /* Append the ip info details */
710         id = common_util_managed_idle_add(__view_detail_load_ip_info_list_cb, _detail_data);
711         if (!id) {
712                 g_free(_detail_data);
713         }
714
715         __COMMON_FUNC_EXIT__;
716 }