tizen 2.3 release
[apps/home/settings.git] / setting-phone / src / setting-phone-language-region.c
1 /*
2  * setting
3  *
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
5  *
6  * Contact: MyoungJune Park <mj2004.park@samsung.com>
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  *
20  */
21 #include <setting-phone-language-region.h>
22 #include <setting-common-draw-widget.h>
23 #include <app_manager.h>
24
25
26 static int setting_phone_language_region_create(void *cb);
27 static int setting_phone_language_region_destroy(void *cb);
28 static int setting_phone_language_region_update(void *cb);
29 static int setting_phone_language_region_cleanup(void *cb);
30
31 setting_view setting_view_phone_language_region = {
32         .create = setting_phone_language_region_create,
33         .destroy = setting_phone_language_region_destroy,
34         .update = setting_phone_language_region_update,
35         .cleanup = setting_phone_language_region_cleanup,
36 };
37
38
39
40
41 /**
42  * @brief Callback of language change flush timer
43  *
44  * @param cb The view data passed between all callbacks
45  * @return #1 means call it again, else means call it only once
46  */
47 static Eina_Bool setting_phone_language_region_flush_timer_cb(void * cb)
48 {
49         SETTING_TRACE_BEGIN;
50         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
51         SettingPhoneUG *ad = (SettingPhoneUG *) cb;
52
53         elm_config_all_flush();
54         ad->lang_flush_timer = NULL;
55
56         SETTING_TRACE_END;
57         return EINA_FALSE;
58 }
59
60
61 static Eina_Bool setting_phone_language_region_freeze_event_timer_cb(void * cb)
62 {
63         SETTING_TRACE_BEGIN;
64         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
65         SettingPhoneUG *ad = (SettingPhoneUG *) cb;
66
67         evas_object_freeze_events_set(ad->navi_bar, EINA_FALSE);
68
69         ad->event_freeze_timer = NULL;
70         SETTING_TRACE_END;
71         return EINA_FALSE;
72 }
73 /**
74  * @brief create keyboard ug by app control
75  *
76  * @param ad The view data passed
77  */
78 static void setting_phone_lang_create_keyboard_ug(SettingPhoneUG *ad)
79 {
80         SETTING_TRACE_BEGIN;
81         ret_if(ad == NULL);
82
83         if(app_launcher("isfsetting-efl") == 0)
84         {
85                 ad->event_freeze_timer = ecore_timer_add(1, setting_phone_language_region_freeze_event_timer_cb, ad);
86                 evas_object_freeze_events_set(ad->navi_bar, EINA_TRUE);
87         }
88 }
89
90 /**
91  * @brief create voice recognition ug by app control
92  *
93  */
94 static void setting_phone_lang_create_voice_recognition_ug(SettingPhoneUG *ad)
95 {
96         SETTING_TRACE_BEGIN;
97         if(app_launcher("setting-voice-efl|show_what:stt") == 0)
98         {
99                 ad->event_freeze_timer = ecore_timer_add(1, setting_phone_language_region_freeze_event_timer_cb, ad);
100                 evas_object_freeze_events_set(ad->navi_bar, EINA_TRUE);
101         }
102 }
103
104 /**
105  * @brief create text-to-speech ug by app control
106  *
107  */
108 static void setting_phone_lang_create_text_speech_ug(SettingPhoneUG *ad)
109 {
110         SETTING_TRACE_BEGIN;
111         if(app_launcher("setting-voice-efl|show_what:tts") == 0)
112         {
113                 ad->event_freeze_timer = ecore_timer_add(1, setting_phone_language_region_freeze_event_timer_cb, ad);
114                 evas_object_freeze_events_set(ad->navi_bar, EINA_TRUE);
115         }
116 }
117
118 /**
119  * @brief create readout(old name : drivingmode) ug by app control
120  *
121  * @param ad The view data passed
122  */
123 static void setting_phone_lang_create_readout_ug(SettingPhoneUG *ad)
124 {
125         SETTING_TRACE_BEGIN;
126         ret_if(ad == NULL);
127
128         if(app_launcher("setting-drivingmode-efl") == 0)
129         {
130                 ad->event_freeze_timer = ecore_timer_add(1, setting_phone_language_region_freeze_event_timer_cb, ad);
131                 evas_object_freeze_events_set(ad->navi_bar, EINA_TRUE);
132         }
133 }
134
135 /**
136  * @brief Callback of cancel button
137  *
138  * @param cb The view data passed between all callbacks
139  */
140 static Eina_Bool setting_phone_lang_click_softkey_cancel_cb(void *data, Elm_Object_Item *it)
141 {
142         SETTING_TRACE_BEGIN;
143         retvm_if(data == NULL, EINA_FALSE, "Data parameter is NULL");
144         SettingPhoneUG *ad = (SettingPhoneUG *) data;
145
146         Eina_Bool is_freezed = evas_object_freeze_events_get(ad->navi_bar);
147         SETTING_TRACE_DEBUG("is_freezed : %d", is_freezed);
148         if(is_freezed)
149                 return EINA_FALSE;
150
151         ug_destroy_me(ad->ug);
152         return EINA_FALSE;
153 }
154
155 /**
156  * @brief Callback of view cleanup
157  *
158  * @param cb The view data passed between all callbacks
159  * @return #1 on success, else on failed
160  */
161 static void setting_phone_lang_item_Gendial_mouse_up_cb(void *data,
162                                                 Evas_Object *obj,
163                                             void *event_info)
164 {
165         SETTING_TRACE_BEGIN;
166         setting_retm_if(!data || !event_info, "data||event_info is NULL");
167         SettingPhoneUG *ad = (SettingPhoneUG *) data;
168         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
169
170         elm_genlist_item_selected_set(item, 0);
171         Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
172         SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
173
174         if(!safeStrCmp("IDS_ST_HEADER_DISPLAY_LANGUAGE", list_item->keyStr))
175         {
176                 setting_view_change(&setting_view_phone_language_region,
177                                         &setting_view_phone_display_language, ad);
178         }
179         else if(!safeStrCmp(_(REGION_FORMAT_LOWER), list_item->keyStr))
180         {
181                 setting_view_change(&setting_view_phone_language_region,
182                                         &setting_view_phone_region_format, ad);
183         }
184         else if(!safeStrCmp("IDS_ST_BODY_KEYBOARD", list_item->keyStr))
185         {
186                 setting_phone_lang_create_keyboard_ug(ad);
187         }
188         else if(!safeStrCmp("IDS_VC_HEADER_VOICE_RECOGNITION", list_item->keyStr))
189         {
190                 setting_phone_lang_create_voice_recognition_ug(ad);
191         }
192         else if(!safeStrCmp("IDS_ST_HEADER_TEXT_TO_SPEECH", list_item->keyStr))
193         {
194                 setting_phone_lang_create_text_speech_ug(ad);
195         }
196         else if(!safeStrCmp("IDS_VC_MBODY_NOTIFICATION_READ_OUT", list_item->keyStr))
197         {
198                 setting_phone_lang_create_readout_ug(ad);
199         }
200 }
201 #if 0
202 /**
203  * @brief Callback of readout vconf key
204  *
205  */
206  #if SUPPORT_DRIVINGMODE
207 static void setting_phone_lang_vconf_change_cb(keynode_t *key, void *data)
208 {
209         SETTING_TRACE_BEGIN;
210         setting_retm_if(NULL == key, "key is NULL");
211         setting_retm_if(NULL == data, "data is NULL");
212         SettingPhoneUG *ad = (SettingPhoneUG *)data;
213         char *vconf_name = vconf_keynode_get_name(key);
214         if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_DRIVINGMODE_DRIVINGMODE)
215                 || !safeStrCmp(vconf_name, VCONFKEY_SETAPPL_DRIVINGMODE_INCOMINGCALL)
216                 || !safeStrCmp(vconf_name, VCONFKEY_SETAPPL_DRIVINGMODE_MESSAGE)
217                 || !safeStrCmp(vconf_name, VCONFKEY_SETAPPL_DRIVINGMODE_NEWEMAILS)
218                 || !safeStrCmp(vconf_name, VCONFKEY_SETAPPL_DRIVINGMODE_SCHEDULE)
219                 || !safeStrCmp(vconf_name, VCONFKEY_SETAPPL_DRIVINGMODE_ALARM))         {
220
221                 //speech sub update
222                 if (ad->data_readout) {
223                         G_FREE(ad->data_readout->sub_desc);
224                         ad->data_readout->sub_desc = get_pa_noti_readout_str();
225                         elm_object_item_data_set(ad->data_readout->item, ad->data_readout);
226                         elm_genlist_item_update(ad->data_readout->item);
227                 }
228         }else {
229                 SETTING_TRACE_ERROR("vconf_name is error");
230         }
231 }
232 #endif
233
234 static void setting_phone_lang_regist_readout_key(void *data)
235 {
236         setting_retm_if(NULL == data, "data is NULL");
237 #if SUPPORT_DRIVINGMODE
238         SettingPhoneUG *ad = (SettingPhoneUG *)data;
239         int ret = 0;
240         ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_DRIVINGMODE_DRIVINGMODE,setting_phone_lang_vconf_change_cb, ad);
241         if (ret != 0) {
242                 SETTING_TRACE_ERROR("call vconf_notify_key_changed failed");
243         }
244         ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_DRIVINGMODE_INCOMINGCALL,setting_phone_lang_vconf_change_cb, ad);
245         if (ret != 0) {
246                 SETTING_TRACE_ERROR("call vconf_notify_key_changed failed");
247         }
248         ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_DRIVINGMODE_MESSAGE,setting_phone_lang_vconf_change_cb, ad);
249         if (ret != 0) {
250                 SETTING_TRACE_ERROR("call vconf_notify_key_changed failed");
251         }
252         ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_DRIVINGMODE_NEWEMAILS,setting_phone_lang_vconf_change_cb, ad);
253         if (ret != 0) {
254                 SETTING_TRACE_ERROR("call vconf_notify_key_changed failed");
255         }
256         ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_DRIVINGMODE_SCHEDULE,setting_phone_lang_vconf_change_cb, ad);
257         if (ret != 0) {
258                 SETTING_TRACE_ERROR("call vconf_notify_key_changed failed");
259         }
260         ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_DRIVINGMODE_ALARM,setting_phone_lang_vconf_change_cb, ad);
261         if (ret != 0) {
262                 SETTING_TRACE_ERROR("call vconf_notify_key_changed failed");
263         }
264 #endif
265 }
266
267 static void setting_phone_lang_unregist_readout_key()
268 {
269 #if SUPPORT_DRIVINGMODE
270         int ret = 0;
271         ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_DRIVINGMODE_DRIVINGMODE,
272                         setting_phone_lang_vconf_change_cb);
273         if (ret != 0) {
274                 SETTING_TRACE_ERROR("call vconf_ignore_key_changed failed");
275         }
276         ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_DRIVINGMODE_INCOMINGCALL,
277                         setting_phone_lang_vconf_change_cb);
278         if (ret != 0) {
279                 SETTING_TRACE_ERROR("call vconf_ignore_key_changed failed");
280         }
281         ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_DRIVINGMODE_MESSAGE,
282                         setting_phone_lang_vconf_change_cb);
283         if (ret != 0) {
284                 SETTING_TRACE_ERROR("call vconf_ignore_key_changed failed");
285         }
286         ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_DRIVINGMODE_NEWEMAILS,
287                         setting_phone_lang_vconf_change_cb);
288         if (ret != 0) {
289                 SETTING_TRACE_ERROR("call vconf_ignore_key_changed failed");
290         }
291         ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_DRIVINGMODE_SCHEDULE,
292                         setting_phone_lang_vconf_change_cb);
293         if (ret != 0) {
294                 SETTING_TRACE_ERROR("call vconf_ignore_key_changed failed");
295         }
296         ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_DRIVINGMODE_ALARM,
297                         setting_phone_lang_vconf_change_cb);
298         if (ret != 0) {
299                 SETTING_TRACE_ERROR("call vconf_ignore_key_changed failed");
300         }
301 #endif
302 }
303 #endif
304
305 /* ***************************************************
306  *
307  * main view func
308  *
309  ***************************************************/
310 /**
311  * @brief Callback of view creating
312  *
313  * @param cb The view data passed between all callbacks
314  * @return #1 on success, else on failed
315  */
316 static int setting_phone_language_region_create(void *cb)
317 {
318         SETTING_TRACE_BEGIN;
319         /* error check */
320         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
321
322         SettingPhoneUG *ad = (SettingPhoneUG *) cb;
323         Evas_Object *scroller = NULL;
324
325         int region_automatic;
326
327         ad->lang_change = EINA_FALSE;
328
329         char *title = "IDS_ST_HEADER_LANGUAGE_AND_INPUT";
330         ad->ly_language =
331             setting_create_layout_navi_bar_genlist(ad->win_main_layout,
332                                                    ad->win_get, title,
333                                                    _("IDS_COM_BODY_BACK"),
334                                                    NULL,
335                                                    NULL,
336                                                    NULL, ad, &scroller,
337                                                    &(ad->navi_bar));
338         Elm_Object_Item *navi_it = elm_naviframe_top_item_get(ad->navi_bar);
339         elm_naviframe_item_pop_cb_set(navi_it, setting_phone_lang_click_softkey_cancel_cb, ad);
340         retv_if(ad->ly_language == NULL, SETTING_RETURN_FAIL);
341         ad->gl_lang_region = scroller;
342         ad->lang_region_navi_it = navi_it;
343         SETTING_TRACE("navi_it:%p", navi_it);
344         evas_object_smart_callback_add(ad->gl_lang_region, "realized", __gl_realized_cb, NULL);
345         Elm_Object_Item *item = NULL;
346         item =
347             elm_genlist_item_append(scroller, &itc_seperator,
348                                     NULL, NULL, ELM_GENLIST_ITEM_NONE,
349                                     NULL, NULL);
350         elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
351
352         char* pa_display_lang = get_pa_display_language_str();
353         ad->data_display_language =
354             setting_create_Gendial_field_def(scroller,
355                                              &(ad->itc_2text_2),
356                                              setting_phone_lang_item_Gendial_mouse_up_cb,
357                                              ad, SWALLOW_Type_INVALID,
358                                              NULL, NULL, 0,
359                                              "IDS_ST_HEADER_DISPLAY_LANGUAGE",
360                                              _(pa_display_lang),
361                                              NULL);
362         if (ad->data_display_language) {
363                 ad->data_display_language->userdata = ad;
364                 ad->data_display_language->group_style = SETTING_GROUP_STYLE_TOP;
365         } else {
366                 SETTING_TRACE_ERROR("ad->data_display_language is NULL");
367         }
368         G_FREE(pa_display_lang);
369
370         char *pa_region = vconf_get_str(VCONFKEY_REGIONFORMAT);
371         if (pa_region == NULL) {
372                 SETTING_TRACE_ERROR
373                     ("[Error] get value of VCONFKEY_REGIONFORMAT fail.");
374         }
375         ad->prev_locale = (char *)g_strdup(pa_region);
376         //check if the region is set to auto
377         char *region_format_str = NULL;
378         vconf_get_bool(VCONFKEY_SETAPPL_REGION_AUTOMATIC_BOOL, &region_automatic);
379         if(region_automatic == 1)
380         {
381                 region_format_str = (char*)g_strdup(_("IDS_COM_BODY_AUTOMATIC"));
382         } else {
383                 region_format_str = setting_phone_lang_get_region_str(pa_region);
384         }
385         ad->data_region_fmt =
386             setting_create_Gendial_field_def(scroller,
387                                              &(ad->itc_2text_2),
388                                              setting_phone_lang_item_Gendial_mouse_up_cb,
389                                              ad, SWALLOW_Type_INVALID,
390                                              NULL, NULL, 0,
391                                              _(REGION_FORMAT_LOWER),
392                                              region_format_str, NULL);
393         if (ad->data_region_fmt) {
394                 ad->data_region_fmt->userdata = ad;
395                 ad->data_region_fmt->group_style = SETTING_GROUP_STYLE_BOTTOM;
396         } else {
397                 SETTING_TRACE_ERROR("ad->data_region_fmt is NULL");
398         }
399
400         char *example_desc = setting_phone_lang_get_example_desc(pa_region, ad);
401         item = elm_genlist_item_append(scroller, &(itc_sep_line), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL);
402         elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
403         ad->data_region_fmt_example = setting_create_Gendial_field_def(scroller, &itc_multiline_text,
404                                          NULL,
405                                          NULL,
406                                          SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
407                                          NULL, NULL, 0, example_desc, NULL, NULL);
408         elm_genlist_item_select_mode_set(ad->data_region_fmt_example->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
409
410         /* keyboard */
411         ad->data_title_keyboard = setting_create_Gendial_field_titleItem(scroller, &itc_group_item, _("IDS_ST_BODY_KEYBOARD"), NULL);
412         ad->data_keyboard =
413             setting_create_Gendial_field_def(scroller, &(ad->itc_1text),
414                                              setting_phone_lang_item_Gendial_mouse_up_cb,
415                                              ad, SWALLOW_Type_INVALID, NULL,
416                                              NULL, 0, "IDS_ST_BODY_KEYBOARD",
417                                              NULL, NULL);
418 #if 0
419         /* speech */
420         ADD_GL_SEPARATOR(scroller);
421         ad->data_title_speech = setting_create_Gendial_field_titleItem(scroller, &itc_group_item, _("IDS_ST_BODY_SPEECH"), NULL);
422
423         //voice recognition
424         ad->data_voice_recog =
425             setting_create_Gendial_field_def(scroller, &(ad->itc_1text),
426                                              setting_phone_lang_item_Gendial_mouse_up_cb,
427                                              ad, SWALLOW_Type_INVALID, NULL,
428                                              NULL, 0, "IDS_VC_HEADER_VOICE_RECOGNITION",
429                                              NULL, NULL);
430         if (ad->data_voice_recog) {
431                 ad->data_voice_recog->userdata = ad;
432                 ad->data_voice_recog->group_style = SETTING_GROUP_STYLE_TOP;
433         } else {
434                 SETTING_TRACE_ERROR("ad->data_voice_recog is NULL");
435         }
436
437         //text-to-speech
438         ad->data_text_speech =
439             setting_create_Gendial_field_def(scroller, &(ad->itc_1text),
440                                              setting_phone_lang_item_Gendial_mouse_up_cb,
441                                              ad, SWALLOW_Type_INVALID, NULL,
442                                              NULL, 0, "IDS_ST_HEADER_TEXT_TO_SPEECH",
443                                              NULL, NULL);
444         if (ad->data_text_speech) {
445                 ad->data_text_speech->userdata = ad;
446                 ad->data_text_speech->group_style = SETTING_GROUP_STYLE_CENTER;
447         } else {
448                 SETTING_TRACE_ERROR("ad->data_text_speech is NULL");
449         }
450
451         //notification readout
452         char* pa_noti_readout = get_pa_noti_readout_str();
453         ad->data_readout =
454             setting_create_Gendial_field_def(scroller,
455                                              &(ad->itc_2text_2),
456                                              setting_phone_lang_item_Gendial_mouse_up_cb,
457                                              ad, SWALLOW_Type_INVALID,
458                                              NULL, NULL, 0,
459                                              "IDS_VC_MBODY_NOTIFICATION_READ_OUT",
460                                              pa_noti_readout,
461                                              NULL);
462         if (ad->data_readout) {
463                 ad->data_readout->userdata = ad;
464                 ad->data_readout->group_style = SETTING_GROUP_STYLE_BOTTOM;
465         } else {
466                 SETTING_TRACE_ERROR("ad->data_readout is NULL");
467         }
468         G_FREE(pa_noti_readout);
469         setting_phone_lang_regist_readout_key(ad);
470 #endif
471         if (pa_region) {
472                 FREE(pa_region);
473         }
474         if (example_desc) {
475                 FREE(example_desc);
476         }
477
478
479         setting_view_phone_language_region.is_create = 1;
480         return SETTING_RETURN_SUCCESS;
481 }
482
483
484
485 /**
486  * @brief Callback of view destroy
487  *
488  * @param cb The view data passed between all callbacks
489  * @return #1 on success, else on failed
490  */
491 static int setting_phone_language_region_destroy(void *cb)
492 {
493         SETTING_TRACE_BEGIN;
494         /* error check */
495         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
496
497         SettingPhoneUG *ad = (SettingPhoneUG *) cb;
498
499         evas_object_smart_callback_del(ad->gl_lang_region, "realized", __gl_realized_cb);
500
501         //setting_phone_lang_unregist_readout_key();
502
503         if (ad->ly_language != NULL) {
504                 evas_object_del(ad->ly_language);
505                 ad->ly_language = NULL;
506
507                 if (ad->lang_flush_timer) {
508                         ecore_timer_del(ad->lang_flush_timer);
509                         ad->lang_flush_timer = NULL;
510                 }
511
512                 if (ad->event_freeze_timer) {
513                         ecore_timer_del(ad->event_freeze_timer);
514                         ad->event_freeze_timer = NULL;
515                 }
516
517                 if (ad->pattern_generator) {
518                         udatpg_close(ad->pattern_generator);
519                         ad->pattern_generator = NULL;
520                 }
521                 setting_view_phone_language_region.is_create = 0;
522         }
523
524         return SETTING_RETURN_SUCCESS;
525 }
526
527
528
529 /**
530  * @brief Callback of view update
531  *
532  * @param cb The view data passed between all callbacks
533  * @return #1 on success, else on failed
534  */
535 static int setting_phone_language_region_update(void *cb)
536 {
537         SETTING_TRACE_BEGIN;
538         /* error check */
539         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
540
541         SettingPhoneUG *ad = (SettingPhoneUG *) cb;
542
543         if (ad->ly_language != NULL) {
544                 evas_object_show(ad->ly_language);
545                 //refresh the title
546                 elm_object_item_text_set(ad->lang_region_navi_it, _("IDS_ST_HEADER_LANGUAGE_AND_INPUT")); //"IDS_ST_BODY_LANGUAGE_AND_KEYBOARD"));
547
548                 if (ad->data_display_language) {
549                         G_FREE(ad->data_display_language->sub_desc);
550                         ad->data_display_language->sub_desc = get_pa_display_language_str();
551                         elm_object_item_data_set(ad->data_display_language->item, ad->data_display_language);
552                         elm_genlist_item_update(ad->data_display_language->item);
553                 }
554                 //refresh region ex
555                 char *pa_region = vconf_get_str(VCONFKEY_REGIONFORMAT);
556                 if (pa_region == NULL) {
557                         SETTING_TRACE_ERROR
558                             ("[Error] get value of VCONFKEY_REGIONFORMAT fail.");
559                         return SETTING_RETURN_FAIL;
560                 }
561
562                 if (ad->data_region_fmt) {
563                         int region_automatic = 1;
564                         int ret = vconf_get_bool(VCONFKEY_SETAPPL_REGION_AUTOMATIC_BOOL, &region_automatic);
565                         if (ret == VCONF_ERROR) {
566                                 SETTING_TRACE_ERROR("get vconf region automatic err.");
567                         }
568
569                         if(region_automatic == 1)
570                         {
571                                 ad->data_region_fmt->sub_desc = (char*)g_strdup(_("IDS_COM_BODY_AUTOMATIC"));
572                         } else {
573                                 ad->data_region_fmt->sub_desc = setting_phone_lang_get_region_str(pa_region);
574                         }
575                         G_FREE(ad->data_region_fmt->keyStr);
576                         ad->data_region_fmt->keyStr = (char *)g_strdup(_(REGION_FORMAT_LOWER));
577                         elm_object_item_data_set(ad->data_region_fmt->item, ad->data_region_fmt);
578                         elm_genlist_item_update(ad->data_region_fmt->item);
579                 }
580                 if (ad->data_region_fmt_example) {
581                         char *example_desc = setting_phone_lang_get_example_desc(pa_region, ad);
582                         G_FREE(ad->data_region_fmt_example->keyStr);
583                         ad->data_region_fmt_example->keyStr = (char *)g_strdup(example_desc);
584                         FREE(example_desc);
585                         elm_object_item_data_set(ad->data_region_fmt_example->item, ad->data_region_fmt_example);
586                         elm_genlist_item_update(ad->data_region_fmt_example->item);
587                 }
588                 if (ad->data_title_keyboard) {
589                         G_FREE(ad->data_title_keyboard->keyStr);
590                         ad->data_title_keyboard->keyStr = (char *)g_strdup(_("IDS_ST_BODY_KEYBOARD"));
591                         elm_object_item_data_set(ad->data_title_keyboard->item, ad->data_title_keyboard);
592                         elm_genlist_item_update(ad->data_title_keyboard->item);
593                 }
594                 if (ad->data_title_speech) {
595                         G_FREE(ad->data_title_speech->keyStr);
596                         ad->data_title_speech->keyStr = (char *)g_strdup(_("IDS_ST_BODY_SPEECH"));
597                         elm_object_item_data_set(ad->data_title_speech->item, ad->data_title_speech);
598                         elm_genlist_item_update(ad->data_title_speech->item);
599                 }
600                 if (ad->data_readout) {
601                         G_FREE(ad->data_readout->sub_desc);
602                         ad->data_readout->sub_desc = get_pa_noti_readout_str();
603                         elm_object_item_data_set(ad->data_readout->item, ad->data_readout);
604                         elm_genlist_item_update(ad->data_readout->item);
605                 }
606
607                 FREE(pa_region);
608         }
609
610         if (ad->lang_change) {
611                 ad->lang_flush_timer = ecore_timer_add(0.3, setting_phone_language_region_flush_timer_cb, ad);
612                 ad->lang_change = EINA_FALSE;
613         }
614         return SETTING_RETURN_SUCCESS;
615 }
616
617
618
619 /**
620  * @brief Callback of view cleanup
621  *
622  * @param cb The view data passed between all callbacks
623  * @return #1 on success, else on failed
624  */
625 static int setting_phone_language_region_cleanup(void *cb)
626 {
627         SETTING_TRACE_BEGIN;
628         return SETTING_RETURN_SUCCESS;
629 }