4 * Copyright 2012 Samsung Electronics Co., Ltd
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
10 * http://floralicense.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.
19 #include <notification.h>
20 #include "mh_view_wifi_setup.h"
22 static void __back_btn_cb(void *data, Evas_Object *obj, void *event_info);
23 static void __gl_realized(void *data, Evas_Object *obj, void *event_info);
25 static void __input_panel_event_cb(void *data, Ecore_IMF_Context *ctx, int value)
28 ERR("data is NULL\n");
32 mh_appdata_t *ad = (mh_appdata_t *)data;
33 mh_wifi_setting_view_t *st = &ad->setup;
35 ad->imf_state = value;
37 if (st->navi_it == NULL) {
38 DBG("naviframe item is not pushed yet\n");
42 if (value == ECORE_IMF_INPUT_PANEL_STATE_SHOW &&
43 (ad->rotate_state == UG_EVENT_ROTATE_LANDSCAPE ||
44 ad->rotate_state == UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN)) {
45 DBG("ECORE_IMF_INPUT_PANEL_STATE_SHOW and Landscape mode\n");
46 elm_naviframe_item_title_visible_set(st->navi_it, EINA_FALSE);
47 } else if (value == ECORE_IMF_INPUT_PANEL_STATE_HIDE) {
48 DBG("ECORE_IMF_INPUT_PANEL_STATE_HIDE\n");
49 elm_naviframe_item_title_visible_set(st->navi_it, EINA_TRUE);
55 static void __hide_btn_changed_cb(void *data, Evas_Object *obj, void *event_info)
57 __MOBILE_AP_FUNC_ENTER__;
59 if (data == NULL || obj == NULL) {
60 ERR("Invalid param\n");
64 mh_appdata_t *ad = (mh_appdata_t *)data;
67 ret = tethering_wifi_set_ssid_visibility(ad->handle,
68 !ad->setup.visibility);
69 if (ret != TETHERING_ERROR_NONE) {
70 ERR("tethering_wifi_set_ssid_visibility is failed : %d\n", ret);
74 ad->setup.visibility = !ad->setup.visibility;
76 __MOBILE_AP_FUNC_EXIT__;
79 static void __security_btn_changed_cb(void *data, Evas_Object *obj, void *event_info)
81 __MOBILE_AP_FUNC_ENTER__;
83 if (data == NULL || obj == NULL) {
84 ERR("Invalid param\n");
88 mh_appdata_t *ad = (mh_appdata_t *)data;
91 if (ad->setup.security_type == TETHERING_WIFI_SECURITY_TYPE_NONE)
92 ad->setup.security_type = TETHERING_WIFI_SECURITY_TYPE_WPA2_PSK;
94 ad->setup.security_type = TETHERING_WIFI_SECURITY_TYPE_NONE;
96 ret = tethering_wifi_set_security_type(ad->handle, ad->setup.security_type);
97 if (ret != TETHERING_ERROR_NONE) {
98 ERR("tethering_wifi_set_security_type is failed : %d\n", ret);
102 elm_genlist_item_update(ad->setup.pw_item);
104 __MOBILE_AP_FUNC_EXIT__;
107 static char *__gl_hide_label_get(void *data, Evas_Object *obj, const char *part)
109 __MOBILE_AP_FUNC_ENTER__;
111 if (data == NULL || obj == NULL || part == NULL) {
112 ERR("Invalid param\n");
116 if (strcmp(part, "elm.text") != 0) {
117 DBG("Unknown part : %s\n", part);
121 __MOBILE_AP_FUNC_EXIT__;
122 return strdup(_("IDS_MOBILEAP_BODY_HIDE_MY_DEVICE"));
125 static char *__gl_security_label_get(void *data, Evas_Object *obj, const char *part)
127 __MOBILE_AP_FUNC_ENTER__;
129 if (data == NULL || obj == NULL || part == NULL) {
130 ERR("Invalid param\n");
134 if (strcmp(part, "elm.text") != 0) {
135 DBG("Unknown part : %s\n", part);
139 __MOBILE_AP_FUNC_EXIT__;
140 return strdup(_("IDS_MOBILEAP_BODY_SECURITY"));
143 static char *__gl_name_label_get(void *data, Evas_Object *obj, const char *part)
145 __MOBILE_AP_FUNC_ENTER__;
147 if (data == NULL || obj == NULL || part == NULL) {
148 ERR("Invalid param\n");
152 if (strcmp(part, "elm.text") != 0) {
153 DBG("Unknown part : %s\n", part);
157 mh_appdata_t *ad = (mh_appdata_t *)data;
158 char label[MH_LABEL_LENGTH_MAX] = {0, };
159 char name_change_label[MH_LABEL_LENGTH_MAX] = {0, };
160 char path[MH_LABEL_LENGTH_MAX] = {0, };
161 char *device_name = NULL;
163 DBG("Device name : %s\n", ad->setup.device_name);
165 device_name = elm_entry_utf8_to_markup(ad->setup.device_name);
166 if (device_name == NULL) {
167 ERR("elm_entry_utf8_to_markup is failed\n");
171 snprintf(path, sizeof(path), "%s > %s",
172 S_("IDS_COM_BODY_SETTINGS"),
173 _("IDS_ST_BODY_ABOUT_PHONE"));
174 snprintf(name_change_label, sizeof(name_change_label),
175 _("IDS_MOBILEAP_BODY_DEVICE_NAME_CAN_BE_CHANGED_IN_PS"),
177 snprintf(label, sizeof(label), "%s: %s<br>%s",
178 _("IDS_MOBILEAP_BODY_DEVICE_NAME"),
183 __MOBILE_AP_FUNC_EXIT__;
185 return strdup(label);
188 static Evas_Object *__gl_hide_icon_get(void *data, Evas_Object *obj,
191 __MOBILE_AP_FUNC_ENTER__;
193 if (data == NULL || obj == NULL || part == NULL) {
194 ERR("Invalid param\n");
198 if (strcmp(part, "elm.icon") != 0) {
199 DBG("Unknown part : %s\n", part);
203 mh_appdata_t *ad = (mh_appdata_t *)data;
204 Evas_Object *btn = NULL;
206 btn = elm_check_add(obj);
208 ERR("btn is NULL\n");
211 elm_object_style_set(btn, "on&off");
212 evas_object_show(btn);
213 evas_object_pass_events_set(btn, EINA_TRUE);
214 evas_object_propagate_events_set(btn, EINA_FALSE);
215 elm_check_state_set(btn, ad->setup.visibility ? EINA_FALSE : EINA_TRUE);
216 evas_object_smart_callback_add(btn, "changed",
217 __hide_btn_changed_cb, (void *)ad);
218 ad->setup.hide_btn = btn;
220 __MOBILE_AP_FUNC_EXIT__;
224 static Evas_Object *__gl_security_icon_get(void *data, Evas_Object *obj,
227 __MOBILE_AP_FUNC_ENTER__;
229 if (data == NULL || obj == NULL || part == NULL) {
230 ERR("Invalid param\n");
234 if (strcmp(part, "elm.icon") != 0) {
235 DBG("Unknown part : %s\n", part);
239 mh_appdata_t *ad = (mh_appdata_t *)data;
240 Evas_Object *btn = NULL;
242 btn = elm_check_add(obj);
244 elm_object_style_set(btn, "on&off");
245 evas_object_show(btn);
246 evas_object_pass_events_set(btn, EINA_TRUE);
247 evas_object_propagate_events_set(btn, EINA_FALSE);
248 elm_check_state_set(btn, ad->setup.security_type ==
249 TETHERING_WIFI_SECURITY_TYPE_NONE ?
250 EINA_FALSE : EINA_TRUE);
251 evas_object_smart_callback_add(btn, "changed",
252 __security_btn_changed_cb, (void *)ad);
253 ad->setup.security_btn = btn;
255 __MOBILE_AP_FUNC_EXIT__;
259 static Eina_Bool __save_wifi_passphrase(mh_appdata_t *ad)
261 __MOBILE_AP_FUNC_ENTER__;
264 ERR("Invalid param\n");
268 mh_wifi_setting_view_t *st = &ad->setup;
271 ret = tethering_wifi_set_passphrase(ad->handle, st->wifi_passphrase_new);
272 if (ret != TETHERING_ERROR_NONE) {
273 ERR("tethering_wifi_set_passphrase is failed : %d\n", ret);
277 g_strlcpy(st->wifi_passphrase, st->wifi_passphrase_new, sizeof(st->wifi_passphrase));
279 __MOBILE_AP_FUNC_EXIT__;
284 static void __passphrase_maxlength_reached_cb(void *data, Evas_Object *obj,
287 __MOBILE_AP_FUNC_ENTER__;
289 if (data == NULL || obj == NULL) {
290 ERR("The param is NULL\n");
294 mh_appdata_t *ad = (mh_appdata_t *)data;
295 char buf[MH_LABEL_LENGTH_MAX] = {0, };
298 ecore_imf_input_panel_hide();
299 elm_object_focus_set(ad->setup.pw_entry, EINA_FALSE);
301 if (__save_wifi_passphrase(ad) == EINA_FALSE) {
302 ERR("__save_wifi_passphrase is failed\n");
305 snprintf(buf, sizeof(buf),
306 _("IDS_MOBILEAP_POP_PASSWORD_MUST_CONTAIN_AT_LEAST_PD_CHARACTERS_AND_NOT_EXCEED_PD_CHARACTERS"),
307 WIFI_PASSPHRASE_LENGTH_MIN, WIFI_PASSPHRASE_LENGTH_MAX);
309 ret = notification_status_message_post(buf);
310 if (ret != NOTIFICATION_ERROR_NONE)
311 ERR("notification_status_message_post() is failed : %d\n", ret);
313 __MOBILE_AP_FUNC_EXIT__;
316 static void __passphrase_activated_cb(void *data, Evas_Object *obj,
319 __MOBILE_AP_FUNC_ENTER__;
321 if (data == NULL || obj == NULL) {
322 ERR("Invalid param\n");
326 mh_appdata_t *ad = (mh_appdata_t *)data;
330 ecore_imf_input_panel_hide();
331 elm_object_focus_set(ad->setup.pw_entry, EINA_FALSE);
333 if (strlen(ad->setup.wifi_passphrase_new) < WIFI_PASSPHRASE_LENGTH_MIN) {
334 DBG("Password is shorter than %d\n", WIFI_PASSPHRASE_LENGTH_MIN);
335 ret = notification_status_message_post(_("IDS_ST_BODY_ENTER_PASSWORD_OF_AT_LEAST_8_CHARACTERS"));
336 if (ret != NOTIFICATION_ERROR_NONE)
337 ERR("notification_status_message_post() is failed : %d\n", ret);
339 ptr = elm_entry_utf8_to_markup(ad->setup.wifi_passphrase);
341 elm_entry_entry_set(ad->setup.pw_entry, ptr);
344 ERR("elm_entry_utf8_to_markup is failed\n");
350 if (__save_wifi_passphrase(ad) == EINA_FALSE) {
351 ERR("__save_wifi_passphrase is failed\n");
354 __MOBILE_AP_FUNC_EXIT__;
359 static void __pw_entry_changed_cb(void *data, Evas_Object *obj,
362 __MOBILE_AP_FUNC_ENTER__;
364 if (data == NULL || obj == NULL) {
365 ERR("Invalid param\n");
369 mh_appdata_t *ad = (mh_appdata_t *)data;
370 mh_wifi_setting_view_t *st = &ad->setup;
371 const char *changed_text;
374 changed_text = elm_entry_entry_get(st->pw_entry);
375 if (changed_text == NULL) {
376 ERR("elm_entry_entry_get is failed\n");
380 utf8_string = elm_entry_markup_to_utf8(changed_text);
381 if (utf8_string == NULL) {
382 ERR("elm_entry_markup_to_utf8() Failed!!!\n");
384 g_strlcpy(st->wifi_passphrase_new, utf8_string,
385 sizeof(st->wifi_passphrase_new));
389 if (!elm_object_focus_get(st->pw_entry)) {
393 if (elm_entry_is_empty(st->pw_entry)) {
394 elm_object_item_signal_emit(st->pw_item,
395 "elm,state,eraser,hide", "");
397 elm_object_item_signal_emit(st->pw_item,
398 "elm,state,eraser,show", "");
401 __MOBILE_AP_FUNC_EXIT__;
407 static void __pw_entry_focused_cb(void *data, Evas_Object *obj,
410 __MOBILE_AP_FUNC_ENTER__;
412 if (data == NULL || obj == NULL) {
413 ERR("Invalid param\n");
417 mh_appdata_t *ad = (mh_appdata_t *)data;
418 mh_wifi_setting_view_t *st = &ad->setup;
420 if (!elm_entry_is_empty(st->pw_entry)) {
421 elm_entry_cursor_end_set(st->pw_entry);
422 elm_object_item_signal_emit(st->pw_item,
423 "elm,state,eraser,show", "");
426 __MOBILE_AP_FUNC_EXIT__;
432 static void __pw_entry_unfocused_cb(void *data, Evas_Object *obj,
435 __MOBILE_AP_FUNC_ENTER__;
437 if (data == NULL || obj == NULL) {
438 ERR("Invalid param\n");
442 mh_appdata_t *ad = (mh_appdata_t *)data;
443 mh_wifi_setting_view_t *st = &ad->setup;
445 elm_object_item_signal_emit(st->pw_item,
446 "elm,state,eraser,hide", "");
448 __MOBILE_AP_FUNC_EXIT__;
454 static void __pw_layout_eraser_clicked_cb(void *data, Evas_Object *obj, void *event_info)
456 __MOBILE_AP_FUNC_ENTER__;
458 if (data == NULL || obj == NULL) {
459 ERR("Invalid param\n");
463 mh_appdata_t *ad = (mh_appdata_t *)data;
464 mh_wifi_setting_view_t *st = &ad->setup;
466 elm_entry_entry_set(st->pw_entry, "");
468 __MOBILE_AP_FUNC_EXIT__;
474 static char *__gl_pw_text_get(void *data, Evas_Object *obj, const char *part)
476 __MOBILE_AP_FUNC_ENTER__;
478 if (data == NULL || obj == NULL || part == NULL) {
479 ERR("Invalid parameter\n");
483 if (g_strcmp0(part, "elm.text") != 0) {
484 ERR("Invalid part : %s\n", part);
488 __MOBILE_AP_FUNC_EXIT__;
489 return strdup(_("IDS_MOBILEAP_BODY_PASSWORD"));
492 static Evas_Object *__gl_pw_icon_get(void *data, Evas_Object *obj,
495 __MOBILE_AP_FUNC_ENTER__;
497 if (data == NULL || obj == NULL || part == NULL) {
498 ERR("Invalid param\n");
502 if (g_strcmp0(part, "elm.icon.entry") == 0) {
503 static Elm_Entry_Filter_Limit_Size limit_filter_data;
505 mh_appdata_t *ad = (mh_appdata_t *)data;
506 mh_wifi_setting_view_t *st = &ad->setup;
507 Evas_Object *entry = NULL;
509 Ecore_IMF_Context *imf_context;
511 entry = elm_entry_add(obj);
513 ERR("elm_entry_add returns NULL\n");
518 /* Set single line of entry */
519 elm_entry_scrollable_set(entry, EINA_TRUE);
520 elm_entry_single_line_set(entry, EINA_TRUE);
521 elm_entry_input_panel_layout_set(entry, ELM_INPUT_PANEL_LAYOUT_PASSWORD);
522 elm_entry_select_allow_set(entry, EINA_FALSE);
523 elm_entry_context_menu_disabled_set(entry, EINA_TRUE);
525 /* Set the maximum length filter for passphrase entry */
526 limit_filter_data.max_char_count = 0;
527 limit_filter_data.max_byte_count = WIFI_PASSPHRASE_LENGTH_MAX;
528 elm_entry_markup_filter_append(entry,
529 elm_entry_filter_limit_size, &limit_filter_data);
531 DBG("security_type : %d\n", st->security_type);
532 if (st->security_type == TETHERING_WIFI_SECURITY_TYPE_NONE) {
533 ptr = elm_entry_utf8_to_markup(st->wifi_passphrase);
535 elm_entry_entry_set(entry, ptr);
538 ERR("elm_entry_utf8_to_markup is failed\n");
541 /* Set editable mode */
542 elm_entry_input_panel_enabled_set(entry, EINA_FALSE);
543 elm_object_disabled_set(entry, EINA_TRUE);
545 ptr = elm_entry_utf8_to_markup(st->wifi_passphrase_new);
547 elm_entry_entry_set(entry, ptr);
550 ERR("elm_entry_utf8_to_markup is failed\n");
554 evas_object_smart_callback_add(entry, "maxlength,reached",
555 __passphrase_maxlength_reached_cb, data);
556 evas_object_smart_callback_add(entry, "activated",
557 __passphrase_activated_cb, data);
558 evas_object_smart_callback_add(entry, "changed",
559 __pw_entry_changed_cb, data);
560 evas_object_smart_callback_add(entry, "focused",
561 __pw_entry_focused_cb, data);
562 evas_object_smart_callback_add(entry, "unfocused",
563 __pw_entry_unfocused_cb, data);
565 imf_context = (Ecore_IMF_Context *)elm_entry_imf_context_get(entry);
566 if (imf_context == NULL) {
567 ERR("elm_entry_imf_context_get() is failed\n");
569 ecore_imf_context_input_panel_event_callback_add(imf_context,
570 ECORE_IMF_INPUT_PANEL_STATE_EVENT,
571 __input_panel_event_cb, (void *)ad);
574 elm_object_item_signal_emit(st->pw_item,
575 "elm,state,rename,hide", "");
576 if (!elm_entry_is_empty(entry)) {
577 elm_object_item_signal_emit(st->pw_item,
578 "elm,state,eraser,hide", "");
581 elm_object_part_text_set(entry, "elm.guide",
582 S_("IDS_COM_BODY_ENTER_PASSWORD"));
584 evas_object_show(entry);
585 st->pw_entry = entry;
587 __MOBILE_AP_FUNC_EXIT__;
589 } else if (g_strcmp0(part, "elm.icon.eraser") == 0) {
590 Evas_Object *btn = elm_button_add(obj);
591 elm_object_style_set(btn, "editfield_clear");
592 evas_object_smart_callback_add(btn, "clicked", __pw_layout_eraser_clicked_cb, data);
595 DBG("Unknown part : %s\n", part);
601 static void __gl_hide_item_sel(void *data, Evas_Object *obj, void *event_info)
603 __MOBILE_AP_FUNC_ENTER__;
605 if (data == NULL || obj == NULL || event_info == NULL) {
606 ERR("param is NULL\n");
610 mh_appdata_t *ad = (mh_appdata_t *)data;
612 elm_genlist_item_selected_set((Elm_Object_Item*)event_info, EINA_FALSE);
614 __hide_btn_changed_cb(data, obj, NULL);
615 elm_check_state_set(ad->setup.hide_btn, ad->setup.visibility ?
616 EINA_FALSE : EINA_TRUE);
618 __MOBILE_AP_FUNC_EXIT__;
621 static void __gl_security_item_sel(void *data, Evas_Object *obj, void *event_info)
623 __MOBILE_AP_FUNC_ENTER__;
625 if (data == NULL || obj == NULL || event_info == NULL) {
626 ERR("param is NULL\n");
630 mh_appdata_t *ad = (mh_appdata_t *)data;
632 elm_genlist_item_selected_set((Elm_Object_Item*)event_info, EINA_FALSE);
634 __security_btn_changed_cb(data, obj, NULL);
635 elm_check_state_set(ad->setup.security_btn, ad->setup.security_type ==
636 TETHERING_WIFI_SECURITY_TYPE_NONE ? EINA_FALSE : EINA_TRUE);
638 __MOBILE_AP_FUNC_EXIT__;
641 static void __free_genlist_itc(mh_appdata_t *ad)
643 __MOBILE_AP_FUNC_ENTER__;
645 elm_genlist_item_class_free(ad->setup.sp_itc);
646 elm_genlist_item_class_free(ad->setup.hide_itc);
647 elm_genlist_item_class_free(ad->setup.security_itc);
648 elm_genlist_item_class_free(ad->setup.pw_itc);
649 elm_genlist_item_class_free(ad->setup.name_itc);
651 __MOBILE_AP_FUNC_EXIT__;
655 static void __set_genlist_itc(mh_appdata_t *ad)
657 __MOBILE_AP_FUNC_ENTER__;
659 ad->setup.sp_itc = elm_genlist_item_class_new();
660 ad->setup.sp_itc->item_style = "dialogue/separator";
661 ad->setup.sp_itc->func.text_get = NULL;
662 ad->setup.sp_itc->func.content_get = NULL;
663 ad->setup.sp_itc->func.state_get = NULL;
664 ad->setup.sp_itc->func.del = NULL;
666 ad->setup.hide_itc = elm_genlist_item_class_new();
667 ad->setup.hide_itc->item_style = "dialogue/1text.1icon";
668 ad->setup.hide_itc->func.text_get = __gl_hide_label_get;
669 ad->setup.hide_itc->func.content_get = __gl_hide_icon_get;
670 ad->setup.hide_itc->func.state_get = NULL;
671 ad->setup.hide_itc->func.del = NULL;
673 ad->setup.security_itc = elm_genlist_item_class_new();
674 ad->setup.security_itc->item_style = "dialogue/1text.1icon";
675 ad->setup.security_itc->func.text_get = __gl_security_label_get;
676 ad->setup.security_itc->func.content_get = __gl_security_icon_get;
677 ad->setup.security_itc->func.state_get = NULL;
678 ad->setup.security_itc->func.del = NULL;
680 ad->setup.pw_itc = elm_genlist_item_class_new();
681 ad->setup.pw_itc->item_style = "dialogue/editfield/title";
682 ad->setup.pw_itc->func.text_get = __gl_pw_text_get;
683 ad->setup.pw_itc->func.content_get = __gl_pw_icon_get;
684 ad->setup.pw_itc->func.state_get = NULL;
685 ad->setup.pw_itc->func.del = NULL;
687 ad->setup.name_itc = elm_genlist_item_class_new();
688 ad->setup.name_itc->item_style = "multiline/1text";
689 ad->setup.name_itc->func.text_get = __gl_name_label_get;
690 ad->setup.name_itc->func.content_get = NULL;
691 ad->setup.name_itc->func.state_get = NULL;
692 ad->setup.name_itc->func.del = NULL;
694 ad->setup.end_sp_itc = elm_genlist_item_class_new();
695 ad->setup.end_sp_itc->item_style = "dialogue/separator";
696 ad->setup.end_sp_itc->func.text_get = NULL;
697 ad->setup.end_sp_itc->func.content_get = NULL;
698 ad->setup.end_sp_itc->func.state_get = NULL;
699 ad->setup.end_sp_itc->func.del = NULL;
701 __MOBILE_AP_FUNC_EXIT__;
705 static void __deconstruct_wifi_setup_view(mh_wifi_setting_view_t *st)
707 __MOBILE_AP_FUNC_ENTER__;
714 if (st->pw_entry == NULL) {
715 ERR("pw_entry is NULL");
719 evas_object_smart_callback_del(st->hide_btn, "changed",
720 __hide_btn_changed_cb);
721 evas_object_smart_callback_del(st->security_btn, "changed",
722 __security_btn_changed_cb);
724 evas_object_smart_callback_del(st->pw_entry,
726 __passphrase_maxlength_reached_cb);
727 evas_object_smart_callback_del(st->pw_entry,
729 __passphrase_activated_cb);
731 evas_object_smart_callback_del(st->back_btn, "clicked",
733 evas_object_smart_callback_del(st->genlist, "realized",
737 st->security_btn = NULL;
742 __MOBILE_AP_FUNC_EXIT__;
745 static void __back_btn_cb(void *data, Evas_Object *obj, void *event_info)
747 __MOBILE_AP_FUNC_ENTER__;
750 ERR("The param is NULL\n");
754 mh_appdata_t *ad = (mh_appdata_t *)data;
755 mh_wifi_setting_view_t *st = &ad->setup;
760 imf_state = ecore_imf_input_panel_hide();
761 elm_object_focus_set(st->pw_entry, EINA_FALSE);
763 if (strlen(st->wifi_passphrase_new) < WIFI_PASSPHRASE_LENGTH_MIN) {
764 DBG("Password is shorter than %d\n", WIFI_PASSPHRASE_LENGTH_MIN);
765 ret = notification_status_message_post(_("IDS_ST_BODY_ENTER_PASSWORD_OF_AT_LEAST_8_CHARACTERS"));
766 if (ret != NOTIFICATION_ERROR_NONE)
767 ERR("notification_status_message_post() is failed : %d\n", ret);
769 ptr = elm_entry_utf8_to_markup(st->wifi_passphrase);
771 elm_entry_entry_set(st->pw_entry, ptr);
774 ERR("elm_entry_utf8_to_markup is failed\n");
780 if (g_strcmp0(st->wifi_passphrase, st->wifi_passphrase_new) != 0) {
781 if (__save_wifi_passphrase(ad) == EINA_FALSE) {
782 ERR("__save_wifi_passphrase is failed\n");
786 if (imf_state == EINA_TRUE) {
787 DBG("IMF is hided\n");
791 if (ad->main.need_recover_wifi_tethering == true) {
792 DBG("Turn on Wi-Fi tethering again\n");
793 _update_wifi_item(ad, MH_STATE_PROCESS);
794 if (ad->main.help_item)
795 elm_genlist_item_update(ad->main.help_item);
797 ret = tethering_enable(ad->handle, TETHERING_TYPE_WIFI);
798 if (ret != TETHERING_ERROR_NONE) {
799 ERR("Wi-Fi tethering on is failed : %d\n", ret);
800 _update_wifi_item(ad, MH_STATE_NONE);
801 ad->main.need_recover_wifi_tethering = false;
805 __deconstruct_wifi_setup_view(st);
807 evas_object_del(ad->setup.genlist);
808 __free_genlist_itc(ad);
810 elm_naviframe_item_pop(ad->naviframe);
812 __MOBILE_AP_FUNC_EXIT__;
815 static void __gl_realized(void *data, Evas_Object *obj, void *event_info)
817 __MOBILE_AP_FUNC_ENTER__;
819 mh_appdata_t *ad = (mh_appdata_t *)data;
820 mh_wifi_setting_view_t *st = &(ad->setup);
821 Elm_Object_Item *item = (Elm_Object_Item *)event_info;
824 char str[MH_LABEL_LENGTH_MAX] = {0, };
827 if (item == st->hide_item) {
828 DBG("Hide item is realized\n");
829 elm_object_item_signal_emit(item, "elm,state,top", "");
830 } else if (item == st->security_item) {
831 DBG("Security item is realized\n");
832 elm_object_item_signal_emit(item, "elm,state,center", "");
833 } else if (item == st->pw_item) {
834 DBG("Password item is realized\n");
835 elm_object_item_signal_emit(item, "elm,state,bottom", "");
836 } else if (item == st->name_item) {
837 DBG("Name item is realized\n");
840 for (i = 0; i < 2; i++) {
841 if (item == st->sp_item[i])
842 elm_object_item_access_unregister(item);
845 if (item == st->hide_item || item == st->security_item) {
846 ao = elm_object_item_access_object_get(item);
847 btn = elm_object_item_part_content_get(item, "on&off");
848 snprintf(str, sizeof(str), "%s, %s", "On/off button",
849 (elm_check_state_get(btn) ? "On" : "Off"));
850 elm_access_info_set(ao, ELM_ACCESS_CONTEXT_INFO, str);
853 __MOBILE_AP_FUNC_EXIT__;
858 Evas_Object *__create_genlist(mh_appdata_t *ad)
860 __MOBILE_AP_FUNC_ENTER__;
867 void *data = (void *)ad;
868 mh_wifi_setting_view_t *st = &ad->setup;
869 Evas_Object *genlist;
870 Elm_Object_Item *item;
873 genlist = elm_genlist_add(ad->naviframe);
874 if (genlist == NULL) {
875 ERR("genlist is NULL\n");
879 elm_object_style_set(genlist, "dialogue");
880 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
881 evas_object_smart_callback_add(genlist, "realized", __gl_realized, ad);
883 __set_genlist_itc(ad);
884 item = elm_genlist_item_append(genlist, st->sp_itc, NULL, NULL,
885 ELM_GENLIST_ITEM_NONE, NULL, NULL);
886 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
887 st->sp_item[i++] = item;
889 st->hide_item = elm_genlist_item_append(genlist, st->hide_itc, data, NULL,
890 ELM_GENLIST_ITEM_NONE, __gl_hide_item_sel, data);
892 st->security_item = elm_genlist_item_append(genlist, st->security_itc, data, NULL,
893 ELM_GENLIST_ITEM_NONE, __gl_security_item_sel, data);
895 st->pw_item = elm_genlist_item_append(genlist, st->pw_itc, data, NULL,
896 ELM_GENLIST_ITEM_NONE, NULL, NULL);
897 elm_genlist_item_select_mode_set(st->pw_item, ELM_OBJECT_SELECT_MODE_NONE);
899 st->name_item = elm_genlist_item_append(genlist, st->name_itc, data, NULL,
900 ELM_GENLIST_ITEM_NONE, NULL, NULL);
901 elm_genlist_item_select_mode_set(st->name_item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
903 item = elm_genlist_item_append(genlist, st->end_sp_itc, NULL, NULL,
904 ELM_GENLIST_ITEM_NONE, NULL, NULL);
905 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
906 st->sp_item[i++] = item;
909 __MOBILE_AP_FUNC_EXIT__;
914 char *__slide_title_access_info_cb(void *data, Evas_Object *obj)
917 Elm_Object_Item *navi_it;
922 navi_it = (Elm_Object_Item *) data;
923 label = elm_object_item_part_content_get(navi_it, "elm.swallow.title");
927 info = elm_object_text_get(label);
931 buf = eina_strbuf_new();
932 eina_strbuf_append(buf, info);
934 ret = eina_strbuf_string_steal(buf);
935 eina_strbuf_free(buf);
939 static void __title_clicked_cb(void *data, Evas_Object *obj, void *event_info)
942 Elm_Object_Item *navi_it = event_info;
946 label = elm_object_item_part_content_get(navi_it, "elm.swallow.title");
950 elm_label_slide_go(label);
953 void mh_draw_wifi_setup_view(mh_appdata_t *ad)
955 __MOBILE_AP_FUNC_ENTER__;
962 mh_wifi_setting_view_t *st = &ad->setup;
967 if (st->genlist != NULL) {
968 ERR("Wi-Fi setup view already exists\n");
972 st->genlist = __create_genlist(ad);
973 if (st->genlist == NULL) {
974 ERR("__create_genlist returns NULL\n");
978 st->back_btn = elm_button_add(ad->naviframe);
979 if (st->back_btn == NULL) {
980 ERR("elm_button_add returns NULL\n");
983 elm_object_style_set(st->back_btn, "naviframe/back_btn/default");
984 evas_object_smart_callback_add(st->back_btn, "clicked",
986 elm_object_focus_allow_set(st->back_btn, EINA_FALSE);
988 st->navi_it = elm_naviframe_item_push(ad->naviframe,
990 st->back_btn, NULL, st->genlist, NULL);
993 label = _create_slide_title(ad->naviframe, _("IDS_MOBILEAP_MBODY_WI_FI_TETHERING_SETTINGS"));
994 elm_object_item_part_content_set(st->navi_it, "elm.swallow.title", label);
995 evas_object_smart_callback_add(ad->naviframe, "title,clicked", __title_clicked_cb, NULL);
997 ao = elm_object_item_access_object_get(st->navi_it);
999 elm_access_info_set(ao, ELM_ACCESS_TYPE, "title");
1000 elm_access_info_cb_set(ao, ELM_ACCESS_INFO,
1001 __slide_title_access_info_cb, st->navi_it);
1002 elm_object_focus_set(ao, EINA_TRUE);
1005 /* Realize genlist item forcely since UIFW doesn't make realize to avoid crash on landscape mode*/
1006 elm_genlist_item_update(st->pw_item);
1008 __MOBILE_AP_FUNC_EXIT__;
1014 evas_object_del(st->back_btn);
1016 evas_object_del(st->genlist);
1018 st->back_btn = NULL;