X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;ds=sidebyside;f=setting-phone%2Fsrc%2Fsetting-phone-language-region.c;h=69699697785acda9b6b4c13946171cc091c6ed9e;hb=afc9714340b742a66c09da720927ab8720498f44;hp=d07f50b27e23d3364f1f418221822f9487239ec1;hpb=4b48d9af7add3f99c194be63aa0f97c8f0f19f76;p=apps%2Fhome%2Fsettings.git diff --git a/setting-phone/src/setting-phone-language-region.c b/setting-phone/src/setting-phone-language-region.c index d07f50b..6969969 100755 --- a/setting-phone/src/setting-phone-language-region.c +++ b/setting-phone/src/setting-phone-language-region.c @@ -1,20 +1,27 @@ /* * setting - * Copyright (c) 2012 Samsung Electronics Co., Ltd. * - * Licensed under the Flora License, Version 1.1 (the License); + * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. + * + * Contact: MyoungJune Park + * + * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://floralicense.org/license/ + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, + * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. + * */ #include +#include +#include + static int setting_phone_language_region_create(void *cb); static int setting_phone_language_region_destroy(void *cb); @@ -28,20 +35,284 @@ setting_view setting_view_phone_language_region = { .cleanup = setting_phone_language_region_cleanup, }; -static void setting_phone_lang_click_softkey_cancel_cb(void *data, - Evas_Object *obj, - void *event_info); + + + +/** + * @brief Callback of language change flush timer + * + * @param cb The view data passed between all callbacks + * @return #1 means call it again, else means call it only once + */ +static Eina_Bool setting_phone_language_region_flush_timer_cb(void * cb) +{ + SETTING_TRACE_BEGIN; + retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER); + SettingPhoneUG *ad = (SettingPhoneUG *) cb; + + elm_config_all_flush(); + ad->lang_flush_timer = NULL; + + SETTING_TRACE_END; + return EINA_FALSE; +} + + +static Eina_Bool setting_phone_language_region_freeze_event_timer_cb(void * cb) +{ + SETTING_TRACE_BEGIN; + retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER); + SettingPhoneUG *ad = (SettingPhoneUG *) cb; + + evas_object_freeze_events_set(ad->navi_bar, EINA_FALSE); + + ad->event_freeze_timer = NULL; + SETTING_TRACE_END; + return EINA_FALSE; +} +/** + * @brief create keyboard ug by app control + * + * @param ad The view data passed + */ +static void setting_phone_lang_create_keyboard_ug(SettingPhoneUG *ad) +{ + SETTING_TRACE_BEGIN; + ret_if(ad == NULL); + + if(app_launcher("isfsetting-efl") == 0) + { + ad->event_freeze_timer = ecore_timer_add(1, setting_phone_language_region_freeze_event_timer_cb, ad); + evas_object_freeze_events_set(ad->navi_bar, EINA_TRUE); + } +} + +/** + * @brief create voice recognition ug by app control + * + */ +static void setting_phone_lang_create_voice_recognition_ug(SettingPhoneUG *ad) +{ + SETTING_TRACE_BEGIN; + if(app_launcher("setting-voice-efl|show_what:stt") == 0) + { + ad->event_freeze_timer = ecore_timer_add(1, setting_phone_language_region_freeze_event_timer_cb, ad); + evas_object_freeze_events_set(ad->navi_bar, EINA_TRUE); + } +} + +/** + * @brief create text-to-speech ug by app control + * + */ +static void setting_phone_lang_create_text_speech_ug(SettingPhoneUG *ad) +{ + SETTING_TRACE_BEGIN; + if(app_launcher("setting-voice-efl|show_what:tts") == 0) + { + ad->event_freeze_timer = ecore_timer_add(1, setting_phone_language_region_freeze_event_timer_cb, ad); + evas_object_freeze_events_set(ad->navi_bar, EINA_TRUE); + } +} + +/** + * @brief create readout(old name : drivingmode) ug by app control + * + * @param ad The view data passed + */ +static void setting_phone_lang_create_readout_ug(SettingPhoneUG *ad) +{ + SETTING_TRACE_BEGIN; + ret_if(ad == NULL); + + if(app_launcher("setting-drivingmode-efl") == 0) + { + ad->event_freeze_timer = ecore_timer_add(1, setting_phone_language_region_freeze_event_timer_cb, ad); + evas_object_freeze_events_set(ad->navi_bar, EINA_TRUE); + } +} + +/** + * @brief Callback of cancel button + * + * @param cb The view data passed between all callbacks + */ +static Eina_Bool setting_phone_lang_click_softkey_cancel_cb(void *data, Elm_Object_Item *it) +{ + SETTING_TRACE_BEGIN; + retvm_if(data == NULL, EINA_FALSE, "Data parameter is NULL"); + SettingPhoneUG *ad = (SettingPhoneUG *) data; + + Eina_Bool is_freezed = evas_object_freeze_events_get(ad->navi_bar); + SETTING_TRACE_DEBUG("is_freezed : %d", is_freezed); + if(is_freezed) + return EINA_FALSE; + + ug_destroy_me(ad->ug); + return EINA_FALSE; +} + +/** + * @brief Callback of view cleanup + * + * @param cb The view data passed between all callbacks + * @return #1 on success, else on failed + */ static void setting_phone_lang_item_Gendial_mouse_up_cb(void *data, - Evas_Object *obj, - void *event_info); + Evas_Object *obj, + void *event_info) +{ + SETTING_TRACE_BEGIN; + setting_retm_if(!data || !event_info, "data||event_info is NULL"); + SettingPhoneUG *ad = (SettingPhoneUG *) data; + Elm_Object_Item *item = (Elm_Object_Item *) event_info; + elm_genlist_item_selected_set(item, 0); + Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) elm_object_item_data_get(item); + SETTING_TRACE("clicking item[%s]", _(list_item->keyStr)); + + if(!safeStrCmp("IDS_ST_HEADER_DISPLAY_LANGUAGE", list_item->keyStr)) + { + setting_view_change(&setting_view_phone_language_region, + &setting_view_phone_display_language, ad); + } + else if(!safeStrCmp(_(REGION_FORMAT_LOWER), list_item->keyStr)) + { + setting_view_change(&setting_view_phone_language_region, + &setting_view_phone_region_format, ad); + } + else if(!safeStrCmp("IDS_ST_BODY_KEYBOARD", list_item->keyStr)) + { + setting_phone_lang_create_keyboard_ug(ad); + } + else if(!safeStrCmp("IDS_VC_HEADER_VOICE_RECOGNITION", list_item->keyStr)) + { + setting_phone_lang_create_voice_recognition_ug(ad); + } + else if(!safeStrCmp("IDS_ST_HEADER_TEXT_TO_SPEECH", list_item->keyStr)) + { + setting_phone_lang_create_text_speech_ug(ad); + } + else if(!safeStrCmp("IDS_VC_MBODY_NOTIFICATION_READ_OUT", list_item->keyStr)) + { + setting_phone_lang_create_readout_ug(ad); + } +} +#if 0 +/** + * @brief Callback of readout vconf key + * + */ + #if SUPPORT_DRIVINGMODE +static void setting_phone_lang_vconf_change_cb(keynode_t *key, void *data) +{ + SETTING_TRACE_BEGIN; + setting_retm_if(NULL == key, "key is NULL"); + setting_retm_if(NULL == data, "data is NULL"); + SettingPhoneUG *ad = (SettingPhoneUG *)data; + char *vconf_name = vconf_keynode_get_name(key); + if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_DRIVINGMODE_DRIVINGMODE) + || !safeStrCmp(vconf_name, VCONFKEY_SETAPPL_DRIVINGMODE_INCOMINGCALL) + || !safeStrCmp(vconf_name, VCONFKEY_SETAPPL_DRIVINGMODE_MESSAGE) + || !safeStrCmp(vconf_name, VCONFKEY_SETAPPL_DRIVINGMODE_NEWEMAILS) + || !safeStrCmp(vconf_name, VCONFKEY_SETAPPL_DRIVINGMODE_SCHEDULE) + || !safeStrCmp(vconf_name, VCONFKEY_SETAPPL_DRIVINGMODE_ALARM)) { + + //speech sub update + if (ad->data_readout) { + G_FREE(ad->data_readout->sub_desc); + ad->data_readout->sub_desc = get_pa_noti_readout_str(); + elm_object_item_data_set(ad->data_readout->item, ad->data_readout); + elm_genlist_item_update(ad->data_readout->item); + } + }else { + SETTING_TRACE_ERROR("vconf_name is error"); + } +} +#endif + +static void setting_phone_lang_regist_readout_key(void *data) +{ + setting_retm_if(NULL == data, "data is NULL"); +#if SUPPORT_DRIVINGMODE + SettingPhoneUG *ad = (SettingPhoneUG *)data; + int ret = 0; + ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_DRIVINGMODE_DRIVINGMODE,setting_phone_lang_vconf_change_cb, ad); + if (ret != 0) { + SETTING_TRACE_ERROR("call vconf_notify_key_changed failed"); + } + ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_DRIVINGMODE_INCOMINGCALL,setting_phone_lang_vconf_change_cb, ad); + if (ret != 0) { + SETTING_TRACE_ERROR("call vconf_notify_key_changed failed"); + } + ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_DRIVINGMODE_MESSAGE,setting_phone_lang_vconf_change_cb, ad); + if (ret != 0) { + SETTING_TRACE_ERROR("call vconf_notify_key_changed failed"); + } + ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_DRIVINGMODE_NEWEMAILS,setting_phone_lang_vconf_change_cb, ad); + if (ret != 0) { + SETTING_TRACE_ERROR("call vconf_notify_key_changed failed"); + } + ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_DRIVINGMODE_SCHEDULE,setting_phone_lang_vconf_change_cb, ad); + if (ret != 0) { + SETTING_TRACE_ERROR("call vconf_notify_key_changed failed"); + } + ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_DRIVINGMODE_ALARM,setting_phone_lang_vconf_change_cb, ad); + if (ret != 0) { + SETTING_TRACE_ERROR("call vconf_notify_key_changed failed"); + } +#endif +} + +static void setting_phone_lang_unregist_readout_key() +{ +#if SUPPORT_DRIVINGMODE + int ret = 0; + ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_DRIVINGMODE_DRIVINGMODE, + setting_phone_lang_vconf_change_cb); + if (ret != 0) { + SETTING_TRACE_ERROR("call vconf_ignore_key_changed failed"); + } + ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_DRIVINGMODE_INCOMINGCALL, + setting_phone_lang_vconf_change_cb); + if (ret != 0) { + SETTING_TRACE_ERROR("call vconf_ignore_key_changed failed"); + } + ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_DRIVINGMODE_MESSAGE, + setting_phone_lang_vconf_change_cb); + if (ret != 0) { + SETTING_TRACE_ERROR("call vconf_ignore_key_changed failed"); + } + ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_DRIVINGMODE_NEWEMAILS, + setting_phone_lang_vconf_change_cb); + if (ret != 0) { + SETTING_TRACE_ERROR("call vconf_ignore_key_changed failed"); + } + ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_DRIVINGMODE_SCHEDULE, + setting_phone_lang_vconf_change_cb); + if (ret != 0) { + SETTING_TRACE_ERROR("call vconf_ignore_key_changed failed"); + } + ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_DRIVINGMODE_ALARM, + setting_phone_lang_vconf_change_cb); + if (ret != 0) { + SETTING_TRACE_ERROR("call vconf_ignore_key_changed failed"); + } +#endif +} +#endif /* *************************************************** * - *basic func + * main view func * ***************************************************/ - +/** + * @brief Callback of view creating + * + * @param cb The view data passed between all callbacks + * @return #1 on success, else on failed + */ static int setting_phone_language_region_create(void *cb) { SETTING_TRACE_BEGIN; @@ -51,21 +322,29 @@ static int setting_phone_language_region_create(void *cb) SettingPhoneUG *ad = (SettingPhoneUG *) cb; Evas_Object *scroller = NULL; - char *title = _(KeyStr_LanguageRegion); + int region_automatic; + + ad->lang_change = EINA_FALSE; + + char *title = "IDS_ST_HEADER_LANGUAGE_AND_INPUT"; ad->ly_language = setting_create_layout_navi_bar_genlist(ad->win_main_layout, ad->win_get, title, _("IDS_COM_BODY_BACK"), NULL, - setting_phone_lang_click_softkey_cancel_cb, + NULL, NULL, ad, &scroller, &(ad->navi_bar)); + Elm_Object_Item *navi_it = elm_naviframe_top_item_get(ad->navi_bar); + elm_naviframe_item_pop_cb_set(navi_it, setting_phone_lang_click_softkey_cancel_cb, ad); retv_if(ad->ly_language == NULL, SETTING_RETURN_FAIL); ad->gl_lang_region = scroller; - + ad->lang_region_navi_it = navi_it; + SETTING_TRACE("navi_it:%p", navi_it); + evas_object_smart_callback_add(ad->gl_lang_region, "realized", __gl_realized_cb, NULL); Elm_Object_Item *item = NULL; item = - elm_genlist_item_append(scroller, &(ad->itc_seperator), + elm_genlist_item_append(scroller, &itc_seperator, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); @@ -78,10 +357,11 @@ static int setting_phone_language_region_create(void *cb) ad, SWALLOW_Type_INVALID, NULL, NULL, 0, "IDS_ST_HEADER_DISPLAY_LANGUAGE", - pa_display_lang, + _(pa_display_lang), NULL); if (ad->data_display_language) { ad->data_display_language->userdata = ad; + ad->data_display_language->group_style = SETTING_GROUP_STYLE_TOP; } else { SETTING_TRACE_ERROR("ad->data_display_language is NULL"); } @@ -93,30 +373,101 @@ static int setting_phone_language_region_create(void *cb) ("[Error] get value of VCONFKEY_REGIONFORMAT fail."); } ad->prev_locale = (char *)g_strdup(pa_region); + //check if the region is set to auto + char *region_format_str = NULL; + vconf_get_bool(VCONFKEY_SETAPPL_REGION_AUTOMATIC_BOOL, ®ion_automatic); + if(region_automatic == 1) + { + region_format_str = (char*)g_strdup(_("IDS_COM_BODY_AUTOMATIC")); + } else { + region_format_str = setting_phone_lang_get_region_str(pa_region); + } ad->data_region_fmt = setting_create_Gendial_field_def(scroller, &(ad->itc_2text_2), setting_phone_lang_item_Gendial_mouse_up_cb, ad, SWALLOW_Type_INVALID, NULL, NULL, 0, - "IDS_ST_BODY_REGION", - setting_phone_lang_get_region_str - (pa_region), NULL); + _(REGION_FORMAT_LOWER), + region_format_str, NULL); if (ad->data_region_fmt) { ad->data_region_fmt->userdata = ad; + ad->data_region_fmt->group_style = SETTING_GROUP_STYLE_BOTTOM; } else { SETTING_TRACE_ERROR("ad->data_region_fmt is NULL"); } - char *example_desc = - setting_phone_lang_get_example_desc(pa_region, ad); - ad->data_region_fmt_example = + char *example_desc = setting_phone_lang_get_example_desc(pa_region, ad); + item = elm_genlist_item_append(scroller, &(itc_sep_line), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL); + elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); + ad->data_region_fmt_example = setting_create_Gendial_field_def(scroller, &itc_multiline_text, + NULL, + NULL, + SWALLOW_Type_LAYOUT_SPECIALIZTION_X, + NULL, NULL, 0, example_desc, NULL, NULL); + elm_genlist_item_select_mode_set(ad->data_region_fmt_example->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); + + /* keyboard */ + ad->data_title_keyboard = setting_create_Gendial_field_titleItem(scroller, &itc_group_item, _("IDS_ST_BODY_KEYBOARD"), NULL); + ad->data_keyboard = + setting_create_Gendial_field_def(scroller, &(ad->itc_1text), + setting_phone_lang_item_Gendial_mouse_up_cb, + ad, SWALLOW_Type_INVALID, NULL, + NULL, 0, "IDS_ST_BODY_KEYBOARD", + NULL, NULL); +#if 0 + /* speech */ + ADD_GL_SEPARATOR(scroller); + ad->data_title_speech = setting_create_Gendial_field_titleItem(scroller, &itc_group_item, _("IDS_ST_BODY_SPEECH"), NULL); + + //voice recognition + ad->data_voice_recog = + setting_create_Gendial_field_def(scroller, &(ad->itc_1text), + setting_phone_lang_item_Gendial_mouse_up_cb, + ad, SWALLOW_Type_INVALID, NULL, + NULL, 0, "IDS_VC_HEADER_VOICE_RECOGNITION", + NULL, NULL); + if (ad->data_voice_recog) { + ad->data_voice_recog->userdata = ad; + ad->data_voice_recog->group_style = SETTING_GROUP_STYLE_TOP; + } else { + SETTING_TRACE_ERROR("ad->data_voice_recog is NULL"); + } + + //text-to-speech + ad->data_text_speech = + setting_create_Gendial_field_def(scroller, &(ad->itc_1text), + setting_phone_lang_item_Gendial_mouse_up_cb, + ad, SWALLOW_Type_INVALID, NULL, + NULL, 0, "IDS_ST_HEADER_TEXT_TO_SPEECH", + NULL, NULL); + if (ad->data_text_speech) { + ad->data_text_speech->userdata = ad; + ad->data_text_speech->group_style = SETTING_GROUP_STYLE_CENTER; + } else { + SETTING_TRACE_ERROR("ad->data_text_speech is NULL"); + } + + //notification readout + char* pa_noti_readout = get_pa_noti_readout_str(); + ad->data_readout = setting_create_Gendial_field_def(scroller, - &(ad->itc_bg_1icon), NULL, - ad, - SWALLOW_Type_LAYOUT_SPECIALIZTION_X, + &(ad->itc_2text_2), + setting_phone_lang_item_Gendial_mouse_up_cb, + ad, SWALLOW_Type_INVALID, NULL, NULL, 0, - example_desc, NULL, NULL); + "IDS_VC_MBODY_NOTIFICATION_READ_OUT", + pa_noti_readout, + NULL); + if (ad->data_readout) { + ad->data_readout->userdata = ad; + ad->data_readout->group_style = SETTING_GROUP_STYLE_BOTTOM; + } else { + SETTING_TRACE_ERROR("ad->data_readout is NULL"); + } + G_FREE(pa_noti_readout); + setting_phone_lang_regist_readout_key(ad); +#endif if (pa_region) { FREE(pa_region); } @@ -124,10 +475,19 @@ static int setting_phone_language_region_create(void *cb) FREE(example_desc); } - setting_view_phone_language_region.is_create = 1; + + setting_view_phone_language_region.is_create = 1; return SETTING_RETURN_SUCCESS; } + + +/** + * @brief Callback of view destroy + * + * @param cb The view data passed between all callbacks + * @return #1 on success, else on failed + */ static int setting_phone_language_region_destroy(void *cb) { SETTING_TRACE_BEGIN; @@ -136,10 +496,24 @@ static int setting_phone_language_region_destroy(void *cb) SettingPhoneUG *ad = (SettingPhoneUG *) cb; + evas_object_smart_callback_del(ad->gl_lang_region, "realized", __gl_realized_cb); + + //setting_phone_lang_unregist_readout_key(); + if (ad->ly_language != NULL) { evas_object_del(ad->ly_language); ad->ly_language = NULL; + if (ad->lang_flush_timer) { + ecore_timer_del(ad->lang_flush_timer); + ad->lang_flush_timer = NULL; + } + + if (ad->event_freeze_timer) { + ecore_timer_del(ad->event_freeze_timer); + ad->event_freeze_timer = NULL; + } + if (ad->pattern_generator) { udatpg_close(ad->pattern_generator); ad->pattern_generator = NULL; @@ -150,6 +524,14 @@ static int setting_phone_language_region_destroy(void *cb) return SETTING_RETURN_SUCCESS; } + + +/** + * @brief Callback of view update + * + * @param cb The view data passed between all callbacks + * @return #1 on success, else on failed + */ static int setting_phone_language_region_update(void *cb) { SETTING_TRACE_BEGIN; @@ -160,103 +542,88 @@ static int setting_phone_language_region_update(void *cb) if (ad->ly_language != NULL) { evas_object_show(ad->ly_language); + //refresh the title + elm_object_item_text_set(ad->lang_region_navi_it, _("IDS_ST_HEADER_LANGUAGE_AND_INPUT")); //"IDS_ST_BODY_LANGUAGE_AND_KEYBOARD")); + + if (ad->data_display_language) { + G_FREE(ad->data_display_language->sub_desc); + ad->data_display_language->sub_desc = get_pa_display_language_str(); + elm_object_item_data_set(ad->data_display_language->item, ad->data_display_language); + elm_genlist_item_update(ad->data_display_language->item); + } + //refresh region ex + char *pa_region = vconf_get_str(VCONFKEY_REGIONFORMAT); + if (pa_region == NULL) { + SETTING_TRACE_ERROR + ("[Error] get value of VCONFKEY_REGIONFORMAT fail."); + return SETTING_RETURN_FAIL; + } + + if (ad->data_region_fmt) { + int region_automatic = 1; + int ret = vconf_get_bool(VCONFKEY_SETAPPL_REGION_AUTOMATIC_BOOL, ®ion_automatic); + if (ret == VCONF_ERROR) { + SETTING_TRACE_ERROR("get vconf region automatic err."); + } + + if(region_automatic == 1) + { + ad->data_region_fmt->sub_desc = (char*)g_strdup(_("IDS_COM_BODY_AUTOMATIC")); + } else { + ad->data_region_fmt->sub_desc = setting_phone_lang_get_region_str(pa_region); + } + G_FREE(ad->data_region_fmt->keyStr); + ad->data_region_fmt->keyStr = (char *)g_strdup(_(REGION_FORMAT_LOWER)); + elm_object_item_data_set(ad->data_region_fmt->item, ad->data_region_fmt); + elm_genlist_item_update(ad->data_region_fmt->item); + } + if (ad->data_region_fmt_example) { + char *example_desc = setting_phone_lang_get_example_desc(pa_region, ad); + G_FREE(ad->data_region_fmt_example->keyStr); + ad->data_region_fmt_example->keyStr = (char *)g_strdup(example_desc); + FREE(example_desc); + elm_object_item_data_set(ad->data_region_fmt_example->item, ad->data_region_fmt_example); + elm_genlist_item_update(ad->data_region_fmt_example->item); + } + if (ad->data_title_keyboard) { + G_FREE(ad->data_title_keyboard->keyStr); + ad->data_title_keyboard->keyStr = (char *)g_strdup(_("IDS_ST_BODY_KEYBOARD")); + elm_object_item_data_set(ad->data_title_keyboard->item, ad->data_title_keyboard); + elm_genlist_item_update(ad->data_title_keyboard->item); + } + if (ad->data_title_speech) { + G_FREE(ad->data_title_speech->keyStr); + ad->data_title_speech->keyStr = (char *)g_strdup(_("IDS_ST_BODY_SPEECH")); + elm_object_item_data_set(ad->data_title_speech->item, ad->data_title_speech); + elm_genlist_item_update(ad->data_title_speech->item); + } + if (ad->data_readout) { + G_FREE(ad->data_readout->sub_desc); + ad->data_readout->sub_desc = get_pa_noti_readout_str(); + elm_object_item_data_set(ad->data_readout->item, ad->data_readout); + elm_genlist_item_update(ad->data_readout->item); + } - /* setting_update_chk_status(ad->chk_lang, INT_SLP_SETTING_LANG); */ + FREE(pa_region); } + if (ad->lang_change) { + ad->lang_flush_timer = ecore_timer_add(0.3, setting_phone_language_region_flush_timer_cb, ad); + ad->lang_change = EINA_FALSE; + } return SETTING_RETURN_SUCCESS; } -static int setting_phone_language_region_cleanup(void *cb) -{ - SETTING_TRACE_BEGIN; - return SETTING_RETURN_SUCCESS; -} -/* *************************************************** - * - *general func - * - ***************************************************/ -/* *************************************************** - * - *call back func +/** + * @brief Callback of view cleanup * - ***************************************************/ - -static void -setting_phone_lang_click_softkey_cancel_cb(void *data, Evas_Object *obj, - void *event_info) -{ - SETTING_TRACE_BEGIN; - /* error check */ - retm_if(data == NULL, "Data parameter is NULL"); - - SettingPhoneUG *ad = (SettingPhoneUG *) data; - - ug_destroy_me(ad->ug); -} - -// 0 : automatic -void setting_phone_lang_change_lang_value(int ichk) -{ - SETTING_TRACE_BEGIN; - int err, ret; - - /** @todo ASSERT ( SCOPE CHECK ) */ - - Eina_List* list = setting_get_language_list(); - Eina_List* elist = NULL; - setting_lang_entry* pnode; - - char locale[128] = {0,}; - - EINA_LIST_FOREACH( list, elist, pnode) - { - if (pnode->number == ichk) { - snprintf(locale, 128, "%s", pnode->locale); - } - } - - SETTING_TRACE("table . locale >>>>>> :: %s ", locale); //en_US.UTF8 - - //if (ichk > 0) { - // CHECK 'AUTO' HERE - ret = setting_set_int_slp_key(INT_SLP_SETTING_LANG, ichk, &err); - - if (ichk > 0) - ret = vconf_set_str(VCONFKEY_LANGSET, locale); -} - -static void setting_phone_lang_item_Gendial_mouse_up_cb(void *data, - Evas_Object *obj, - void *event_info) + * @param cb The view data passed between all callbacks + * @return #1 on success, else on failed + */ +static int setting_phone_language_region_cleanup(void *cb) { SETTING_TRACE_BEGIN; - /* error check */ - setting_retm_if(data == NULL, "Data parameter is NULL"); - Elm_Object_Item *item = (Elm_Object_Item *) event_info; - elm_genlist_item_selected_set(item, 0); - Setting_GenGroupItem_Data *list_item = - (Setting_GenGroupItem_Data *) elm_object_item_data_get(item); - SETTING_TRACE("clicking item[%s]", _(list_item->keyStr)); - - SettingPhoneUG *ad = (SettingPhoneUG *) data; - - int ret = SETTING_RETURN_SUCCESS; - if(!safeStrCmp("IDS_ST_HEADER_DISPLAY_LANGUAGE", list_item->keyStr)) - { - ret = - setting_view_change(&setting_view_phone_language_region, - &setting_view_phone_display_language, - ad); - } - else if(!safeStrCmp("IDS_ST_BODY_REGION", list_item->keyStr)) - { - ret = - setting_view_change(&setting_view_phone_language_region, - &setting_view_phone_region_format, ad); - } + return SETTING_RETURN_SUCCESS; } -