2 * Copyright (c) 2012, 2013 Samsung Electronics Co., Ltd.
4 * Licensed under the Flora License, Version 1.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://floralicense.org/license/
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #include <efl_assist.h>
18 #include <notification.h>
20 #include "ug-nfc-setting-main.h"
21 #include "ug-nfc-setting-popup.h"
22 #include "ug-nfc-setting-db.h"
25 #define UG_MODULE_API __attribute__ ((visibility("default")))
28 #define SETTING_IMG_NFC \
29 "/usr/apps/com.samsung.setting/res/icons/settings_nfc.png"
31 static Elm_Genlist_Item_Class itc_sep;
32 static Elm_Genlist_Item_Class itc_sep_help;
33 static Elm_Genlist_Item_Class itc_helptext;
34 static Elm_Genlist_Item_Class itc_2text1con;
35 static Elm_Genlist_Item_Class itc_2text;
36 static Elm_Genlist_Item_Class itc_onoff;
38 static Elm_Object_Item *pd_item;
39 static Elm_Object_Item *ss_item;
41 static bool pending_status = false;
42 static Eina_Bool rotate_flag = EINA_FALSE;
44 static void __nfc_activation_completed_cb(nfc_error_e error, void *user_data);
45 static void __nfc_activation_changed_cb(bool activated , void *user_data);
47 static void __show_app_error_popup_response_cb(void *data,
48 Evas_Object *obj, void *event_info)
50 ugdata_t *ug_data = (ugdata_t *)data;
51 int result = (int)event_info;
54 LOGE("invalid parameter");
59 case UG_NFC_POPUP_RESP_CANCEL :
61 LOGD("ug_destroy_me >>>>", __FUNCTION__, __LINE__);
62 ug_destroy_me(ug_data->nfc_setting_ug);
70 static void __show_app_error_popup(void *data)
72 ugdata_t *ug_data = (ugdata_t *)data;
73 char popup_str[POPUP_TEXT_SIZE] = { 0, };
78 memcpy(popup_str, IDS_NFC_SERVICE_IS_NOT_SUPPORTED,
79 strlen(IDS_NFC_SERVICE_IS_NOT_SUPPORTED));
81 /* To do: popup_title */
82 ug_nfc_setting_create_popup(ug_data,
86 IDS_CLOSE, UG_NFC_POPUP_RESP_CANCEL,
90 __show_app_error_popup_response_cb);
93 static void __nfc_activation_failed_popup_res_cb(void *data,
94 Evas_Object *obj, void *event_info)
99 static void __nfc_activation_failed_popup_lang_changed_cb(void *data,
100 Evas_Object *obj, void *event_info)
107 elm_object_part_text_set(obj, "title,text", IDS_FAILED_TO_TURN_ON_NFC);
108 elm_object_text_set(obj, IDS_AN_ERROR_OCCURRED_WHILE_TURNING_ON_NFC_TRY_AGAIN);
110 button = elm_object_part_content_get(obj, "button1");
111 elm_object_text_set(button, IDS_OK);
114 static void __nfc_activation_failed_popup(void *data)
116 ugdata_t *ug_data = (ugdata_t *)data;
119 g_assert(ug_data != NULL);
121 popup = ug_nfc_setting_create_popup(ug_data,
122 ug_data->base_layout,
123 IDS_FAILED_TO_TURN_ON_NFC,
124 IDS_AN_ERROR_OCCURRED_WHILE_TURNING_ON_NFC_TRY_AGAIN,
125 IDS_OK, UG_NFC_POPUP_RESP_OK,
128 false, false, __nfc_activation_failed_popup_res_cb);
130 evas_object_smart_callback_add(popup, "language,changed",
131 __nfc_activation_failed_popup_lang_changed_cb, NULL);
134 static char * __get_text_turned_on_popup(void *data)
136 ugdata_t *ug_data = (ugdata_t *)data;
141 LOGE("invalid parameter");
145 if (ug_data->menu_type == MENU_NFC) {
146 if (!vconf_get_bool(VCONFKEY_NFC_STATE, &boolval)) {
148 text = strdup(IDS_NFC_TURNED_ON);
155 static bool __get_pending_status(void)
157 return pending_status;
160 static void __set_pending_status(bool status)
162 pending_status = status;
165 static bool __reply_to_launch_request(app_control_h service, app_control_result_e result)
168 char *operation = NULL;
174 app_control_create(&reply);
175 app_control_get_operation(service, &operation);
177 if (operation != NULL)
179 LOGD("reply to launch request : operation %s", operation);
180 app_control_reply_to_launch_request(reply, service, result);
184 app_control_destroy(reply);
192 static Eina_Bool __back_clicked_cb(void *data, Elm_Object_Item *it)
194 ugdata_t *ug_data = (ugdata_t *)data;
199 LOGE("data is null");
203 __reply_to_launch_request(ug_data->service, APP_CONTROL_RESULT_FAILED);
205 _ug_nfc_setting_db_close();
206 ug_destroy_me(ug_data->nfc_setting_ug);
213 static void __update_title_onoff_obj(void *data)
215 ugdata_t *ug_data = (ugdata_t *)data;
221 if (__get_pending_status()) {
222 elm_object_disabled_set(ug_data->ns_on_off, EINA_TRUE);
226 elm_object_disabled_set(ug_data->ns_on_off, EINA_FALSE);
227 if (ug_data->menu_type == MENU_NFC) {
228 if (!vconf_get_bool(VCONFKEY_NFC_STATE, &boolval) &&
230 elm_check_state_set(ug_data->ns_on_off, EINA_TRUE);
232 elm_check_state_set(ug_data->ns_on_off, EINA_FALSE);
237 static void __change_nfc_onoff_setting(void *data)
239 ugdata_t *ug_data = (ugdata_t *)data;
245 if (!vconf_get_bool(VCONFKEY_NFC_STATE, &boolval)) {
246 LOGD("vconf_get_bool status [%d]", boolval);
248 if (NFC_ERROR_NONE == nfc_manager_initialize()) {
250 /* Register activation changed callback */
251 nfc_manager_set_activation_changed_cb(
252 __nfc_activation_changed_cb, ug_data);
254 result = nfc_manager_set_activation(!boolval,
255 __nfc_activation_completed_cb, ug_data);
256 if (result != NFC_ERROR_NONE) {
257 LOGE("nfc_manager_set_activation failed");
261 __set_pending_status(true);
263 LOGE("nfc_manager_initialize FAIL!!!!");
268 LOGE("vconf_get_bool failed");
271 __update_title_onoff_obj(ug_data);
274 void __change_predefined_item_onoff_setting(void *data)
276 ugdata_t *ug_data = (ugdata_t *)data;
282 if (!vconf_get_bool(VCONFKEY_NFC_PREDEFINED_ITEM_STATE, &boolval)) {
283 LOGD("vconf_get_bool status [%d]", boolval);
287 VCONFKEY_NFC_PREDEFINED_ITEM_STATE,
288 VCONFKEY_NFC_PREDEFINED_ITEM_OFF))
289 LOGE("vconf_set_bool failed");
292 VCONFKEY_NFC_PREDEFINED_ITEM_STATE,
293 VCONFKEY_NFC_PREDEFINED_ITEM_ON))
294 LOGE("vconf_set_bool failed");
297 LOGE("vconf_get_bool failed");
303 static void __nfc_activation_completed_cb(nfc_error_e error,
306 ugdata_t *ug_data = (ugdata_t *)user_data;
308 g_assert(ug_data != NULL);
310 if (error != NFC_ERROR_NONE) {
311 LOGE("__nfc_activation_completed_cb failed");
313 /* show failure popup */
314 __nfc_activation_failed_popup(ug_data);
318 static void __nfc_activation_changed_cb(bool activated , void *user_data)
320 ugdata_t *ug_data = (ugdata_t *)user_data;
322 LOGD("nfc mode %s ", activated ? "ON" : "OFF");
324 nfc_manager_unset_activation_changed_cb();
326 /* nfc setting ui updated */
327 __set_pending_status(false);
329 __update_title_onoff_obj(ug_data);
331 if(__reply_to_launch_request(ug_data->service, APP_CONTROL_RESULT_SUCCEEDED) == true)
332 ug_destroy_me(ug_data->nfc_setting_ug);
335 static void __title_ns_on_off_clicked_cb(void *data, Evas_Object *obj,
338 gl_item_data *item_data = (gl_item_data *)data;
339 ugdata_t *ug_data = item_data->data;
341 if (ug_data == NULL) {
342 LOGE("data is null");
346 if (__get_pending_status())
349 if (ug_data->menu_type == MENU_NFC) {
350 __change_nfc_onoff_setting(ug_data);
354 static void __ug_layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv)
359 LOGE("data is null");
363 base = ug_get_layout(ug);
365 LOGE("ug_get_layout() return NULL");
370 evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND,
372 evas_object_show(base);
375 static void __ug_destroy_cb(ui_gadget_h ug, void *data)
378 LOGE("data is null");
383 ea_theme_style_set(EA_THEME_STYLE_DARK);
386 static void __popup_del_cb(void *data, Evas *e, Evas_Object *obj,
389 evas_object_event_callback_del(obj, EVAS_CALLBACK_DEL, __popup_del_cb);
392 static void __popup_back_cb(void *data, Evas_Object *obj,
395 evas_object_del(obj);
398 static void __popup_check_changed_cb(void *data, Evas_Object *obj,
401 Evas_Object *check = obj;
404 boolval = elm_check_state_get(check);
406 if(vconf_set_bool(SECURE_STORAGE_FIRST_TIME_POPUP_SHOW_KEY,
407 (const int)!boolval))
408 LOGE("vconf_set_bool failed");
411 static void __ok_btn_clicked_cb(void *data, Evas_Object *obj,
414 ugdata_t *ug_data = (ugdata_t *)data;
420 evas_object_del(ug_data->popup);
422 _ug_nfc_secure_storage_create(ug_data);
425 static void __create_secure_storage_comfirm_popup(void *data)
427 ugdata_t *ug_data = (ugdata_t *)data;
428 Evas_Object *layout, *popup, *check, *label, *btn1;
434 ug_data->popup = popup = elm_popup_add(ug_data->base_layout);
435 evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL,
436 __popup_del_cb, NULL);
437 ea_object_event_callback_add(popup, EA_CALLBACK_BACK,
438 __popup_back_cb, NULL);
440 elm_object_part_text_set(popup, "title,text",
441 IDS_NFC_SECURE_STORAGE_BODY);
443 label = elm_label_add(popup);
444 elm_label_line_wrap_set(label, ELM_WRAP_MIXED);
445 elm_object_text_set(label, IDS_NFC_SECURE_STORAGE_TIPS);
446 evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, 0.0);
447 evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL);
448 evas_object_show(label);
450 layout = elm_layout_add(ug_data->base_layout);
452 LOGE("layout is NULL");
456 elm_layout_file_set(layout, EDJ_FILE, "popup_with_check");
457 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND,
460 check = elm_check_add(popup);
461 // elm_object_style_set(check, "multiline");
462 elm_object_text_set(check, IDS_NFC_DO_NOT_SHOW_AGAIN);
463 elm_check_state_set(check, EINA_FALSE);
464 evas_object_size_hint_align_set(check, EVAS_HINT_FILL, EVAS_HINT_FILL);
465 evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND,
467 evas_object_smart_callback_add(check, "changed",
468 __popup_check_changed_cb, NULL);
469 evas_object_show(check);
471 elm_object_part_content_set(layout, "elm.swallow.content", label);
472 elm_object_part_content_set(layout, "elm.swallow.end", check);
474 evas_object_show(layout);
475 elm_object_content_set(popup, layout);
476 btn1 = elm_button_add(popup);
477 elm_object_style_set(btn1, "popup");
478 elm_object_text_set(btn1, IDS_OK);
479 elm_object_part_content_set(popup, "button1", btn1);
480 evas_object_smart_callback_add(btn1, "clicked", __ok_btn_clicked_cb,
483 evas_object_show(popup);
486 static void __pd_onoff_changed_cb(void *data, Evas_Object *obj,
489 gl_item_data *item_data = (gl_item_data *)data;
491 if (item_data->type == NFC_PREDEFINED_ITEM) {
492 __change_predefined_item_onoff_setting(item_data->data);
495 elm_genlist_item_update(pd_item);
497 LOGE("item_data->type error");
501 // get the state of item
502 static Eina_Bool __gl_state_get(void *data, Evas_Object *obj, const char *part)
504 Eina_Bool result = EINA_FALSE;
506 gl_item_data *item_data = (gl_item_data *)data;
509 LOGE("invalid parameter");
516 // callback for 'deletion'
517 static void __gl_del(void *data, Evas_Object *obj)
519 gl_item_data *item_data = (gl_item_data *)data;
521 if (item_data != NULL)
525 static void __gl_sel_activation(void *data, Evas_Object *obj,
528 Elm_Object_Item *item = (Elm_Object_Item *)event_info;
529 gl_item_data *item_data = (gl_item_data *)data;
533 elm_genlist_item_selected_set(item, 0);
535 if (!item || !item_data) {
536 LOGE("invalid parameter");
540 ug_data = item_data->data;
542 LOGE("invalid parameter");
546 if (item_data->type == NFC_PREDEFINED_ITEM) {
547 _ug_nfc_predefined_item_create(ug_data);
548 } else if (item_data->type == NFC_SECURE_STORAGE) {
551 if (!vconf_get_bool(SECURE_STORAGE_FIRST_TIME_POPUP_SHOW_KEY,
554 __create_secure_storage_comfirm_popup(ug_data);
556 _ug_nfc_secure_storage_create(ug_data);
561 static Evas_Object *__gl_content_get(void *data, Evas_Object *obj,
564 gl_item_data *item_data = (gl_item_data *)data;
566 Evas_Object *content = NULL;
569 //LOGD("part:%s", part);
572 LOGE("invalid parameter");
576 ug_data = item_data->data;
578 LOGE("invalid parameter");
582 if (!strcmp(part, "elm.icon")) {
583 if (item_data->type == NFC_PREDEFINED_ITEM) {
584 content = elm_check_add(obj);
585 evas_object_propagate_events_set(content, EINA_FALSE);
586 evas_object_smart_callback_add(content, "changed",
587 __pd_onoff_changed_cb, item_data);
589 if (!vconf_get_bool(VCONFKEY_NFC_PREDEFINED_ITEM_STATE,
590 &boolval) && boolval) {
591 elm_check_state_set(content, EINA_TRUE);
593 elm_check_state_set(content, EINA_FALSE);
596 elm_object_style_set(content, "on&off");
600 else if (!strncmp(part, "elm.icon.2", strlen(part))) {
601 Evas_Object *tg = NULL;
603 content = elm_layout_add(obj);
604 elm_layout_theme_set(content, "layout", "list/C/type.3", "default");
605 tg = elm_check_add(content);
608 int ret = vconf_get_bool(VCONFKEY_NFC_STATE, &boolval);
610 if (boolval == false){
611 elm_check_state_set(tg, EINA_FALSE);
613 elm_check_state_set(tg, EINA_TRUE);
616 elm_object_style_set(tg, "on&off");
617 evas_object_propagate_events_set(tg, EINA_FALSE);
618 evas_object_smart_callback_add(tg, "changed", __title_ns_on_off_clicked_cb, item_data);
620 evas_object_show(tg);
622 elm_layout_content_set(content, "elm.swallow.content", tg);
623 ug_data->ns_on_off = tg;
625 __update_title_onoff_obj(ug_data);
633 static char *__gl_text_get(void *data, Evas_Object *obj,
636 gl_item_data *item_data = (gl_item_data *)data;
640 //LOGD("part:%s", part);
642 // label for 'elm.text' part
644 LOGE("invalid parameter");
648 if (!strcmp(part, "elm.text.1")) {
649 if (item_data->type == NFC_PREDEFINED_ITEM) {
650 text = strdup(IDS_USE_NFC_IN_HOME);
651 } else if (item_data->type == NFC_SECURE_STORAGE) {
652 text = strdup(IDS_NFC_SECURE_STORAGE_BODY);
654 } else if (!strcmp(part, "elm.text.2")) {
655 if (item_data->type == NFC_PREDEFINED_ITEM) {
656 app_info_h app_info = NULL;
659 app_id = vconf_get_str(VCONFKEY_NFC_PREDEFINED_ITEM);
664 if (APP_MANAGER_ERROR_NONE == app_info_create(app_id,
666 if (APP_MANAGER_ERROR_NONE !=
667 app_info_get_label(app_info, &text))
668 _ug_nfc_setting_db_get_pkgName(app_id, &text);
670 _ug_nfc_setting_db_get_pkgName(app_id, &text);
674 app_info_destroy(app_info);
676 } else if (item_data->type == NFC_SECURE_STORAGE) {
677 if (! vconf_get_int(VCONFKEY_NFC_WALLET_MODE, &intval)){
678 if (intval == VCONFKEY_NFC_WALLET_MODE_MANUAL)
679 text = strdup(IDS_NFC_SECURE_STORAGE_ITEM_MAN);
681 text = strdup(IDS_NFC_SECURE_STORAGE_ITEM_AUTO);
683 LOGE("vconf_get_int failed");
684 text = strdup(IDS_NFC_SECURE_STORAGE_ITEM_MAN);
688 else if (!strncmp(part, "elm.text.main.left", strlen(part))) {
689 text = strdup(IDS_NFC_NFC);
695 static char *__gl_text_get_des(void *data, Evas_Object *obj,
698 int index = (int) data;
701 //LOGD("index:%d", index);
704 text = strdup(IDS_NFC_DESCRIPTION_MSG);
705 } else if (index == 1) {
706 text = strdup(IDS_PREDEFINED_ITEM_DESCRIPTION_MSG);
707 } else if (index == 2) {
708 text = strdup(IDS_NFC_S_BEAM_DESCRIPTION_MSG);
713 static void __nfc_sel(void *data, Evas_Object *obj, void *event_info)
715 __title_ns_on_off_clicked_cb(data, obj, event_info);
717 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
720 static Evas_Object *__create_nfc_setting_list(void *data)
722 ugdata_t *ug_data = (ugdata_t *)data;
723 Evas_Object *genlist = NULL;
724 Elm_Object_Item* separator = NULL;
729 genlist = elm_genlist_add(ug_data->base_naviframe);
730 if (genlist == NULL) {
731 LOGE("genlist is null");
734 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
736 itc_sep.item_style = "dialogue/separator";
737 itc_sep.func.text_get = NULL;
738 itc_sep.func.content_get = NULL;
739 itc_sep.func.state_get = NULL;
740 itc_sep.func.del = NULL;
742 itc_sep_help.item_style = "dialogue/separator.2";
743 itc_sep_help.func.text_get = NULL;
744 itc_sep_help.func.content_get = NULL;
745 itc_sep_help.func.state_get = NULL;
746 itc_sep_help.func.del = NULL;
748 itc_helptext.item_style = "multiline_sub";
749 itc_helptext.func.text_get = __gl_text_get_des;
750 itc_helptext.func.content_get = NULL;
751 itc_helptext.func.state_get = NULL;
752 itc_helptext.func.del = NULL;
754 itc_2text1con.item_style = "dialogue/2text.1icon.10";
755 itc_2text1con.func.text_get = __gl_text_get;
756 itc_2text1con.func.content_get = __gl_content_get;
757 itc_2text1con.func.state_get = __gl_state_get;
758 itc_2text1con.func.del = __gl_del;
760 itc_2text.item_style = "dialogue/2text";
761 itc_2text.func.text_get = __gl_text_get;
762 itc_2text.func.content_get = NULL;
763 itc_2text.func.state_get = NULL;
764 itc_2text.func.del = __gl_del;
766 itc_onoff.item_style = "1line";
767 itc_onoff.func.text_get = __gl_text_get;
768 itc_onoff.func.content_get = __gl_content_get;
769 itc_onoff.func.state_get = NULL;
770 itc_onoff.func.del = __gl_del;
772 gl_item_data *item_data = NULL;
773 static Elm_Object_Item *onoff_item;
775 item_data = (gl_item_data *)g_malloc0((gint)sizeof(gl_item_data));
780 item_data->data = ug_data;
781 onoff_item = elm_genlist_item_append(genlist, &itc_onoff,
782 (void *) item_data, NULL, ELM_GENLIST_ITEM_NONE,
783 __nfc_sel, (void *) item_data);
784 elm_object_item_signal_emit(onoff_item, "elm,state,top", "");
787 /* NFC Help Text + SEPARATOR */
788 static Elm_Object_Item *help_item;
789 help_item = elm_genlist_item_append(genlist, &itc_helptext, (void *)0,
790 NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
791 elm_genlist_item_select_mode_set(help_item,
792 ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
793 elm_object_item_access_unregister(help_item);
795 /* NFC Secure storage */
797 if (csc_feature_get_bool(CSC_FEATURE_DEF_BOOL_NFC_CARD_ESE_DISABLE)
798 != CSC_FEATURE_BOOL_TRUE) {
799 gl_item_data *item_data = NULL;
801 LOGD("NFC Secure storage added");
802 item_data = (gl_item_data *)g_malloc0((gint)sizeof(gl_item_data));
805 item_data->data = ug_data;
806 item_data->type = NFC_SECURE_STORAGE;
807 ss_item = elm_genlist_item_append(genlist, &itc_2text,
808 (void *) item_data, NULL, ELM_GENLIST_ITEM_NONE,
809 __gl_sel_activation, (void *) item_data);
813 /* Predefined item setting + SEPARATOR */
814 if (_ug_nfc_check_predefined_item_available()) {
815 gl_item_data *item_data = NULL;
817 LOGD("NFC predefined item added");
818 item_data = (gl_item_data *)g_malloc0((gint)sizeof(gl_item_data));
821 item_data->type = NFC_PREDEFINED_ITEM;
822 item_data->data = ug_data;
823 pd_item = elm_genlist_item_append(genlist,
826 NULL, ELM_GENLIST_ITEM_NONE,
827 __gl_sel_activation, (void *)item_data);
830 separator = elm_genlist_item_append(genlist, &itc_sep_help,
831 NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
832 elm_genlist_item_select_mode_set(separator,
833 ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
834 elm_object_item_access_unregister(separator);
837 elm_genlist_item_append(genlist, &itc_helptext, (void *)1,
838 NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
841 /* set the visibility of predefine and storage item */
842 if (!vconf_get_bool(VCONFKEY_NFC_STATE, &boolval) && !boolval) {
843 if (vconf_set_bool(VCONFKEY_NFC_PREDEFINED_ITEM_STATE,
844 VCONFKEY_NFC_PREDEFINED_ITEM_OFF)) {
845 LOGE("vconf_set_bool failed");
849 elm_object_item_disabled_set(pd_item, EINA_TRUE);
851 elm_object_item_disabled_set(ss_item, EINA_TRUE);
854 evas_object_show(genlist);
859 static Evas_Object *__create_bg(Evas_Object *parent, char *style)
861 Evas_Object *bg = elm_bg_add(parent);
863 evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
866 elm_object_style_set(bg, style);
868 elm_win_resize_object_add(parent, bg);
870 evas_object_show(bg);
875 static Evas_Object *__create_main_layout(Evas_Object *parent)
882 layout = elm_layout_add(parent);
884 elm_layout_theme_set(layout, "layout", "application", "default");
886 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
888 evas_object_show(layout);
893 static void *__ug_nfc_setting_create(ui_gadget_h ug, enum ug_mode mode,
894 app_control_h service, void *priv)
896 ugdata_t *ug_data = (ugdata_t *)priv;
897 Evas_Object *parent = NULL;
898 Evas_Object *nfc_setting_list = NULL;
899 Evas_Object *l_button = NULL;
901 char *keyword = NULL;
905 /* set text domain */
906 bindtextdomain(NFCUG_TEXT_DOMAIN, NFCUG_LOCALEDIR);
908 /* create base view */
909 parent = ug_get_parent_layout(ug);
912 ug_data->ug_win_main = parent;
913 evas_object_show(ug_data->ug_win_main);
914 ug_data->nfc_setting_ug = ug;
916 ug_data->base_layout = __create_main_layout(ug_data->ug_win_main);
917 ug_data->bg = __create_bg(ug_data->ug_win_main, "group_list");
918 elm_object_part_content_set(ug_data->base_layout, "elm.swallow.bg",
921 ug_data->base_naviframe = elm_naviframe_add(ug_data->base_layout);
922 elm_object_part_content_set(ug_data->base_layout, "elm.swallow.content",
923 ug_data->base_naviframe);
924 evas_object_show(ug_data->base_naviframe);
926 ug_data->service = service;
928 /* parse parameter */
929 app_control_get_extra_data(service, "type", &type);
930 app_control_get_extra_data(service, "keyword", &keyword);
933 LOGD("type [%s]", type);
935 if (strncmp(type, "nfc", strlen("nfc")) == 0) {
936 _ug_nfc_setting_db_open();
937 nfc_setting_list = __create_nfc_setting_list(ug_data);
938 ug_data->menu_type = MENU_NFC;
940 } else if (keyword) {
941 LOGD("keyword [%s]", keyword);
943 if (strncmp(keyword, "IDS_NFC_BODY_NFC", strlen("IDS_NFC_BODY_NFC")) == 0 ||
944 strncmp(keyword, "IDS_NFC_MBODY_NFC_SECURE_STORAGE",
945 strlen("IDS_NFC_MBODY_NFC_SECURE_STORAGE"))){
946 _ug_nfc_setting_db_open();
947 nfc_setting_list = __create_nfc_setting_list(ug_data);
948 ug_data->menu_type = MENU_NFC;
952 if (nfc_setting_list == NULL) {
957 ug_data->ns_genlist = nfc_setting_list;
960 l_button = elm_button_add(ug_data->base_naviframe);
961 elm_object_style_set(l_button, "naviframe/back_btn/default");
962 ea_object_event_callback_add(ug_data->base_naviframe, EA_CALLBACK_BACK,
963 ea_naviframe_back_cb, NULL);
965 if (ug_data->menu_type == MENU_NFC) {
966 ug_data->base_navi_it = elm_naviframe_item_push(
967 ug_data->base_naviframe,
974 elm_naviframe_item_pop_cb_set(ug_data->base_navi_it, __back_clicked_cb,
979 return ug_data->base_layout;
982 static void __ug_nfc_setting_destroy(ui_gadget_h ug, app_control_h service,
985 ugdata_t *ug_data = (ugdata_t *)priv;
989 if ((ug_data == NULL) || (ug == NULL))
992 if (nfc_manager_deinitialize() != NFC_ERROR_NONE)
993 LOGE("nfc_manager_deinitialize failed");
995 evas_object_del(ug_get_layout(ug));
1000 static void __ug_nfc_setting_start(ui_gadget_h ug, app_control_h service,
1003 ugdata_t *ug_data = (ugdata_t *)priv;
1007 /* check nfc-device*/
1008 if (!nfc_manager_is_supported()) {
1009 LOGE("It is not nfc device >>>>");
1010 __show_app_error_popup(ug_data);
1013 if (NFC_ERROR_NONE != nfc_manager_initialize())
1014 LOGE("nfc_manager_initialize FAIL!!!!");
1019 static void __ug_nfc_setting_pause(ui_gadget_h ug, app_control_h service,
1026 static void __ug_nfc_setting_resume(ui_gadget_h ug, app_control_h service,
1034 static void __ug_nfc_setting_message(ui_gadget_h ug, app_control_h msg,
1035 app_control_h service, void *priv)
1041 static void __ug_nfc_setting_event(ui_gadget_h ug, enum ug_event event,
1042 app_control_h service, void *priv)
1048 UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
1050 ugdata_t *ug_data; // User defined private data
1052 LOGD("UG_MODULE_INIT!!");
1057 ug_data = (ugdata_t *)g_malloc0((gint)sizeof(ugdata_t));
1061 ops->create = __ug_nfc_setting_create;
1062 ops->start = __ug_nfc_setting_start;
1063 ops->pause = __ug_nfc_setting_pause;
1064 ops->resume = __ug_nfc_setting_resume;
1065 ops->destroy = __ug_nfc_setting_destroy;
1066 ops->message = __ug_nfc_setting_message;
1067 ops->event = __ug_nfc_setting_event;
1068 ops->priv = ug_data;
1069 ops->opt = UG_OPT_INDICATOR_ENABLE;
1074 UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
1078 LOGD("UG_MODULE_EXIT!!");
1083 ug_data = ops->priv;