Merge "bug fix - font size" into 2.0_beta
[apps/core/preloaded/settings.git] / setting-phone / src / setting-phone.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
22 /**
23  *@defgroup setting-phone
24  *UG creation code for setting-phone
25  *
26  * - display
27  * - event notification
28  * - dispaly language
29  * - region format
30  */
31
32 #include <setting-phone.h>
33 #include <libxml/xmlmemory.h>
34 #include <Ecore_X.h>
35
36 #ifndef UG_MODULE_API
37 #define UG_MODULE_API __attribute__ ((visibility("default")))
38 #endif
39
40 setting_view *__get_phone_view_to_load(service_h service)
41 {
42         SETTING_TRACE_BEGIN;
43
44         char *viewtype = NULL;
45
46         service_get_extra_data(service, "viewtype", &viewtype);
47         if(!viewtype)
48                 return NULL;
49
50         SETTING_TRACE("viewtype:%s", viewtype);
51
52         if (!safeStrCmp(viewtype, "language")) {
53                 char *caller = NULL;
54
55                 service_get_extra_data(service, "caller", &caller);
56                 if (caller) {
57                         setting_view_node_table_register(&setting_view_phone_display_language, NULL);
58                         return &setting_view_phone_display_language;
59                 } else {
60                         setting_view_node_table_register(&setting_view_phone_language_region, NULL);
61                         setting_view_node_table_register(&setting_view_phone_display_language,
62                                                          &setting_view_phone_language_region);
63                         setting_view_node_table_register(&setting_view_phone_region_format,
64                                                          &setting_view_phone_language_region);
65
66                         return &setting_view_phone_language_region;
67                 }
68         } else {
69                 return NULL;    /* &setting_view_phone_main; */
70         }
71 }
72
73 Evas_Object *__get_phone_layout_to_return(service_h service, void *priv)
74 {
75         SETTING_TRACE_BEGIN;
76         SettingPhoneUG *phoneUG = priv;
77         char *viewtype = NULL;
78
79         service_get_extra_data(service, "viewtype", &viewtype);
80         if(!viewtype)
81                 return NULL;
82         SETTING_TRACE("viewtype:%s", viewtype);
83
84         if (!safeStrCmp(viewtype, "language")) {
85                 return phoneUG->ly_language;
86         } else {
87                 return NULL;    /* &setting_view_phone_main; */
88         }
89
90 }
91
92
93 const char *get_language_by_mobile_country_code(int mcc)
94 {
95         const char *simLanguage = NULL;
96
97         switch (mcc) {
98         case 262:               /* GERMAN */
99                 simLanguage = "de_DE.UTF-8";
100                 break;
101         case 204:               /* DUTCH */
102                 simLanguage = "nl_NL.UTF-8";
103                 break;
104         case 214:               /* SPAINISH */
105                 simLanguage = "es_ES.UTF-8";
106                 break;
107         case 268:               /* PORTUGUESE */
108                 simLanguage = "pt_PT.UTF-8";
109                 break;
110         case 202:               /* GREEK */
111                 simLanguage = "el_GR.UTF-8";
112                 break;
113         case 222:               /* ITALIAN */
114                 simLanguage = "it_IT.UTF-8";
115                 break;
116         case 208:               /* FRENCH */
117                 simLanguage = "fr_FR.UTF-8";
118                 break;
119         case 286:               /* TURKISH */
120                 simLanguage = "tr_TR.UTF-8";
121                 break;
122         case 450:               /* KOREAN */
123                 simLanguage = "ko_KR.UTF-8";
124                 break;
125         case 440:               /* JAPAN */
126                 simLanguage = "ja_JP.UTF-8";
127                 break;
128         case 460:               /* CHINA */
129                 simLanguage = "zh_CN.UTF-8";
130                 break;
131         case 454:               /* CANTONESE */
132                 simLanguage = "zh_HK.UTF-8";
133                 break;
134         case 466:               /* TAIWAN */
135                 simLanguage = "zh_TW.UTF-8";
136                 break;
137         case 250:               /* RUSSIAN */
138                 simLanguage = "ru_RU.UTF-8";
139                 break;
140         default:                /* get value from db/menu_widget/language at vconf */
141                 simLanguage = "en_US.UTF-8";
142                 break;
143         }
144         return simLanguage;
145
146 }
147
148
149 static void setting_phone_update_item(void *data)
150 {
151         setting_retm_if(data == NULL, "data is NULL");
152         SettingPhoneUG *ad = (SettingPhoneUG *) data;
153
154         Setting_GenGroupItem_Data* item_to_update = NULL;
155
156         item_to_update = ad->data_display_language;
157         retm_if (!item_to_update, "ad->data_display_language is NULL");
158
159         if (item_to_update) {
160                 item_to_update->sub_desc = get_pa_display_language_str();
161                 elm_object_item_data_set(item_to_update->item, item_to_update);
162                 elm_genlist_item_update(item_to_update->item);
163         }
164
165         char *pa_region = vconf_get_str(VCONFKEY_REGIONFORMAT);
166         if (pa_region == NULL) {
167                 SETTING_TRACE_ERROR
168                     ("[Error] get value of VCONFKEY_REGIONFORMAT fail.");
169                 return;
170         }
171
172         item_to_update = ad->data_region_fmt;
173         retm_if (!item_to_update, "ad->data_region_fmt is NULL");
174
175         if (item_to_update) {
176                 item_to_update->sub_desc = setting_phone_lang_get_region_str(pa_region);
177                 elm_object_item_data_set(item_to_update->item, item_to_update);
178                 elm_genlist_item_update(item_to_update->item);
179         }
180
181         if (ad->data_region_fmt_example) {
182                 char *example_desc =
183                     setting_phone_lang_get_example_desc(pa_region, ad);
184                 ad->data_region_fmt_example->keyStr =
185                     (char *)g_strdup(example_desc);
186                 FREE(example_desc);
187                 elm_object_item_data_set(ad->data_region_fmt_example->item, ad->data_region_fmt_example);
188                 elm_genlist_item_update(ad->data_region_fmt_example->item);
189         }
190
191 #if 0
192         if (ad->pop_progress)
193         {
194                 evas_object_del(ad->pop_progress);
195                 ad->popup = NULL;
196         }
197 #endif
198 }
199
200 char *setting_phone_lang_get_region_str(const char *region)
201 {
202         SETTING_TRACE_BEGIN;
203         setting_retvm_if(region == NULL, NULL, "region parameter is NULL");
204         const char *localeID = NULL;
205         UChar displayname[SETTING_STR_SLP_LEN] = { 0, };
206         UErrorCode status = U_ZERO_ERROR;
207         char *ret_str = NULL;
208
209         localeID = uloc_getDefault();
210         uloc_getDisplayName(region, localeID, displayname, SETTING_STR_SLP_LEN,
211                             &status);
212
213         char *str_displayname = setting_phone_lang_str_to_utf8(displayname);
214         ret_str = (char *)g_strdup(str_displayname);
215
216         if (str_displayname) {
217                 FREE(str_displayname);
218         }
219         return ret_str;
220 }
221
222 /**
223 * Change language string to UTF8 format, the invoker need to free the return string
224 *
225 * @param unichars The source string will be translated.
226 *
227 * @return UTF8 format string.
228 */
229 char *setting_phone_lang_str_to_utf8(const UChar *unichars)
230 {
231         retv_if(unichars == NULL, NULL);
232         int len = 0;
233         int len_str = 0;
234         int len_utf8 = 0;
235         char *str = NULL;
236         UErrorCode status = U_ZERO_ERROR;
237
238         len = u_strlen(unichars);
239         len_str = sizeof(char) *4 * (len + 1);
240         str = (char *)calloc(1, len_str);
241         if (!str)
242                 return NULL;
243
244         u_strToUTF8(str, len_str, &len_utf8, unichars, len, &status);
245         return str;
246 }
247
248 char *setting_phone_lang_get_by_pattern(const char *locale,
249                                                const char *skeleton, void *data)
250 {
251         setting_retvm_if(!locale, NULL, "locale parameter is NULL");
252         setting_retvm_if(data == NULL, NULL, "Data parameter is NULL");
253
254         SettingPhoneUG *ad = (SettingPhoneUG *) data;
255
256         char *ret_str = NULL;
257         UChar customSkeleton[SETTING_STR_SLP_LEN] = { 0, };
258         UErrorCode status = U_ZERO_ERROR;
259         UDateFormat *formatter = NULL;
260
261         UChar bestPattern[SETTING_STR_SLP_LEN] = { 0, };
262         UChar formatted[SETTING_STR_SLP_LEN] = { 0, };
263
264         char bestPatternString[SETTING_STR_SLP_LEN] = { 0, };
265         char formattedString[SETTING_STR_SLP_LEN] = { 0, };
266
267         u_uastrncpy(customSkeleton, skeleton, safeStrLen(skeleton));
268
269         if (ad->pattern_generator == NULL
270             || safeStrCmp(locale, ad->prev_locale) != 0) {
271                 if (ad->pattern_generator != NULL) {
272                         udatpg_close(ad->pattern_generator);
273                         ad->pattern_generator = NULL;
274                 }
275                 ad->pattern_generator = udatpg_open(locale, &status);
276         }
277
278         int32_t bestPatternCapacity =
279             (int32_t) (sizeof(bestPattern) / sizeof((bestPattern)[0]));
280         (void)udatpg_getBestPattern(ad->pattern_generator, customSkeleton,
281                                     u_strlen(customSkeleton), bestPattern,
282                                     bestPatternCapacity, &status);
283
284         u_austrcpy(bestPatternString, bestPattern);
285         SETTING_TRACE("BestPattern is %s", bestPatternString);
286
287         UDate date = ucal_getNow();
288         formatter =
289             udat_open(UDAT_IGNORE, UDAT_IGNORE, locale, NULL, -1, bestPattern,
290                       -1, &status);
291         int32_t formattedCapacity =
292             (int32_t) (sizeof(formatted) / sizeof((formatted)[0]));
293         (void)udat_format(formatter, date, formatted, formattedCapacity, NULL,
294                           &status);
295         u_austrcpy(formattedString, formatted);
296         SETTING_TRACE("DATE & TIME is %s", formattedString);
297
298         udat_close(formatter);
299
300         ret_str = g_strdup(formattedString);
301         return ret_str;
302 }
303
304 char *setting_phone_lang_get_example_desc(const char *region, void *data)
305 {
306         setting_retvm_if(region == NULL, NULL, "region parameter is NULL");
307         setting_retvm_if(data == NULL, NULL, "Data parameter is NULL");
308         char *date = setting_phone_lang_get_by_pattern(region,
309                                                        UDAT_YEAR_MONTH_WEEKDAY_DAY,
310                                                        data);
311
312         enum appcore_time_format timeformat = APPCORE_TIME_FORMAT_12;
313         int ret = appcore_get_timeformat(&timeformat);
314         if (ret == -1) {
315                 SETTING_TRACE_ERROR("call appcore_get_timeformat fail.");
316                 timeformat = APPCORE_TIME_FORMAT_12;
317         }
318
319         char *time_skeleton = "hhmm";
320         if (timeformat == APPCORE_TIME_FORMAT_24) {
321                 time_skeleton = "HHmm";
322         }
323
324         char *time = setting_phone_lang_get_by_pattern(region, time_skeleton, data);
325
326         Eina_Strbuf *temp_str = eina_strbuf_new();
327         char *r_str_text = NULL;
328         eina_strbuf_append_printf(temp_str,
329                                   "%s", _("IDS_ST_BODY_REGIONAL_EXAMPLE"));
330         eina_strbuf_append_printf(temp_str, "<br>%s : %s", _("IDS_ST_BODY_DATE"), date);
331         eina_strbuf_append_printf(temp_str, "<br>%s : %s", _("IDS_COM_BODY_DETAILS_TIME"), time);
332
333         r_str_text = eina_strbuf_string_steal(temp_str);
334         /* eina_strbuf_string_free(temp_str); */
335         eina_strbuf_free(temp_str);
336         G_FREE(date);
337         G_FREE(time);
338         return r_str_text;      /* will be freed in calling place */
339 }
340
341
342 static void setting_phone_ug_cb_resize(void *data, Evas *e, Evas_Object *obj,
343                                        void *event_info)
344 {
345         SettingPhoneUG *ad = (SettingPhoneUG *) data;
346         /* setting_view_update(&setting_view_about_main, ad); */
347         setting_view_update(ad->view_to_load, ad);
348 }
349
350 static void *setting_phone_ug_on_create(ui_gadget_h ug, enum ug_mode mode,
351                                         service_h service, void *priv)
352 {
353         setting_retvm_if((!priv), NULL, "!priv");
354         SETTING_TRACE_BEGIN;
355         SettingPhoneUG *phoneUG = priv;
356         phoneUG->ug = ug;
357
358         phoneUG->win_main_layout = (Evas_Object *) ug_get_parent_layout(ug);
359         phoneUG->win_get = (Evas_Object *) ug_get_window();
360         evas_object_show(phoneUG->win_main_layout);
361         phoneUG->evas = evas_object_evas_get(phoneUG->win_main_layout);
362
363         setting_retvm_if(phoneUG->win_main_layout == NULL, NULL,
364                          "cannot get main window ");
365
366         /* --------------------------------------------------------- */
367         char *pa_path = NULL;;
368
369         pa_path = vconf_get_str(VCONFKEY_LANGSET);
370         if (!pa_path) {
371                 SETTING_TRACE
372                     ("%s*** language setting has no proper value (nil) ***%s",
373                      SETTING_FONT_BGREEN, SETTING_FONT_BLACK);
374                 return NULL;
375         }
376         /* set launguage */
377         appcore_set_i18n(SETTING_PACKAGE, SETTING_LOCALEDIR);
378         FREE(pa_path);
379         /* ---------------------------------------------------------     */
380         int value = 0;
381         int err;
382         int ret = setting_get_int_slp_key(INT_SLP_SETTING_SIM_SLOT, &value, &err);
383         if (ret != 0) {
384                 SETTING_TRACE("fail to get vconf");
385         }
386         if (value == VCONFKEY_TELEPHONY_SIM_INSERTED) {
387                 phoneUG->handle = tel_init(NULL);
388                 SETTING_TRACE("phoneUG->handle:%d", phoneUG->handle);
389                 memset(&(phoneUG->imsi), 0, sizeof(TelSimImsiInfo_t));
390                 if (phoneUG->handle
391                     && TAPI_API_SUCCESS == tel_get_sim_imsi(phoneUG->handle, &(phoneUG->imsi))) {
392                         SETTING_TRACE("********************************************");
393                         //SETTING_TRACE("imsi.bValid: [%d]", phoneUG->imsi.bValid);
394                         SETTING_TRACE("imsi.szMcc: [%s]", phoneUG->imsi.szMcc);
395                         SETTING_TRACE("imsi.szMnc: [%s]", phoneUG->imsi.szMnc);
396                         SETTING_TRACE("imsi.szMsin: [%s]", phoneUG->imsi.szMsin);
397                         SETTING_TRACE("********************************************");
398
399                         phoneUG->sim_lang = get_language_by_mobile_country_code(atoi(phoneUG->imsi.szMcc));
400                 }
401         }
402         if (!phoneUG->sim_lang) {
403                 /* if CSC has updated configuration for setting, initial vconf value changes. */
404                 phoneUG->sim_lang = vconf_get_str(VCONFKEY_LANGSET); /* allocated */
405         }
406         SETTING_TRACE("sim_lang: [%s]", phoneUG->sim_lang);
407
408         /* register view node table */
409         setting_view_node_table_intialize();
410
411         setting_create_Gendial_itc("dialogue/1text.1icon.2",
412                                    &(phoneUG->itc_1text_1icon_2));
413         setting_create_Gendial_itc("dialogue/1text.1icon",
414                                    &(phoneUG->itc_1text_1icon));
415
416         // 2 text - genlist > items
417         setting_create_Gendial_itc("dialogue/2text", &(phoneUG->itc_1icon_2text));
418
419         setting_create_Gendial_itc("dialogue/1text", &(phoneUG->itc_1text));
420         setting_create_Gendial_itc("dialogue/2text.3/expandable",
421                                    &(phoneUG->itc_2text_3_parent));
422         setting_create_Gendial_itc("dialogue/1text.1icon/expandable2",
423                                    &(phoneUG->itc_1icon_1text_sub));
424
425         phoneUG->itc_seperator.item_style = "dialogue/separator/21/with_line";
426         phoneUG->itc_seperator.func.text_get = NULL;
427         phoneUG->itc_seperator.func.content_get = NULL;
428         phoneUG->itc_seperator.func.state_get = NULL;
429         phoneUG->itc_seperator.func.del = NULL;
430
431         setting_create_Gendial_itc("dialogue/2text.3", &(phoneUG->itc_2text_2));
432         setting_create_Gendial_itc("multiline/1text",
433                                    &(phoneUG->itc_bg_1icon));
434         phoneUG->pattern_generator = NULL;
435         phoneUG->prev_locale = NULL;
436         /*  creating a view. */
437         phoneUG->bundle_data = service;
438         phoneUG->view_to_load = __get_phone_view_to_load(service);
439         setting_retvm_if(NULL == phoneUG->view_to_load, NULL,
440                          "NULL == phoneUG->view_to_load");
441         setting_view_node_set_cur_view(phoneUG->view_to_load);
442         setting_view_create(phoneUG->view_to_load, (void *)phoneUG);
443         evas_object_event_callback_add(phoneUG->win_main_layout,
444                                        EVAS_CALLBACK_RESIZE,
445                                        setting_phone_ug_cb_resize, phoneUG);
446         return __get_phone_layout_to_return(service, phoneUG);
447 }
448
449 static void setting_phone_ug_on_start(ui_gadget_h ug, service_h service,
450                                       void *priv)
451 {
452 }
453
454 static void setting_phone_ug_on_pause(ui_gadget_h ug, service_h service,
455                                       void *priv)
456 {
457 }
458
459 static void setting_phone_ug_on_resume(ui_gadget_h ug, service_h service,
460                                        void *priv)
461 {
462 }
463
464 static void setting_phone_ug_on_destroy(ui_gadget_h ug, service_h service,
465                                         void *priv)
466 {
467         SETTING_TRACE_BEGIN;
468         setting_retm_if((!ug || !priv), "!ug || !priv");
469         SettingPhoneUG *phoneUG = priv;
470
471         evas_object_event_callback_del(phoneUG->win_main_layout, EVAS_CALLBACK_RESIZE, setting_phone_ug_cb_resize);     /* fix flash issue for gallery */
472         phoneUG->ug = ug;
473
474         if (phoneUG->handle && tel_deinit(phoneUG->handle) != TAPI_API_SUCCESS) {
475                 SETTING_TRACE_ERROR("tel_deinit failed");
476         }
477         /*  called when this shared gadget is terminated. similar with app_exit */
478         if (&setting_view_phone_language_region == phoneUG->view_to_load) {
479                 setting_view_destroy(&setting_view_phone_display_language,
480                                      phoneUG);
481                 setting_view_destroy(&setting_view_phone_region_format,
482                                      phoneUG);
483                 setting_view_destroy(&setting_view_phone_language_region, phoneUG);
484         }
485
486         if (NULL != ug_get_layout(phoneUG->ug)) {
487                 evas_object_hide((Evas_Object *) ug_get_layout(phoneUG->ug));
488                 evas_object_del((Evas_Object *) ug_get_layout(phoneUG->ug));
489         }
490
491         SETTING_TRACE_END;
492 }
493
494 static void setting_phone_ug_on_message(ui_gadget_h ug, service_h msg,
495                                         service_h service, void *priv)
496 {
497         SETTING_TRACE_BEGIN;
498         setting_retm_if(NULL == priv, "priv is NULL");
499         char *pid_str = NULL;
500
501         service_get_extra_data(msg, "DEADPID", &pid_str);
502         if (pid_str)
503         {
504                 errno = 0;
505                 int pid = (int)g_ascii_strtod(pid_str, NULL);
506                 SETTING_TRACE_DEBUG("pid = %d",pid);
507                 setting_retm_if(errno == ERANGE, "call g_ascii_strtod fail");
508
509                 int ret = app_terminate_dead_cb(pid, priv);
510                 setting_retm_if(ret != 0, "call app_terminate_dead_cb fail");
511         }
512 }
513
514 static void setting_phone_ug_on_event(ui_gadget_h ug, enum ug_event event,
515                                       service_h service, void *priv)
516 {
517         SETTING_TRACE_BEGIN;
518
519         SettingPhoneUG *ad = (SettingPhoneUG *) priv;
520         switch (event) {
521         case UG_EVENT_LOW_MEMORY:
522                 break;
523         case UG_EVENT_LOW_BATTERY:
524                 break;
525         case UG_EVENT_REGION_CHANGE:
526         {
527                 if (ad->gl_lang_region && setting_view_phone_language_region.is_create) {
528                         elm_genlist_realized_items_update(ad->gl_lang_region);
529                         Elm_Object_Item *navi_it = elm_naviframe_top_item_get(ad->navi_bar);
530                         ret_if(!navi_it);
531                         elm_object_item_text_set(navi_it, _(KeyStr_LanguageRegion));
532                         setting_phone_update_item(ad);
533                 }
534         }
535         break;
536         case UG_EVENT_LANG_CHANGE:
537         {
538                 if (ad->gl_lang_region && setting_view_phone_language_region.is_create) {
539                         elm_genlist_realized_items_update(ad->gl_lang_region);
540                         Elm_Object_Item *navi_it = elm_naviframe_top_item_get(ad->navi_bar);
541                         ret_if(!navi_it);
542                         elm_object_item_text_set(navi_it, _(KeyStr_LanguageRegion));
543                         setting_phone_update_item(ad);
544                 }
545
546                 if (ad->pop_progress) {
547                         evas_object_del(ad->pop_progress);
548                         ad->popup = NULL;
549                 }
550         }
551         break;
552
553         case UG_EVENT_ROTATE_PORTRAIT:
554                 break;
555         case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
556                 break;
557         case UG_EVENT_ROTATE_LANDSCAPE:
558                 break;
559         case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
560                 break;
561         default:
562                 break;
563         }
564 }
565
566 static void setting_phone_ug_on_key_event(ui_gadget_h ug,
567                                           enum ug_key_event event,
568                                           service_h service, void *priv)
569 {
570         SETTING_TRACE_BEGIN;
571         SettingPhoneUG *ad = (SettingPhoneUG *) priv;
572
573         SETTING_TRACE("event:%d", event);
574         switch (event) {
575         case UG_KEY_EVENT_END:
576                 {
577                         if (elm_naviframe_top_item_get(ad->navi_bar) ==
578                            elm_naviframe_bottom_item_get(ad->navi_bar)) {
579                                 ug_destroy_me(ug);
580                         } else {
581                                 setting_view_cb_at_endKey(ad);
582                         }
583                 }
584                 break;
585         default:
586                 break;
587         }
588 }
589
590 UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
591 {
592         SETTING_TRACE_BEGIN;
593         SettingPhoneUG *phoneUG = calloc(1, sizeof(SettingPhoneUG));
594         setting_retvm_if(!phoneUG, -1, "Create SettingPhoneUG obj failed");
595
596         ops->create = setting_phone_ug_on_create;
597         ops->start = setting_phone_ug_on_start;
598         ops->pause = setting_phone_ug_on_pause;
599         ops->resume = setting_phone_ug_on_resume;
600         ops->destroy = setting_phone_ug_on_destroy;
601         ops->message = setting_phone_ug_on_message;
602         ops->event = setting_phone_ug_on_event;
603         ops->key_event = setting_phone_ug_on_key_event;
604         ops->priv = phoneUG;
605         ops->opt = UG_OPT_INDICATOR_ENABLE;
606
607         return 0;
608 }
609
610 UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
611 {
612         SETTING_TRACE_BEGIN;
613         struct SettingPhoneUG *phoneUG;
614         setting_retm_if(!ops, "ops == NULL");
615
616         phoneUG = ops->priv;
617         if (phoneUG)
618                 FREE(phoneUG);
619 }
620
621 /*****/
622 UG_MODULE_API int setting_plugin_reset(service_h service, void *priv)
623 {
624         SETTING_TRACE_BEGIN;
625
626         int ret = 0;
627         char *ug_type = NULL;
628
629         service_get_extra_data(service, "viewtype", &ug_type);
630 #if SUPPORT_RUN_SYSTEM_COMMAND
631         ret += excuteCmd(SETTING_POSTINST_FILE, 1, ug_type);
632 #else
633         if (0 == safeStrCmp(ug_type, "language")) {
634                 // INT_SLP_SETTING_LANG
635                 ret += vconf_set_int(VCONFKEY_SETAPPL_LANG_INT, SETTING_LANG_ENGLISH);
636                 ret += vconf_set_str(VCONFKEY_LANGSET, "en_US.UTF-8");
637                 ret += vconf_set_str(VCONFKEY_REGIONFORMAT,"en_US.UTF-8");
638         }
639
640 #endif
641         if (0 == safeStrCmp(ug_type, "language"))
642         {
643                 SETTING_TRACE("Begin to reset language & region...");
644                 //a. notify system language changed
645                 char lang_changed_sys_noti_name[SYS_NOTI_NAME_LEN];
646                 int res = -1;
647                 res = heynoti_get_snoti_name("LANG_CHANGED",
648                                            lang_changed_sys_noti_name,
649                                            sizeof(lang_changed_sys_noti_name));
650                 if (res == 0) {
651                         heynoti_publish(lang_changed_sys_noti_name);
652                 }
653                 ret += res;
654
655                 //b .reset default localeid
656                 int err = -1;
657                 uloc_setDefault("en_US", &err);
658
659                 //c. reset date&time format
660                 vconf_set_int(VCONFKEY_SETAPPL_DATE_FORMAT_INT, SETTING_DATE_FORMAT_DD_MM_YYYY);
661
662                 //d. terminate other apps
663                 // ret += aul_app_get_running_app_info(app_terminate_func, NULL);
664         }
665         /*  DO NOTHING */
666         return ret;
667
668 }
669
670 /*****/