4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
6 * Contact: MyoungJune Park <mj2004.park@samsung.com>
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
12 * http://www.apache.org/licenses/LICENSE-2.0
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.
21 #include <setting-phone-language-region.h>
23 static int setting_phone_language_region_create(void *cb);
24 static int setting_phone_language_region_destroy(void *cb);
25 static int setting_phone_language_region_update(void *cb);
26 static int setting_phone_language_region_cleanup(void *cb);
28 setting_view setting_view_phone_language_region = {
29 .create = setting_phone_language_region_create,
30 .destroy = setting_phone_language_region_destroy,
31 .update = setting_phone_language_region_update,
32 .cleanup = setting_phone_language_region_cleanup,
35 static void setting_phone_lang_click_softkey_cancel_cb(void *data,
38 static void setting_phone_lang_item_Gendial_mouse_up_cb(void *data,
43 /* ***************************************************
47 ***************************************************/
49 static int setting_phone_language_region_create(void *cb)
53 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
55 SettingPhoneUG *ad = (SettingPhoneUG *) cb;
56 Evas_Object *scroller = NULL;
58 char *title = _(KeyStr_LanguageRegion);
60 setting_create_layout_navi_bar_genlist(ad->win_main_layout,
62 _("IDS_COM_BODY_BACK"),
64 setting_phone_lang_click_softkey_cancel_cb,
67 retv_if(ad->ly_language == NULL, SETTING_RETURN_FAIL);
68 ad->gl_lang_region = scroller;
70 Elm_Object_Item *item = NULL;
72 elm_genlist_item_append(scroller, &(ad->itc_seperator),
73 NULL, NULL, ELM_GENLIST_ITEM_NONE,
75 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
77 char* pa_display_lang = get_pa_display_language_str();
78 ad->data_display_language =
79 setting_create_Gendial_field_def(scroller,
81 setting_phone_lang_item_Gendial_mouse_up_cb,
82 ad, SWALLOW_Type_INVALID,
84 "IDS_ST_HEADER_DISPLAY_LANGUAGE",
87 if (ad->data_display_language) {
88 ad->data_display_language->userdata = ad;
90 SETTING_TRACE_ERROR("ad->data_display_language is NULL");
92 G_FREE(pa_display_lang);
94 char *pa_region = vconf_get_str(VCONFKEY_REGIONFORMAT);
95 if (pa_region == NULL) {
97 ("[Error] get value of VCONFKEY_REGIONFORMAT fail.");
99 ad->prev_locale = (char *)g_strdup(pa_region);
100 ad->data_region_fmt =
101 setting_create_Gendial_field_def(scroller,
103 setting_phone_lang_item_Gendial_mouse_up_cb,
104 ad, SWALLOW_Type_INVALID,
106 "IDS_ST_BODY_REGION",
107 setting_phone_lang_get_region_str
109 if (ad->data_region_fmt) {
110 ad->data_region_fmt->userdata = ad;
112 SETTING_TRACE_ERROR("ad->data_region_fmt is NULL");
116 setting_phone_lang_get_example_desc(pa_region, ad);
117 ad->data_region_fmt_example =
118 setting_create_Gendial_field_def(scroller,
119 &(ad->itc_bg_1icon), NULL,
121 SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
123 example_desc, NULL, NULL);
131 setting_view_phone_language_region.is_create = 1;
132 return SETTING_RETURN_SUCCESS;
135 static int setting_phone_language_region_destroy(void *cb)
139 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
141 SettingPhoneUG *ad = (SettingPhoneUG *) cb;
143 if (ad->ly_language != NULL) {
144 evas_object_del(ad->ly_language);
145 ad->ly_language = NULL;
147 if (ad->pattern_generator) {
148 udatpg_close(ad->pattern_generator);
149 ad->pattern_generator = NULL;
151 setting_view_phone_language_region.is_create = 0;
154 return SETTING_RETURN_SUCCESS;
157 static int setting_phone_language_region_update(void *cb)
161 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
163 SettingPhoneUG *ad = (SettingPhoneUG *) cb;
165 if (ad->ly_language != NULL) {
166 evas_object_show(ad->ly_language);
168 /* setting_update_chk_status(ad->chk_lang, INT_SLP_SETTING_LANG); */
171 return SETTING_RETURN_SUCCESS;
174 static int setting_phone_language_region_cleanup(void *cb)
177 return SETTING_RETURN_SUCCESS;
180 /* ***************************************************
184 ***************************************************/
186 /* ***************************************************
190 ***************************************************/
193 setting_phone_lang_click_softkey_cancel_cb(void *data, Evas_Object *obj,
198 retm_if(data == NULL, "Data parameter is NULL");
200 SettingPhoneUG *ad = (SettingPhoneUG *) data;
202 ug_destroy_me(ad->ug);
206 void setting_phone_lang_change_lang_value(int ichk)
211 /** @todo ASSERT ( SCOPE CHECK ) */
213 Eina_List* list = setting_get_language_list();
214 Eina_List* elist = NULL;
215 setting_lang_entry* pnode;
217 char locale[128] = {0,};
219 EINA_LIST_FOREACH( list, elist, pnode)
221 if (pnode->number == ichk) {
222 snprintf(locale, 128, "%s", pnode->locale);
226 SETTING_TRACE("table . locale >>>>>> :: %s ", locale); //en_US.UTF8
230 ret = setting_set_int_slp_key(INT_SLP_SETTING_LANG, ichk, &err);
233 ret = vconf_set_str(VCONFKEY_LANGSET, locale);
236 static void setting_phone_lang_item_Gendial_mouse_up_cb(void *data,
242 setting_retm_if(data == NULL, "Data parameter is NULL");
243 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
244 elm_genlist_item_selected_set(item, 0);
245 Setting_GenGroupItem_Data *list_item =
246 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
247 SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
249 SettingPhoneUG *ad = (SettingPhoneUG *) data;
251 int ret = SETTING_RETURN_SUCCESS;
252 if(!safeStrCmp("IDS_ST_HEADER_DISPLAY_LANGUAGE", list_item->keyStr))
255 setting_view_change(&setting_view_phone_language_region,
256 &setting_view_phone_display_language,
259 else if(!safeStrCmp("IDS_ST_BODY_REGION", list_item->keyStr))
262 setting_view_change(&setting_view_phone_language_region,
263 &setting_view_phone_region_format, ad);