4 * Copyright 2012 Samsung Electronics Co., Ltd
6 * Licensed under the Flora License, Version 1.1 (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
10 * http://www.tizenopensource.org/license
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.
21 #include <vconf-keys.h>
22 #include <app_control_internal.h>
23 #include <efl_extension.h>
26 #include "view_advanced.h"
27 #include "i18nmanager.h"
28 #include "viewer_manager.h"
29 #include "winset_popup.h"
30 #include "common_utils.h"
32 #define VCONF_SLEEP_POLICY "file/private/wifi/sleep_policy"
33 #define VCONF_SMART_SWITCHING "file/private/wifi/smart_switching"
34 #define VCONF_SMART_SWITCH_CB "file/private/wifi/smart_switch_checkbox"
37 VCONF_SMART_SWITCH_OFF = 0x00,
38 VCONF_SMART_SWITCH_ON,
39 } VCONF_SMART_SWITCH_OPTIONS;
41 struct _private_data {
43 Elm_Object_Item *item_smart_switch;
44 Evas_Object *smart_popup;
45 Elm_Object_Item *item_network_noti;
46 Elm_Object_Item *item_keep_wifi_switch;
47 Evas_Object *keep_wifi_radio_group;
48 Evas_Object *keep_wifi_popup;
50 Elm_Object_Item *item_sort_by;
51 Evas_Object *sort_by_radio_group;
52 Evas_Object *sort_by_popup;
54 Elm_Object_Item *item_install_cert;
57 static struct _private_data g_pd;
58 extern genlist_info_t g_genlist_info[WIFI_GENLIST_STYLE_MAX];
59 extern content_size_info_t g_content_size_info;
62 static char *_gl_network_notification_text_get(void *data, Evas_Object *obj, const char *part);
63 static char *_gl_sort_by_text_get(void *data, Evas_Object *obj, const char *part);
64 static char *_gl_sort_by_sub_text_get(void *data, Evas_Object *obj, const char *part);
65 static Evas_Object *_gl_content_get_network_noti(void *data, Evas_Object *obj, const char *part);
66 static Evas_Object *_gl_content_get_sort_by_sub(void *data, Evas_Object *obj, const char *part);
67 static char *_gl_install_certificate_text_get(void *data, Evas_Object *obj, const char *part);
68 #if TIZEN_SLEEP_POLICY
69 static char *_gl_text_get(void *data, Evas_Object *obj, const char *part);
70 static char *_gl_never_text_get(void *data, Evas_Object *obj, const char *part);
71 static char *_gl_keep_wifi_on_during_sleep_text_get(void *data, Evas_Object *obj, const char *part);
72 static Evas_Object *_gl_content_get_keep_wifi_sub(void *data, Evas_Object *obj, const char *part);
75 /* Global variables for elm_genlist itc */
76 static Elm_Genlist_Item_Class itc_network_noti = {
78 .func.text_get = _gl_network_notification_text_get,
79 .func.content_get = _gl_content_get_network_noti
82 #if TIZEN_SLEEP_POLICY
83 static Elm_Genlist_Item_Class itc_keep_wifi = {
84 // .item_style = g_genlist_info[WIFI_GENLIST_1LINE_STYLE].style_name,
85 .item_style = GENLIST_STYLE_TYPE1,
86 .func.text_get = _gl_keep_wifi_on_during_sleep_text_get,
89 static Elm_Genlist_Item_Class itc_keep_wifi_sub = {
90 // .item_style = g_genlist_info[WIFI_GENLIST_1LINE_STYLE].style_name,
91 .item_style = GENLIST_STYLE_TYPE1,
92 .func.text_get = _gl_text_get,
93 .func.content_get = _gl_content_get_keep_wifi_sub,
96 static Elm_Genlist_Item_Class itc_keep_wifi_sub_never = {
97 // .item_style = g_genlist_info[WIFI_GENLIST_1LINE_STYLE].style_name,
98 .item_style = GENLIST_STYLE_TYPE1,
99 .func.text_get = _gl_never_text_get,
100 .func.content_get = _gl_content_get_keep_wifi_sub,
104 static Elm_Genlist_Item_Class itc_sort_by = {
106 .func.text_get = _gl_sort_by_text_get,
109 static Elm_Genlist_Item_Class itc_sort_by_sub = {
111 .func.text_get = _gl_sort_by_sub_text_get,
112 .func.content_get = _gl_content_get_sort_by_sub,
115 static Elm_Genlist_Item_Class itc_install_cert = {
117 .func.text_get = _gl_install_certificate_text_get,
120 static char *_gl_install_certificate_text_get(void *data, Evas_Object *obj,
125 if (!strcmp(g_genlist_info[WIFI_GENLIST_1LINE_STYLE].text_part, part)) {
126 snprintf(buf, 1023, "%s", sc(PACKAGE, I18N_TYPE_Install_certificate));
132 static void _launch_cert_select_app(void)
134 int ret = APP_CONTROL_ERROR_NONE;
135 app_control_h app_control;
137 app_control_create(&app_control);
138 app_control_set_operation(app_control, APP_CONTROL_OPERATION_DEFAULT);
139 app_control_set_launch_mode(app_control, APP_CONTROL_LAUNCH_MODE_GROUP);
140 app_control_set_app_id(app_control, "setting-manage-certificates-efl");
142 ret = app_control_send_launch_request(app_control, NULL, NULL);
143 if (ret == APP_CONTROL_ERROR_NONE)
144 INFO_LOG(UG_NAME_NORMAL, "Launch Cert Success");
146 ERROR_LOG(UG_NAME_NORMAL, "Fail to launch Cert");
148 app_control_destroy(app_control);
151 static void _gl_cert_sel_cb(void *data, Evas_Object *obj, void *event_info)
153 _launch_cert_select_app();
155 elm_genlist_item_selected_set(g_pd.item_install_cert, EINA_FALSE);
158 #if TIZEN_SLEEP_POLICY
159 static int _convert_wifi_keep_value_to_vconf(int i18n_key)
162 case I18N_TYPE_Always:
165 case I18N_TYPE_Plugged:
168 case I18N_TYPE_Donot_Use:
175 static int _convert_vconf_to_wifi_keep_value(int vconf_value)
177 switch (vconf_value) {
179 return I18N_TYPE_Always;
182 return I18N_TYPE_Plugged;
185 return I18N_TYPE_Donot_Use;
192 int _convert_sort_by_value_to_vconf(int i18n_key)
195 case I18N_TYPE_Alphabetical:
198 case I18N_TYPE_Signal_Strength:
205 int _convert_vconf_to_sort_by_value(int vconf_value)
207 switch (vconf_value) {
209 return I18N_TYPE_Alphabetical;
212 return I18N_TYPE_Signal_Strength;
218 static void _gl_realized(void *data, Evas_Object *obj, void *event_info)
220 if (!obj || !event_info)
223 Evas_Object *genlist = obj;
224 Elm_Object_Item *item = (Elm_Object_Item *)event_info;
228 count = elm_genlist_items_count(genlist);
229 index = elm_genlist_item_index_get(item);
232 elm_object_item_signal_emit(item, "elm,state,group,top", "elm");
233 else if (index == count)
234 elm_object_item_signal_emit(item, "elm,state,group,bottom", "elm");
236 elm_object_item_signal_emit(item, "elm,state,group,middle", "elm");
239 static char *_gl_sort_by_text_get(void *data, Evas_Object *obj,
243 if (!strcmp(g_genlist_info[WIFI_GENLIST_1LINE_STYLE].text_part, part)) {
244 int i18type = GPOINTER_TO_INT(data);
246 snprintf(buf, 1023, "%s", sc(PACKAGE, i18type));
249 } else if (!strcmp(g_genlist_info[WIFI_GENLIST_1LINE_STYLE].sub_text_part, part)) {
252 value = _convert_vconf_to_sort_by_value(
253 common_util_get_system_registry(VCONF_SORT_BY));
255 snprintf(buf, 1023, "%s", sc(PACKAGE, value));
263 static char *_gl_sort_by_sub_text_get(void *data, Evas_Object *obj, const char *part)
266 if (!strcmp(g_genlist_info[WIFI_GENLIST_1LINE_STYLE].text_part, part)) {
267 int i18type = GPOINTER_TO_INT(data);
269 snprintf(buf, 1023, "%s", sc(PACKAGE, i18type));
276 static char *_gl_network_notification_text_get(void *data, Evas_Object *obj, const char *part)
280 if (!strcmp(g_genlist_info[WIFI_GENLIST_MULTILINE_STYLE].text_part, part)) {
281 snprintf(buf, 1023, "%s", sc(PACKAGE, I18N_TYPE_Network_notification));
283 } else if (!strcmp(g_genlist_info[WIFI_GENLIST_MULTILINE_STYLE].sub_text_part, part)) {
284 snprintf(buf, 1023, "<font_size=%d>%s</font_size>",
285 g_content_size_info.small_font,
286 sc(PACKAGE, I18N_TYPE_Network_notify_me_later));
292 #if TIZEN_SLEEP_POLICY
293 static char *_gl_text_get(void *data, Evas_Object *obj,
297 if (!strcmp(g_genlist_info[WIFI_GENLIST_1LINE_STYLE].text_part, part)) {
298 int i18type = GPOINTER_TO_INT(data);
300 snprintf(buf, 1023, "%s", sc(PACKAGE, i18type));
308 static char *_gl_keep_wifi_on_during_sleep_text_get(void *data, Evas_Object *obj, const char *part)
312 if (!strcmp(g_genlist_info[WIFI_GENLIST_1LINE_STYLE].text_part, part)) {
313 snprintf(buf, 1023, "%s", sc(PACKAGE, I18N_TYPE_Keep_WIFI_on_during_sleep));
315 } else if (!strcmp(g_genlist_info[WIFI_GENLIST_1LINE_STYLE].sub_text_part, part)) {
317 value = _convert_vconf_to_wifi_keep_value(
318 common_util_get_system_registry(VCONF_SLEEP_POLICY));
320 if (value == I18N_TYPE_Donot_Use) {
321 snprintf(buf, 1023, "%s", sc(PACKAGE, I18N_TYPE_Donot_Use));
324 snprintf(buf, 1023, "%s", sc(PACKAGE, value));
332 static char *_gl_never_text_get(void *data, Evas_Object *obj,
335 if (!strcmp(g_genlist_info[WIFI_GENLIST_1LINE_STYLE].text_part, part))
336 return g_strdup(sc(PACKAGE, I18N_TYPE_Donot_Use));
337 else if (!strcmp(g_genlist_info[WIFI_GENLIST_1LINE_STYLE].sub_text_part, part))
338 return g_strdup(sc(PACKAGE, I18N_TYPE_Increases_Data_Usage));
344 static void _gl_changed_network_noti(void *data, Evas_Object *obj,
348 const char *object_type;
350 __COMMON_FUNC_ENTER__;
352 object_type = evas_object_type_get(obj);
354 INFO_LOG(UG_NAME_SCAN, "object_type is NULL");
358 value = common_util_get_system_registry(VCONFKEY_WIFI_ENABLE_QS);
360 if (g_strcmp0(object_type, "elm_check") == 0) {
361 Eina_Bool check_enable = elm_check_state_get(obj);
363 if (check_enable == TRUE)
364 value = VCONFKEY_WIFI_QS_ENABLE;
366 value = VCONFKEY_WIFI_QS_DISABLE;
367 } else if (g_strcmp0(object_type, "elm_genlist") == 0) {
368 if (value == VCONFKEY_WIFI_QS_ENABLE)
369 value = VCONFKEY_WIFI_QS_DISABLE;
371 value = VCONFKEY_WIFI_QS_ENABLE;
374 common_util_set_system_registry(VCONFKEY_WIFI_ENABLE_QS, value);
376 if (g_pd.item_network_noti != NULL)
377 elm_genlist_item_update(g_pd.item_network_noti);
378 elm_genlist_item_selected_set(g_pd.item_network_noti, EINA_FALSE);
380 __COMMON_FUNC_EXIT__;
383 static Evas_Object *_gl_content_get_network_noti(void *data,
384 Evas_Object *obj, const char *part)
386 Evas_Object *toggle_btn = NULL;
389 if (!strcmp(g_genlist_info[WIFI_GENLIST_MULTILINE_STYLE].sub_content_part, part)) {
390 toggle_btn = elm_check_add(obj);
391 evas_object_size_hint_align_set(toggle_btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
392 evas_object_size_hint_weight_set(toggle_btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
394 elm_object_style_set(toggle_btn, "on&off");
395 evas_object_propagate_events_set(toggle_btn, EINA_FALSE);
396 #ifdef ACCESSIBLITY_FEATURE
397 Evas_Object *ao = NULL;
399 ao = elm_object_item_access_object_get(g_pd.item_network_noti);
401 g_snprintf(buf, sizeof(buf), "%s%s%s",
402 sc(PACKAGE, I18N_TYPE_On),
403 sc(PACKAGE, I18N_TYPE_Off),
404 sc(PACKAGE, I18N_TYPE_Button));
405 elm_access_info_set(ao, ELM_ACCESS_TYPE, buf);
408 ret = common_util_get_system_registry(VCONFKEY_WIFI_ENABLE_QS);
411 #ifdef ACCESSIBLITY_FEATURE
413 elm_access_info_set(ao, ELM_ACCESS_STATE,
414 sc(PACKAGE, I18N_TYPE_On));
416 elm_check_state_set(toggle_btn, EINA_TRUE);
417 evas_object_smart_callback_add(toggle_btn, "changed",
418 _gl_changed_network_noti, NULL);
421 #ifdef ACCESSIBLITY_FEATURE
423 elm_access_info_set(ao, ELM_ACCESS_STATE,
424 sc(PACKAGE, I18N_TYPE_Off));
426 elm_check_state_set(toggle_btn, EINA_FALSE);
427 evas_object_smart_callback_add(toggle_btn, "changed",
428 _gl_changed_network_noti, NULL);
431 ERROR_LOG(COMMON_NAME_ERR, "Setting fail!!");
438 #if TIZEN_SLEEP_POLICY
439 static void _gl_changed_keep_wifi_sub(void *data, Evas_Object *obj,
442 Elm_Object_Item *item;
443 const char *object_type;
445 Elm_Object_Item *parent = NULL;
447 __COMMON_FUNC_ENTER__;
449 item = (Elm_Object_Item *) event_info;
450 object_type = evas_object_type_get(obj);
452 INFO_LOG(UG_NAME_SCAN, "object_type is NULL");
456 value = _convert_wifi_keep_value_to_vconf(GPOINTER_TO_INT(data));
459 common_util_set_system_registry(VCONF_SLEEP_POLICY, value);
461 if (g_strcmp0(object_type, "elm_genlist") == 0)
462 elm_radio_value_set(g_pd.keep_wifi_radio_group, GPOINTER_TO_INT(data));
465 elm_genlist_item_update(item);
466 elm_genlist_item_selected_set(item, EINA_FALSE);
468 parent = elm_genlist_item_parent_get(item);
470 elm_genlist_item_update(parent);
473 if (g_pd.item_keep_wifi_switch != NULL)
474 elm_genlist_item_update(g_pd.item_keep_wifi_switch);
476 evas_object_del(g_pd.keep_wifi_popup);
477 __COMMON_FUNC_EXIT__;
480 static Evas_Object *_gl_content_get_keep_wifi_sub(void *data,
481 Evas_Object *obj, const char *part)
483 __COMMON_FUNC_ENTER__;
486 Evas_Object *content = NULL;
488 if (!g_pd.keep_wifi_radio_group) {
489 g_pd.keep_wifi_radio_group = elm_radio_add(obj);
490 elm_radio_state_value_set(g_pd.keep_wifi_radio_group, -1);
493 if (!strcmp(g_genlist_info[WIFI_GENLIST_1LINE_STYLE].sub_content_part, part)) {
494 content = elm_layout_add(obj);
496 elm_layout_theme_set(content, "layout", "list/C/type.2", "default");
497 radio = elm_radio_add(content);
498 #ifdef ACCESSIBLITY_FEATURE
499 elm_access_object_unregister(radio);
501 elm_radio_state_value_set(radio, GPOINTER_TO_INT(data));
502 elm_radio_group_add(radio, g_pd.keep_wifi_radio_group);
504 elm_layout_content_set(content, "elm.swallow.content", radio);
506 value = _convert_vconf_to_wifi_keep_value(
507 common_util_get_system_registry(VCONF_SLEEP_POLICY));
508 if (value == GPOINTER_TO_INT(data))
509 elm_radio_value_set(g_pd.keep_wifi_radio_group, GPOINTER_TO_INT(data));
511 evas_object_smart_callback_add(radio, "changed", _gl_changed_keep_wifi_sub, data);
514 __COMMON_FUNC_EXIT__;
519 static void _gl_changed_sort_by_sub(void *data, Evas_Object *obj,
522 Elm_Object_Item *item;
523 const char *object_type;
525 Elm_Object_Item *parent = NULL;
527 __COMMON_FUNC_ENTER__;
529 item = (Elm_Object_Item *) event_info;
530 object_type = evas_object_type_get(obj);
532 INFO_LOG(UG_NAME_SCAN, "object_type is NULL");
536 value = _convert_sort_by_value_to_vconf(GPOINTER_TO_INT(data));
538 common_util_set_system_registry(VCONF_SORT_BY, value);
540 if (g_strcmp0(object_type, "elm_genlist") == 0)
541 elm_radio_value_set(g_pd.sort_by_radio_group, GPOINTER_TO_INT(data));
544 elm_genlist_item_update(item);
545 elm_genlist_item_selected_set(item, EINA_FALSE);
547 parent = elm_genlist_item_parent_get(item);
549 elm_genlist_item_update(parent);
552 if (g_pd.item_sort_by != NULL)
553 elm_genlist_item_update(g_pd.item_sort_by);
555 evas_object_del(g_pd.sort_by_popup);
557 __COMMON_FUNC_EXIT__;
560 static Evas_Object *_gl_content_get_sort_by_sub(void *data,
561 Evas_Object *obj, const char *part)
563 __COMMON_FUNC_ENTER__;
567 Evas_Object *content = NULL;
569 if (!g_pd.sort_by_radio_group) {
570 g_pd.sort_by_radio_group = elm_radio_add(obj);
571 elm_radio_state_value_set(g_pd.sort_by_radio_group, -1);
574 if (!strcmp(g_genlist_info[WIFI_GENLIST_1LINE_STYLE].sub_content_part, part)) {
575 content = elm_layout_add(obj);
577 elm_layout_theme_set(content, "layout", "list/C/type.2", "default");
578 radio = elm_radio_add(content);
579 #ifdef ACCESSIBLITY_FEATURE
580 elm_access_object_unregister(radio);
582 elm_radio_state_value_set(radio, GPOINTER_TO_INT(data));
583 elm_radio_group_add(radio, g_pd.sort_by_radio_group);
585 elm_layout_content_set(content, "elm.swallow.content", radio);
587 value = _convert_vconf_to_sort_by_value(
588 common_util_get_system_registry(VCONF_SORT_BY));
590 if (value == GPOINTER_TO_INT(data))
591 elm_radio_value_set(g_pd.sort_by_radio_group, GPOINTER_TO_INT(data));
593 evas_object_smart_callback_add(radio, "changed",
594 _gl_changed_sort_by_sub, data);
597 __COMMON_FUNC_EXIT__;
601 static void _block_clicked_cb(void *data, Evas_Object *obj,
604 Evas_Object *popup = (Evas_Object *)data;
607 evas_object_del(popup);
610 #if TIZEN_SLEEP_POLICY
611 static void _gl_keep_wifi(void *data, Evas_Object *obj, void *event_info)
613 __COMMON_FUNC_ENTER__;
614 Evas_Object *genlist;
616 g_pd.keep_wifi_popup = elm_popup_add(obj);
617 eext_object_event_callback_add(g_pd.keep_wifi_popup, EEXT_CALLBACK_BACK, eext_popup_back_cb, NULL);
618 elm_object_domain_translatable_part_text_set(g_pd.keep_wifi_popup,
619 "title,text", PACKAGE, "IDS_ST_BODY_KEEP_WI_FI_ON_DURING_SLEEP");
620 elm_popup_align_set(g_pd.keep_wifi_popup, ELM_NOTIFY_ALIGN_FILL, 1.0);
621 evas_object_size_hint_weight_set(g_pd.keep_wifi_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
622 evas_object_smart_callback_add(g_pd.keep_wifi_popup, "block,clicked",
623 _block_clicked_cb, g_pd.keep_wifi_popup);
626 genlist = elm_genlist_add(g_pd.keep_wifi_popup);
627 evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
628 evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
629 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
630 elm_scroller_content_min_limit(genlist, EINA_FALSE, EINA_TRUE);
633 g_pd.keep_wifi_radio_group = elm_radio_add(genlist);
634 evas_object_data_set(genlist, "radio", g_pd.keep_wifi_radio_group);
636 elm_genlist_item_append(genlist, &itc_keep_wifi_sub,
637 (const void *) I18N_TYPE_Always, NULL, ELM_GENLIST_ITEM_NONE,
638 _gl_changed_keep_wifi_sub, (const void *)I18N_TYPE_Always);
640 elm_genlist_item_append(genlist, &itc_keep_wifi_sub,
641 (const void *) I18N_TYPE_Plugged, NULL, ELM_GENLIST_ITEM_NONE,
642 _gl_changed_keep_wifi_sub, (const void *)I18N_TYPE_Plugged);
644 elm_genlist_item_append(genlist, &itc_keep_wifi_sub_never,
645 (const void *) I18N_TYPE_Donot_Use, NULL, ELM_GENLIST_ITEM_NONE,
646 _gl_changed_keep_wifi_sub, (const void *)I18N_TYPE_Donot_Use);
648 evas_object_show(genlist);
649 elm_object_content_set(g_pd.keep_wifi_popup, genlist);
650 evas_object_show(g_pd.keep_wifi_popup);
652 elm_genlist_item_selected_set(g_pd.item_keep_wifi_switch, EINA_FALSE);
653 __COMMON_FUNC_EXIT__;
657 static void _gl_sort_by(void *data, Evas_Object *obj, void *event_info)
659 __COMMON_FUNC_ENTER__;
660 Evas_Object *genlist = NULL;
662 g_pd.sort_by_popup = elm_popup_add(obj);
663 eext_object_event_callback_add(g_pd.sort_by_popup, EEXT_CALLBACK_BACK, eext_popup_back_cb, NULL);
664 elm_object_domain_translatable_part_text_set(g_pd.sort_by_popup,
665 "title,text", PACKAGE, "IDS_WIFI_BODY_SORT_BY");
666 elm_popup_align_set(g_pd.sort_by_popup, ELM_NOTIFY_ALIGN_FILL, 1.0);
667 evas_object_size_hint_weight_set(g_pd.sort_by_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
668 evas_object_smart_callback_add(g_pd.sort_by_popup, "block,clicked",
669 _block_clicked_cb, g_pd.sort_by_popup);
672 genlist = elm_genlist_add(g_pd.sort_by_popup);
673 evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
674 evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
675 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
676 elm_scroller_content_min_limit(genlist, EINA_FALSE, EINA_TRUE);
679 g_pd.sort_by_radio_group = elm_radio_add(genlist);
680 evas_object_data_set(genlist, "radio", g_pd.sort_by_radio_group);
682 itc_sort_by_sub.item_style = g_genlist_info[WIFI_GENLIST_1LINE_STYLE].style_name;
683 elm_genlist_item_append(genlist, &itc_sort_by_sub,
684 (const void *) I18N_TYPE_Alphabetical, NULL, ELM_GENLIST_ITEM_NONE,
685 _gl_changed_sort_by_sub, (const void *)I18N_TYPE_Alphabetical);
687 elm_genlist_item_append(genlist, &itc_sort_by_sub,
688 (const void *) I18N_TYPE_Signal_Strength, NULL, ELM_GENLIST_ITEM_NONE,
689 _gl_changed_sort_by_sub, (const void *)I18N_TYPE_Signal_Strength);
691 evas_object_show(genlist);
692 elm_object_content_set(g_pd.sort_by_popup, genlist);
693 evas_object_show(g_pd.sort_by_popup);
695 elm_genlist_item_selected_set(g_pd.item_sort_by, EINA_FALSE);
696 __COMMON_FUNC_EXIT__;
699 static Evas_Object *_create_list(Evas_Object *parent)
704 vconf_get_int(VCONFKEY_WIFI_STATE, &wifi_state);
705 INFO_LOG(UG_NAME_NORMAL, "Wi-Fi state %d", wifi_state);
707 gl = elm_genlist_add(parent);
708 assertm_if(NULL == gl, "NULL!!");
710 elm_object_style_set(gl, "dialogue");
711 elm_genlist_mode_set(gl, ELM_LIST_LIMIT);
713 evas_object_size_hint_weight_set(gl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
714 evas_object_size_hint_align_set(gl, EVAS_HINT_FILL, EVAS_HINT_FILL);
716 elm_genlist_mode_set(gl, ELM_LIST_COMPRESS);
718 evas_object_smart_callback_add(gl, "realized", _gl_realized, NULL);
720 /* Network Notification */
721 itc_network_noti.item_style = g_genlist_info[WIFI_GENLIST_MULTILINE_STYLE].style_name;
722 g_pd.item_network_noti = elm_genlist_item_append(gl, &itc_network_noti,
723 (const void *) I18N_TYPE_Network_notification, NULL,
724 ELM_GENLIST_ITEM_NONE, _gl_changed_network_noti, NULL);
726 #if TIZEN_SLEEP_POLICY
727 /* Keep WI-FI on during sleep */
728 g_pd.item_keep_wifi_switch = elm_genlist_item_append(gl, &itc_keep_wifi,
729 (const void *) I18N_TYPE_Keep_WIFI_on_during_sleep, NULL,
730 ELM_GENLIST_ITEM_NONE, _gl_keep_wifi, NULL);
734 itc_sort_by.item_style = g_genlist_info[WIFI_GENLIST_1LINE_STYLE].style_name;
735 g_pd.item_sort_by = elm_genlist_item_append(gl, &itc_sort_by,
736 (const void *) I18N_TYPE_Sort_by, NULL,
737 ELM_GENLIST_ITEM_NONE, _gl_sort_by, NULL);
739 /* Install Certificate */
740 itc_install_cert.item_style = g_genlist_info[WIFI_GENLIST_1LINE_STYLE].style_name;
741 g_pd.item_install_cert = elm_genlist_item_append(gl, &itc_install_cert,
742 NULL, NULL, ELM_GENLIST_ITEM_NONE, _gl_cert_sel_cb, NULL);
744 evas_object_show(gl);
749 static void __vconf_noti_change_cb(keynode_t *node, void *user_data)
753 vconf_get_int(VCONFKEY_WIFI_ENABLE_QS, &state);
754 INFO_LOG(UG_NAME_NORMAL, "New notification option - %d", state);
756 if (g_pd.item_network_noti != NULL)
757 elm_genlist_item_update(g_pd.item_network_noti);
760 static void __vconf_sleep_change_cb(keynode_t *node, void *user_data)
764 vconf_get_int(VCONF_SLEEP_POLICY, &state);
765 INFO_LOG(UG_NAME_NORMAL, "New sleep policy - %d", state);
767 if (g_pd.item_keep_wifi_switch != NULL)
768 elm_genlist_item_update(g_pd.item_keep_wifi_switch);
771 static void __vconf_sort_change_cb(keynode_t *node, void *user_data)
775 vconf_get_int(VCONF_SORT_BY, &state);
776 INFO_LOG(UG_NAME_NORMAL, "New sort by option - %d", state);
778 if (g_pd.item_sort_by != NULL)
779 elm_genlist_item_update(g_pd.item_sort_by);
782 static void __vconf_smart_switch_change_cb(keynode_t *node, void *user_data)
786 vconf_get_int(VCONF_SMART_SWITCHING, &state);
787 INFO_LOG(UG_NAME_NORMAL, "New smart switch option - %d", state);
789 if (g_pd.item_smart_switch != NULL)
790 elm_genlist_item_update(g_pd.item_smart_switch);
793 static Eina_Bool __back_key_cb(void *data, Elm_Object_Item *it)
795 __COMMON_FUNC_ENTER__;
797 /* Delete vconf listeners for the different options */
798 vconf_ignore_key_changed(VCONFKEY_WIFI_ENABLE_QS, __vconf_noti_change_cb);
799 vconf_ignore_key_changed(VCONF_SLEEP_POLICY, __vconf_sleep_change_cb);
800 vconf_ignore_key_changed(VCONF_SORT_BY, __vconf_sort_change_cb);
801 vconf_ignore_key_changed(VCONF_SMART_SWITCHING,
802 __vconf_smart_switch_change_cb);
804 __COMMON_FUNC_EXIT__;
809 static void __back_btn_cb(void *data, Evas_Object *obj, void *event_info)
811 Evas_Object *navi_frame = (Evas_Object *)data;
815 elm_naviframe_item_pop(navi_frame);
818 void view_advanced(void)
820 Evas_Object *layout = NULL;
821 Evas_Object *navi_frame = NULL;
822 Elm_Object_Item *navi_it = NULL;
823 Evas_Object *back_btn = NULL;
826 __COMMON_FUNC_ENTER__;
828 memset(&g_pd, 0, sizeof(struct _private_data));
830 navi_frame = viewer_manager_get_naviframe();
831 if (navi_frame == NULL) {
832 ERROR_LOG(UG_NAME_NORMAL, "Failed to get naviframe");
836 layout = common_utils_create_layout(navi_frame);
837 evas_object_show(layout);
839 back_btn = elm_button_add(navi_frame);
840 elm_object_style_set(back_btn, "naviframe/back_btn/default");
841 evas_object_smart_callback_add(back_btn, "clicked", __back_btn_cb, navi_frame);
842 elm_object_focus_allow_set(back_btn, EINA_FALSE);
844 g_pd.list = _create_list(layout);
845 assertm_if(NULL == g_pd.list, "_create_list failed");
847 elm_object_part_content_set(layout, "elm.swallow.content", g_pd.list);
849 g_strlcpy(title, "IDS_WIFI_BODY_ADVANCED_SETTINGS", sizeof(title));
850 navi_it = elm_naviframe_item_push(navi_frame, title, back_btn, NULL,
852 elm_object_item_domain_text_translatable_set(navi_it, PACKAGE, EINA_TRUE);
854 evas_object_data_set(navi_frame, SCREEN_TYPE_ID_KEY,
855 (void *) VIEW_MANAGER_VIEW_TYPE_ADVANCED);
857 elm_naviframe_item_pop_cb_set(navi_it, __back_key_cb, NULL);
859 /* Add vconf listeners for the different options */
860 vconf_notify_key_changed(VCONFKEY_WIFI_ENABLE_QS, __vconf_noti_change_cb,
862 vconf_notify_key_changed(VCONF_SLEEP_POLICY, __vconf_sleep_change_cb,
864 vconf_notify_key_changed(VCONF_SORT_BY, __vconf_sort_change_cb,
866 vconf_notify_key_changed(VCONF_SMART_SWITCHING,
867 __vconf_smart_switch_change_cb, NULL);
869 __COMMON_FUNC_EXIT__;