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://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.
19 #include <efl_extension.h>
22 #include "mh_view_wifi_setup.h"
23 #include "mh_string.h"
25 static void __gl_realized(void *data, Evas_Object *obj, void *event_info);
26 static void __cancel_btn_cb(void *data, Evas_Object *object, void *event_info);
27 static void __save_btn_cb(void *data, Evas_Object *object, void *event_info);
29 static void __hide_btn_changed_cb(void *data, Evas_Object *obj, void *event_info)
31 __MOBILE_AP_FUNC_ENTER__;
33 if (data == NULL || obj == NULL) {
34 ERR("Invalid param\n");
38 mh_appdata_t *ad = (mh_appdata_t *)data;
40 ad->setup.visibility_new = !ad->setup.visibility_new;
42 __MOBILE_AP_FUNC_EXIT__;
45 static bool __save_hide_btn_change(mh_appdata_t *ad)
47 __MOBILE_AP_FUNC_ENTER__;
50 ERR("Invalid param\n");
56 ret = tethering_wifi_set_ssid_visibility(ad->handle,
57 ad->setup.visibility_new);
58 if (ret != TETHERING_ERROR_NONE) {
59 ERR("tethering_wifi_set_ssid_visibility is failed : %d\n", ret);
63 __MOBILE_AP_FUNC_EXIT__;
67 static void __security_btn_changed_cb(void *data, Evas_Object *obj, void *event_info)
69 __MOBILE_AP_FUNC_ENTER__;
71 if (data == NULL || obj == NULL) {
72 ERR("Invalid param\n");
76 mh_appdata_t *ad = (mh_appdata_t *)data;
77 mh_wifi_setting_view_t *st = &ad->setup;
79 if (st->security_type_new == TETHERING_WIFI_SECURITY_TYPE_NONE)
80 st->security_type_new = TETHERING_WIFI_SECURITY_TYPE_WPA2_PSK;
82 st->security_type_new = TETHERING_WIFI_SECURITY_TYPE_NONE;
84 /* update wifi passphrase item */
85 if (st->security_type_new == TETHERING_WIFI_SECURITY_TYPE_NONE) {
86 elm_object_item_disabled_set(st->pw_item, EINA_TRUE);
87 elm_object_disabled_set(st->save_button, EINA_FALSE);
89 elm_object_item_disabled_set(st->pw_item, EINA_FALSE);
90 if (st->pw_entry == NULL || elm_entry_entry_get(st->pw_entry) == NULL ||
91 strlen(elm_entry_entry_get(st->pw_entry)) == 0)
92 elm_object_disabled_set(st->save_button, EINA_TRUE);
96 elm_genlist_item_update(st->pw_item);
98 __MOBILE_AP_FUNC_EXIT__;
101 static bool __save_security_btn_change(mh_appdata_t *ad)
103 __MOBILE_AP_FUNC_ENTER__;
106 ERR("Invalid param\n");
112 ret = tethering_wifi_set_security_type(ad->handle, ad->setup.security_type_new);
113 if (ret != TETHERING_ERROR_NONE) {
114 ERR("tethering_wifi_set_security_type is failed : %d\n", ret);
118 __MOBILE_AP_FUNC_EXIT__;
122 static char *__gl_device_name_title_label_get(void *data, Evas_Object *obj, const char *part)
124 __MOBILE_AP_FUNC_ENTER__;
125 mh_appdata_t *ad = (mh_appdata_t *)data;
126 char *device_name_utf = NULL;
128 char buf[MH_LABEL_LENGTH_MAX] = {0, };
130 if (data == NULL || obj == NULL || part == NULL) {
131 ERR("Invalid param\n");
135 if (!strcmp("elm.text.multiline", part)) {
136 device_name_utf = vconf_get_str(VCONFKEY_SETAPPL_DEVICE_NAME_STR);
137 if (device_name_utf == NULL) {
138 ERR("vconf_get_str failed \n");
141 ptr = elm_entry_utf8_to_markup(device_name_utf);
143 ERR("elm_entry_utf8_to_markup is failed\n");
144 free(device_name_utf);
148 g_strlcpy(ad->setup.device_name, ptr,
149 sizeof(ad->setup.device_name));
151 snprintf(buf, MH_LABEL_LENGTH_MAX, "<font_size=30>%s</font_size><br>%s", STR_MY_DEVICE_NAME, ptr);
153 free(device_name_utf);
159 __MOBILE_AP_FUNC_EXIT__;
163 static char *__gl_hide_label_get(void *data, Evas_Object *obj, const char *part)
165 __MOBILE_AP_FUNC_ENTER__;
167 if (data == NULL || obj == NULL || part == NULL) {
168 ERR("Invalid param\n");
172 if (!strcmp("elm.text", part)) {
173 return strdup(STR_HIDE_MY_DEV);
176 __MOBILE_AP_FUNC_EXIT__;
180 static char *__gl_security_label_get(void *data, Evas_Object *obj, const char *part)
182 __MOBILE_AP_FUNC_ENTER__;
184 if (data == NULL || obj == NULL || part == NULL) {
185 ERR("Invalid param\n");
189 if (!strcmp("elm.text", part)) {
190 return strdup(STR_SECURITY_TYPE);
193 __MOBILE_AP_FUNC_EXIT__;
197 static Evas_Object *__gl_hide_icon_get(void *data, Evas_Object *obj,
200 __MOBILE_AP_FUNC_ENTER__;
202 mh_appdata_t *ad = (mh_appdata_t *)data;
203 Evas_Object *btn = NULL;
204 Evas_Object *icon_layout = NULL;
206 if (data == NULL || obj == NULL || part == NULL) {
207 ERR("Invalid param\n");
211 if (!strcmp("elm.swallow.end", part)) {
212 icon_layout = elm_layout_add(obj);
213 elm_layout_theme_set(icon_layout, "layout", "list/C/type.3", "default");
214 btn = elm_check_add(obj);
216 ERR("btn is NULL\n");
220 elm_object_style_set(btn, "on&off");
221 evas_object_show(btn);
222 evas_object_pass_events_set(btn, EINA_TRUE);
223 evas_object_propagate_events_set(btn, EINA_FALSE);
224 elm_object_focus_allow_set(btn, EINA_FALSE);
225 elm_check_state_set(btn, ad->setup.visibility_new ? EINA_FALSE : EINA_TRUE);
226 evas_object_smart_callback_add(btn, "changed",
227 __hide_btn_changed_cb, (void *)ad);
228 ad->setup.hide_btn = btn;
230 elm_layout_content_set(icon_layout, "elm.swallow.content", btn);
233 __MOBILE_AP_FUNC_EXIT__;
237 static Evas_Object *__gl_security_icon_get(void *data, Evas_Object *obj,
240 __MOBILE_AP_FUNC_ENTER__;
242 mh_appdata_t *ad = (mh_appdata_t *)data;
243 Evas_Object *btn = NULL;
244 Evas_Object *icon_layout = NULL;
246 if (data == NULL || obj == NULL || part == NULL) {
247 ERR("Invalid param\n");
251 if (!strcmp("elm.swallow.end", part)) {
252 icon_layout = elm_layout_add(obj);
253 elm_layout_theme_set(icon_layout, "layout", "list/C/type.3", "default");
255 btn = elm_check_add(obj);
256 elm_object_style_set(btn, "on&off");
257 evas_object_show(btn);
258 evas_object_pass_events_set(btn, EINA_TRUE);
259 evas_object_propagate_events_set(btn, EINA_FALSE);
260 elm_check_state_set(btn, ad->setup.security_type_new ==
261 TETHERING_WIFI_SECURITY_TYPE_NONE ?
262 EINA_FALSE : EINA_TRUE);
263 evas_object_smart_callback_add(btn, "changed",
264 __security_btn_changed_cb, (void *)ad);
265 ad->setup.security_btn = btn;
267 elm_layout_content_set(icon_layout, "elm.swallow.content", btn);
270 __MOBILE_AP_FUNC_EXIT__;
274 static bool __save_wifi_passphrase(mh_appdata_t *ad)
276 __MOBILE_AP_FUNC_ENTER__;
279 ERR("Invalid param\n");
283 mh_wifi_setting_view_t *st = &ad->setup;
286 ret = tethering_wifi_set_passphrase(ad->handle, st->wifi_passphrase_new);
287 if (ret != TETHERING_ERROR_NONE) {
288 ERR("tethering_wifi_set_passphrase is failed : %d\n", ret);
292 __MOBILE_AP_FUNC_EXIT__;
296 static void __pw_entry_changed_cb(void *data, Evas_Object *obj,
299 __MOBILE_AP_FUNC_ENTER__;
301 mh_appdata_t *ad = (mh_appdata_t *)data;
302 mh_wifi_setting_view_t *st = &ad->setup;
303 const char *changed_text;
307 changed_text = elm_entry_entry_get(obj);
308 if (changed_text == NULL) {
309 ERR("elm_entry_entry_get is failed\n");
313 utf8_string = elm_entry_markup_to_utf8(changed_text);
315 if (utf8_string == NULL) {
316 ERR("elm_entry_markup_to_utf8() Failed!!!\n");
318 len = strlen(utf8_string);
319 if (WIFI_PASSPHRASE_LENGTH_MIN <= len) {
320 elm_object_disabled_set(st->save_button, EINA_FALSE);
321 elm_entry_input_panel_return_key_disabled_set(obj, FALSE);
323 elm_object_disabled_set(st->save_button, EINA_TRUE);
324 elm_entry_input_panel_return_key_disabled_set(obj, TRUE);
326 g_strlcpy(st->wifi_passphrase_new, utf8_string,
327 sizeof(st->wifi_passphrase_new));
332 if (elm_object_part_content_get(obj, "elm.swallow.clear")) {
333 if (elm_object_focus_get(obj)) {
334 if (elm_entry_is_empty(obj))
335 elm_object_signal_emit(obj, "elm,state,clear,hidden", "");
337 elm_object_signal_emit(obj, "elm,state,clear,visible", "");
341 __MOBILE_AP_FUNC_EXIT__;
345 static void __pw_entry_maxlength_reached_cb(void *data, Evas_Object *obj,
348 __MOBILE_AP_FUNC_ENTER__;
351 ERR("The param is NULL\n");
352 __MOBILE_AP_FUNC_EXIT__;
355 char buf[MH_LABEL_LENGTH_MAX] = { 0, };
356 notification_error_e ret;
358 snprintf(buf, sizeof(buf), STR_PASSWORD_MIN_MAX,
359 WIFI_PASSPHRASE_LENGTH_MIN, WIFI_PASSPHRASE_LENGTH_MAX);
361 ret = notification_status_message_post(buf);
362 if (ret != NOTIFICATION_ERROR_NONE) {
363 ERR("notification_status_message_post() is failed : %d\n", ret);
366 __MOBILE_AP_FUNC_EXIT__;
369 static void __pw_entry_activated_cb(void *data, Evas_Object *obj, void *event_info)
371 __MOBILE_AP_FUNC_ENTER__;
374 ERR("Invalid parameter");
378 elm_object_focus_set(obj, EINA_FALSE);
379 __MOBILE_AP_FUNC_EXIT__;
383 static void __pw_entry_focused_cb(void *data, Evas_Object *obj, void *event_info)
385 if (elm_object_part_content_get(obj, "elm.swallow.clear")) {
386 if (!elm_entry_is_empty(obj))
387 elm_object_signal_emit(obj, "elm,state,clear,visible", "");
389 elm_object_signal_emit(obj, "elm,state,clear,hidden", "");
391 elm_object_signal_emit(obj, "elm,state,focus,on", "");
394 static void __pw_entry_unfocused_cb(void *data, Evas_Object *obj, void *event_info)
396 if (elm_object_part_content_get(obj, "elm.swallow.clear"))
397 elm_object_signal_emit(obj, "elm,state,clear,hidden", "");
398 elm_object_signal_emit(obj, "elm,state,focus,off", "");
401 static void __eraser_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info)
403 __MOBILE_AP_FUNC_ENTER__;
405 elm_entry_entry_set(data, "");
406 elm_entry_input_panel_return_key_disabled_set(data, TRUE);
408 __MOBILE_AP_FUNC_EXIT__;
411 static void __pw_entry_language_changed_cb(void *data, Evas_Object *obj, void *event_info)
413 __MOBILE_AP_FUNC_ENTER__;
415 if (obj == NULL || data == NULL) {
419 mh_appdata_t *ad = (mh_appdata_t *)data;
420 mh_wifi_setting_view_t *st = &ad->setup;
421 char buf[MH_LABEL_LENGTH_MAX];
423 snprintf(buf, sizeof(buf), STR_PW_GUIDE_TEXT, WIFI_PASSPHRASE_LENGTH_MIN);
425 if (st->security_type_new == TETHERING_WIFI_SECURITY_TYPE_NONE) {
427 elm_genlist_item_update(st->pw_item);
429 elm_object_part_text_set(obj, "elm.guide", buf);
431 __MOBILE_AP_FUNC_EXIT__;
434 static Evas_Object *__get_pw_entry(void *data, Evas_Object *parent)
436 __MOBILE_AP_FUNC_ENTER__;
438 static Elm_Entry_Filter_Limit_Size limit_filter_data;
439 Evas_Object *entry = NULL;
441 Evas_Object * clr_btn = NULL;
442 char buf[MH_LABEL_LENGTH_MAX];
444 if (parent == NULL || data == NULL) {
445 ERR("null param \n");
449 mh_appdata_t *ad = (mh_appdata_t *)data;
450 mh_wifi_setting_view_t *st = &ad->setup;
452 entry = elm_entry_add(parent);
455 ERR("elm_entry_add returns NULL\n");
460 elm_entry_single_line_set(entry, EINA_TRUE);
461 elm_entry_scrollable_set(entry, EINA_TRUE);
462 elm_entry_password_set(entry, EINA_FALSE);
464 st->pw_entry = entry;
465 evas_object_smart_callback_add(entry, "language,changed",
466 __pw_entry_language_changed_cb, ad);
468 eext_entry_selection_back_event_allow_set(entry, EINA_TRUE);
469 elm_entry_prediction_allow_set(entry, EINA_FALSE);
470 elm_object_signal_emit(entry, "elm,action,hide,search_icon", "");
471 elm_entry_input_panel_layout_set(entry, ELM_INPUT_PANEL_LAYOUT_PASSWORD);
472 elm_entry_cursor_end_set(entry);
473 snprintf(buf, sizeof(buf), STR_PW_GUIDE_TEXT, WIFI_PASSPHRASE_LENGTH_MIN);
474 elm_object_part_text_set(entry, "elm.guide", buf);
475 elm_entry_cnp_mode_set(entry, ELM_CNP_MODE_PLAINTEXT);
477 limit_filter_data.max_char_count = 0;
478 limit_filter_data.max_byte_count = WIFI_PASSPHRASE_LENGTH_MAX;
479 elm_entry_markup_filter_append(entry, elm_entry_filter_limit_size, &limit_filter_data);
481 if (st->security_type_new == TETHERING_WIFI_SECURITY_TYPE_NONE) {
482 elm_object_part_text_set(entry, "default", buf);
483 elm_entry_input_panel_enabled_set(entry, EINA_FALSE);
484 elm_object_disabled_set(entry, EINA_TRUE);
486 elm_object_item_signal_emit(st->pw_item, "elm,state,rename,hide", "");
489 ptr = elm_entry_utf8_to_markup(st->wifi_passphrase_new);
491 elm_entry_entry_set(entry, ptr);
494 ERR("elm_entry_utf8_to_markup is failed\n");
498 elm_entry_input_panel_return_key_type_set(st->pw_entry,
499 ELM_INPUT_PANEL_RETURN_KEY_TYPE_DONE);
501 clr_btn = elm_button_add(entry);
502 elm_object_style_set(clr_btn, "search_clear");
503 elm_object_focus_allow_set(clr_btn, EINA_FALSE);
504 elm_object_part_content_set(entry, "elm.swallow.clear", clr_btn);
505 evas_object_smart_callback_add(clr_btn, "clicked", __eraser_btn_clicked_cb, entry);
506 evas_object_show(clr_btn);
508 evas_object_smart_callback_add(entry, "changed",
509 __pw_entry_changed_cb, ad);
510 evas_object_smart_callback_add(entry, "maxlength,reached",
511 __pw_entry_maxlength_reached_cb, ad);
512 evas_object_smart_callback_add(entry, "activated",
513 __pw_entry_activated_cb, NULL);
514 evas_object_smart_callback_add(entry, "focused",
515 __pw_entry_focused_cb, NULL);
516 evas_object_smart_callback_add(entry, "unfocused",
517 __pw_entry_unfocused_cb, NULL);
519 elm_object_part_content_set(parent, "elm.swallow.content", entry);
521 __MOBILE_AP_FUNC_EXIT__;
525 static char *__gl_pw_text_get(void *data, Evas_Object *obj, const char *part)
527 __MOBILE_AP_FUNC_ENTER__;
528 char buf[MH_LABEL_LENGTH_MAX] = {0, };
530 if (data == NULL || obj == NULL || part == NULL) {
531 ERR("Invalid param\n");
535 if (!strcmp("elm.text.main", part)) {
536 snprintf(buf, MH_LABEL_LENGTH_MAX, "<font_size=30>%s</font_size>", STR_PASSWORD);
540 __MOBILE_AP_FUNC_EXIT__;
544 static Evas_Object *__gl_pw_content_get(void *data, Evas_Object *obj, const char *part)
546 __MOBILE_AP_FUNC_ENTER__;
548 Evas_Object * layout = NULL;
551 ERR("data is null \n");
555 if (!strcmp(part, "elm.icon.entry")) {
556 layout = elm_layout_add(obj);
557 elm_layout_theme_set(layout, "layout", "editfield", "singleline");
558 evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, 0.0);
559 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, 0.0);
562 __MOBILE_AP_FUNC_EXIT__;
566 static void __gl_hide_item_sel(void *data, Evas_Object *obj, void *event_info)
568 __MOBILE_AP_FUNC_ENTER__;
570 if (data == NULL || obj == NULL || event_info == NULL) {
571 ERR("param is NULL\n");
575 mh_appdata_t *ad = (mh_appdata_t *)data;
577 elm_genlist_item_selected_set((Elm_Object_Item*)event_info, EINA_FALSE);
578 __hide_btn_changed_cb(ad, obj, NULL);
580 elm_check_state_set(ad->setup.hide_btn, ad->setup.visibility_new ?
581 EINA_FALSE : EINA_TRUE);
583 __MOBILE_AP_FUNC_EXIT__;
586 static void __gl_security_item_sel(void *data, Evas_Object *obj, void *event_info)
588 __MOBILE_AP_FUNC_ENTER__;
590 if (data == NULL || obj == NULL || event_info == NULL) {
591 ERR("param is NULL\n");
595 mh_appdata_t *ad = (mh_appdata_t *)data;
597 elm_genlist_item_selected_set((Elm_Object_Item*)event_info, EINA_FALSE);
598 __security_btn_changed_cb(data, obj, NULL);
599 elm_check_state_set(ad->setup.security_btn, ad->setup.security_type_new ==
600 TETHERING_WIFI_SECURITY_TYPE_NONE ? EINA_FALSE : EINA_TRUE);
602 __MOBILE_AP_FUNC_EXIT__;
605 static void __set_genlist_itc(mh_appdata_t *ad)
607 __MOBILE_AP_FUNC_ENTER__;
610 ad->setup.sp_itc = elm_genlist_item_class_new();
611 if (ad->setup.sp_itc == NULL) {
612 ERR("elm_genlist_item_class_new failed\n");
613 __MOBILE_AP_FUNC_EXIT__;
616 ad->setup.sp_itc->item_style = "dialogue/separator";
617 ad->setup.sp_itc->func.text_get = NULL;
618 ad->setup.sp_itc->func.content_get = NULL;
619 ad->setup.sp_itc->func.state_get = NULL;
620 ad->setup.sp_itc->func.del = NULL;
622 ad->setup.name_itc = elm_genlist_item_class_new();
623 if (ad->setup.name_itc == NULL) {
624 ERR("elm_genlist_item_class_new failed\n");
625 __MOBILE_AP_FUNC_EXIT__;
628 ad->setup.name_itc->item_style = MH_GENLIST_MULTILINE_TEXT_STYLE;
629 ad->setup.name_itc->func.text_get = __gl_device_name_title_label_get;
630 ad->setup.name_itc->func.content_get = NULL;
631 ad->setup.name_itc->func.state_get = NULL;
632 ad->setup.name_itc->func.del = NULL;
634 ad->setup.hide_itc = elm_genlist_item_class_new();
635 if (ad->setup.hide_itc == NULL) {
636 ERR("elm_genlist_item_class_new failed\n");
637 __MOBILE_AP_FUNC_EXIT__;
640 ad->setup.hide_itc->item_style = MH_GENLIST_1LINE_TEXT_ICON_STYLE;
641 ad->setup.hide_itc->func.text_get = __gl_hide_label_get;
642 ad->setup.hide_itc->func.content_get = __gl_hide_icon_get;
643 ad->setup.hide_itc->func.state_get = NULL;
644 ad->setup.hide_itc->func.del = NULL;
646 ad->setup.security_itc = elm_genlist_item_class_new();
647 if (ad->setup.security_itc == NULL) {
648 ERR("elm_genlist_item_class_new failed\n");
649 __MOBILE_AP_FUNC_EXIT__;
652 ad->setup.security_itc->item_style = MH_GENLIST_1LINE_TEXT_ICON_STYLE;
653 ad->setup.security_itc->func.text_get = __gl_security_label_get;
654 ad->setup.security_itc->func.content_get = __gl_security_icon_get;
655 ad->setup.security_itc->func.state_get = NULL;
656 ad->setup.security_itc->func.del = NULL;
658 ad->setup.pw_itc = elm_genlist_item_class_new();
659 if (ad->setup.pw_itc == NULL) {
660 ERR("elm_genlist_item_class_new failed\n");
661 __MOBILE_AP_FUNC_EXIT__;
664 ad->setup.pw_itc->item_style = "entry.main";
665 ad->setup.pw_itc->func.text_get = __gl_pw_text_get;
666 ad->setup.pw_itc->func.content_get = __gl_pw_content_get;
667 ad->setup.pw_itc->func.state_get = NULL;
668 ad->setup.pw_itc->func.del = NULL;
671 ad->setup.sp2_itc = elm_genlist_item_class_new();
672 if (ad->setup.sp2_itc == NULL) {
673 ERR("elm_genlist_item_class_new failed\n");
674 __MOBILE_AP_FUNC_EXIT__;
677 ad->setup.sp2_itc->item_style = "dialogue/separator.2";
678 ad->setup.sp2_itc->func.text_get = NULL;
679 ad->setup.sp2_itc->func.content_get = NULL;
680 ad->setup.sp2_itc->func.state_get = NULL;
681 ad->setup.sp2_itc->func.del = NULL;
683 __MOBILE_AP_FUNC_EXIT__;
687 static void __deconstruct_wifi_setup_view(mh_wifi_setting_view_t *st)
689 __MOBILE_AP_FUNC_ENTER__;
696 evas_object_smart_callback_del(st->hide_btn, "changed",
697 __hide_btn_changed_cb);
698 evas_object_smart_callback_del(st->security_btn, "changed",
699 __security_btn_changed_cb);
700 evas_object_smart_callback_del(st->cancel_button, "clicked",
702 evas_object_smart_callback_del(st->save_button, "clicked",
704 evas_object_smart_callback_del(st->genlist, "realized",
707 __MOBILE_AP_FUNC_EXIT__;
710 static void __settings_reloaded_cb(tethering_error_e result, void *user_data)
712 if (user_data == NULL) {
713 ERR("Invalid parameter\n");
717 __MOBILE_AP_FUNC_ENTER__;
719 mh_appdata_t *ad = (mh_appdata_t *)user_data;
721 if (result != TETHERING_ERROR_NONE)
722 ERR("tethering_wifi_reload_settings is failed [0x%X]\n", result);
723 _update_wifi_item(ad, MH_STATE_NONE);
725 __MOBILE_AP_FUNC_EXIT__;
730 static void __save_btn_cb(void *data, Evas_Object *object, void *event_info)
734 ERR("data is NULL\n");
738 mh_appdata_t *ad = (mh_appdata_t *)data;
739 mh_wifi_setting_view_t *st = &ad->setup;
741 bool is_setting_changed = false;
743 /* handle hide button change */
744 if (st->visibility != st->visibility_new) {
745 ret = __save_hide_btn_change(ad);
747 elm_check_state_set(st->hide_btn, st->visibility ?
748 EINA_FALSE : EINA_TRUE);
750 st->visibility = st->visibility_new;
751 is_setting_changed = true;
754 /* handle security button change */
755 if (st->security_type != st->security_type_new) {
756 ret = __save_security_btn_change(ad);
758 elm_check_state_set(st->security_btn, st->security_type ==
759 TETHERING_WIFI_SECURITY_TYPE_NONE ? EINA_FALSE : EINA_TRUE);
761 st->security_type = st->security_type_new;
762 is_setting_changed = true;
766 /* handle wifi passphrase change */
767 if (strcmp(st->wifi_passphrase, st->wifi_passphrase_new)) {
768 ret = __save_wifi_passphrase(ad);
770 g_strlcpy(st->wifi_passphrase_new, st->wifi_passphrase,
771 sizeof(st->wifi_passphrase_new));
773 elm_genlist_item_update(st->pw_item);
775 g_strlcpy(st->wifi_passphrase, st->wifi_passphrase_new,
776 sizeof(st->wifi_passphrase));
777 is_setting_changed = true;
778 if (ad->main.help_item) {
779 if (ad->main.help_item)
780 elm_genlist_item_update(ad->main.help_item);
785 if (is_setting_changed) {
786 _update_wifi_item(ad, MH_STATE_PROCESS);
788 if (ad->main.help_item)
789 elm_genlist_item_update(ad->main.help_item);
791 /* reload wifi settings */
792 ret = tethering_wifi_reload_settings(ad->handle, __settings_reloaded_cb,
794 if (ret != TETHERING_ERROR_NONE)
795 ERR("reload_configuration is failed : %d\n", ret);
798 elm_naviframe_item_pop(ad->naviframe);
804 static void __cancel_btn_cb(void *data, Evas_Object *object, void *event_info)
809 ERR("The param is NULL\n");
813 mh_appdata_t *ad = (mh_appdata_t *)data;
815 elm_naviframe_item_pop(ad->naviframe);
820 Eina_Bool _setting_back_btn_cb(void *data, Elm_Object_Item *navi_item)
825 ERR("The param is NULL\n");
829 mh_appdata_t *ad = (mh_appdata_t *)data;
830 mh_wifi_setting_view_t *st = &ad->setup;
832 if (st->visibility != st->visibility_new) {
833 st->visibility_new = st->visibility;
836 if (st->security_type != st->security_type_new) {
837 st->security_type_new = st->security_type;
840 if (strcmp(st->wifi_passphrase_new, st->wifi_passphrase)) {
841 g_strlcpy(st->wifi_passphrase_new, st->wifi_passphrase,
842 sizeof(st->wifi_passphrase_new));
845 __deconstruct_wifi_setup_view(st);
847 if (ad->rename_popup != NULL) {
848 evas_object_del(ad->rename_popup);
849 ad->rename_popup = NULL;
851 ad->setup.navi_it = NULL;
857 static void __gl_realized(void *data, Evas_Object *obj, void *event_info)
859 __MOBILE_AP_FUNC_ENTER__;
861 mh_appdata_t *ad = (mh_appdata_t *)data;
862 mh_wifi_setting_view_t *st = &(ad->setup);
863 Elm_Object_Item *item = (Elm_Object_Item *)event_info;
866 char str[MH_LABEL_LENGTH_MAX] = {0, };
870 if (item == st->hide_item) {
871 elm_object_item_signal_emit(item, "elm,state,top", "");
872 } else if (item == st->security_item) {
873 elm_object_item_signal_emit(item, "elm,state,center", "");
874 } else if (item == st->pw_item) {
875 elm_object_item_signal_emit(item, "elm,state,bottom", "");
876 } else if (item == st->name_item) {
879 no_of_sp = sizeof(st->sp_item) / sizeof(st->sp_item[0]);
880 for (i = 0; i < no_of_sp; i++) {
881 if (item == st->sp_item[i])
882 elm_object_item_access_unregister(item);
885 if (item == st->hide_item || item == st->security_item) {
886 ao = elm_object_item_access_object_get(item);
887 btn = elm_object_item_part_content_get(item, "on&off");
888 snprintf(str, sizeof(str), "%s, %s", "On/off button",
889 (elm_check_state_get(btn) ? "On" : "Off"));
890 elm_access_info_set(ao, ELM_ACCESS_CONTEXT_INFO, str);
893 if (item == st->pw_item) {
894 elm_object_item_access_unregister(item);
895 ao = elm_object_item_access_register(item);
896 snprintf(str, sizeof(str), "%s, %s", STR_PASSWORD, st->wifi_passphrase_new);
897 elm_access_info_set(ao, ELM_ACCESS_CONTEXT_INFO, str);
900 __MOBILE_AP_FUNC_EXIT__;
905 static void __select_passphrase_item(void *data, Evas_Object *obj, void *event_info)
907 __MOBILE_AP_FUNC_ENTER__;
910 ERR("The param is NULL\n");
914 Elm_Object_Item *item = (Elm_Object_Item *)event_info;
915 Evas_Object *layout = NULL;
916 mh_appdata_t *ad = (mh_appdata_t *)data;
918 elm_genlist_item_selected_set(item, EINA_FALSE);
920 layout = elm_layout_add(obj);
921 elm_layout_file_set(layout, FILE_PATH_OF_EDC, "entry_style");
922 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
923 __get_pw_entry(ad, layout);
924 __MOBILE_AP_FUNC_EXIT__;
928 Evas_Object *__create_genlist(mh_appdata_t *ad)
930 __MOBILE_AP_FUNC_ENTER__;
937 void *data = (void *)ad;
938 mh_wifi_setting_view_t *st = &ad->setup;
939 Evas_Object *genlist;
941 genlist = elm_genlist_add(ad->naviframe);
942 if (genlist == NULL) {
943 ERR("genlist is NULL\n");
947 elm_object_style_set(genlist, "dialogue");
948 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
949 evas_object_smart_callback_add(genlist, "realized", __gl_realized, ad);
950 //elm_genlist_realization_mode_set(genlist, EINA_TRUE);
952 __set_genlist_itc(ad);
954 st->name_item = elm_genlist_item_append(genlist, st->name_itc, data, NULL,
955 ELM_GENLIST_ITEM_NONE, NULL, NULL);
956 elm_genlist_item_select_mode_set(st->name_item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
959 elm_object_item_disabled_set(st->name_item, EINA_TRUE);
961 st->hide_item = elm_genlist_item_append(genlist, st->hide_itc, data, NULL,
962 ELM_GENLIST_ITEM_NONE, __gl_hide_item_sel, data);
964 st->security_item = elm_genlist_item_append(genlist, st->security_itc, data, NULL,
965 ELM_GENLIST_ITEM_NONE, __gl_security_item_sel, data);
967 st->pw_item = elm_genlist_item_append(genlist, st->pw_itc, data, NULL,
968 ELM_GENLIST_ITEM_NONE, __select_passphrase_item, ad);
969 if (st->security_type == TETHERING_WIFI_SECURITY_TYPE_NONE)
970 elm_object_item_disabled_set(st->pw_item, EINA_TRUE);
972 elm_object_item_disabled_set(st->pw_item, EINA_FALSE);
974 /* End separator is removed because of P131104-03336. It is confirmed by UX team for this case.
975 item = elm_genlist_item_append(genlist, st->sp_itc, NULL, NULL,
976 ELM_GENLIST_ITEM_NONE, NULL, NULL);
977 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
978 st->sp_item[i++] = item;
981 __MOBILE_AP_FUNC_EXIT__;
986 void mh_draw_wifi_setup_view(mh_appdata_t *ad)
996 mh_wifi_setting_view_t *st = &ad->setup;
998 if (ad->setup.navi_it != NULL) {
999 ERR("Wi-Fi setup view already exists\n");
1004 st->genlist = __create_genlist(ad);
1005 if (st->genlist == NULL) {
1006 ERR("__create_genlist returns NULL\n");
1011 st->navi_it = elm_naviframe_item_push(ad->naviframe, "IDS_MOBILEAP_MBODY_WI_FI_TETHERING",
1012 NULL, NULL, st->genlist, NULL);
1013 elm_object_item_domain_text_translatable_set(st->navi_it, PKGNAME, EINA_TRUE);
1015 elm_naviframe_item_pop_cb_set(st->navi_it, _setting_back_btn_cb, (void *)ad);
1017 btn = elm_button_add(ad->naviframe);
1018 elm_object_style_set(btn, "naviframe/title_cancel");
1019 evas_object_smart_callback_add(btn, "clicked", __cancel_btn_cb, ad);
1020 elm_object_item_part_content_set(st->navi_it, "title_left_btn", btn);
1021 st->cancel_button = btn;
1023 btn = elm_button_add(ad->naviframe);
1024 elm_object_style_set(btn, "naviframe/title_done");
1025 evas_object_smart_callback_add(btn, "clicked", __save_btn_cb, ad);
1026 elm_object_item_part_content_set(st->navi_it, "title_right_btn", btn);
1027 st->save_button = btn;