3 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 * Licensed under the Flora License, Version 1.0 (the License);
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://floralicense.org/license/
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an AS IS BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
18 #include <setting-font-font-size.h>
21 const char* key_font_name;
23 } settings_font_size_table;
25 static char* result_str_arr[] = {"Small","Normal","Large","Huge","Giant"};
26 static const settings_font_size_table font_size_table[] = {
27 {"IDS_EMAIL_POP_GIANT_M_TEXTSIZE", SYSTEM_SETTINGS_FONT_SIZE_GIANT},
28 {"IDS_EMAIL_OPT_HUGE_M_TEXTSIZE", SYSTEM_SETTINGS_FONT_SIZE_HUGE},
29 {"IDS_ST_BODY_TEXTSTYLE_LARGE", SYSTEM_SETTINGS_FONT_SIZE_LARGE},
30 {"IDS_ST_BODY_NORMAL_T_PROFILE", SYSTEM_SETTINGS_FONT_SIZE_NORMAL},
31 {"IDS_ST_BODY_SMALL_M_TEXTSIZE", SYSTEM_SETTINGS_FONT_SIZE_SMALL},
35 #define STR_FONT_SIZE_CHANGING "IDS_ST_BODY_CHANGING_THE_FONT_SIZE_IN_ACCESSIBILITY_SETTINGS_WILL_OVERRIDE_THE_FONT_SIZE_IN_EACH_APPLICATION"
37 static void __setting_font_font_size_click_softkey_back_cb(void *data, Evas_Object * obj, void *event_info);
39 static int setting_font_font_size_create(void *cb);
40 static int setting_font_font_size_destroy(void *cb);
41 static int setting_font_font_size_update(void *cb);
42 static int setting_font_font_size_cleanup(void *cb);
44 setting_view setting_view_font_font_size = {
45 .create = setting_font_font_size_create,
46 .destroy = setting_font_font_size_destroy,
47 .update = setting_font_font_size_update,
48 .cleanup = setting_font_font_size_cleanup,
51 /* ***************************************************
55 ** **************************************************/
56 static void __process_after_item_realized(void *data, Evas_Object *obj, void *event_info)
59 SettingFontUG *ad = data;
62 evas_object_del(ad->popup);
67 static int setting_font_font_size_create(void *cb)
71 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
73 SettingFontUG *ad = (SettingFontUG *) cb;
74 Evas_Object *scroller;
76 retvm_if(ad->win_main_layout == NULL, SETTING_DRAW_ERR_FAIL_LOAD_EDJ,
77 "win_main_layout is NULL");
79 // create a navigation bar
80 if (ad->view_to_load == &setting_view_font_font_size) {
81 ad->ly_main = setting_create_layout_navi_bar_genlist(ad->win_main_layout,
83 _("IDS_ST_MBODY_FONT_SIZE"),
84 _("IDS_COM_BODY_BACK"), NULL,
85 __setting_font_font_size_click_softkey_back_cb, NULL,
86 ad, &scroller, &ad->navibar);
88 setting_push_layout_navi_bar_genlist(ad->win_main_layout,
90 _("IDS_ST_MBODY_FONT_SIZE"),
91 _("IDS_COM_BODY_BACK"),
93 __setting_font_font_size_click_softkey_back_cb,
95 ad, &scroller, ad->navibar);
99 Elm_Object_Item *item =
100 elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
101 ELM_GENLIST_ITEM_NONE, NULL, NULL);
102 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
104 // [UI] create the font list
105 ad->size_rdg = elm_radio_add(scroller);
106 elm_radio_state_value_set(ad->size_rdg, -1);
109 Setting_GenGroupItem_Data *item_data;
110 while(font_size_table[idx].key_font_name) {
111 item_data = setting_create_Gendial_field_1radio(scroller, &(ad->itc_1text_1icon_2),
112 setting_font_font_size_list_mouse_up_cb,
114 SWALLOW_Type_1RADIO_1LABLE,
115 ad->size_rdg, font_size_table[idx].font_size,
116 font_size_table[idx].key_font_name,
119 item_data->userdata = ad;
121 SETTING_TRACE_ERROR("item_data is null");
122 return SETTING_RETURN_FAIL;
128 setting_create_Gendial_field_def(scroller, &(ad->itc_bg_1icon), NULL,
129 ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
130 NULL, NULL, 0, STR_FONT_SIZE_CHANGING, NULL,
133 // update check status - init values
134 setting_update_chk_status(ad->size_rdg, INT_SLP_SETTING_ACCESSIBILITY_FONT_SIZE);
135 setting_view_font_font_size.is_create = 1;
136 evas_object_smart_callback_add(scroller, "realized", __process_after_item_realized, ad);
137 return SETTING_RETURN_SUCCESS;
140 static int setting_font_font_size_destroy(void *cb)
144 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
145 SettingFontUG *ad = (SettingFontUG *) cb;
148 evas_object_del(ad->popup);
152 if (ad->view_to_load == &setting_view_font_font_size) {
154 evas_object_del(ad->ly_main);
158 elm_naviframe_item_pop(ad->navibar);
160 setting_view_font_font_size.is_create = 0;
162 return SETTING_RETURN_SUCCESS;
165 static int setting_font_font_size_update(void *cb)
169 return SETTING_RETURN_SUCCESS;
172 static int setting_font_font_size_cleanup(void *cb)
175 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
176 setting_font_font_size_destroy(cb);
178 return SETTING_RETURN_SUCCESS;
181 /* ***************************************************
185 ** **************************************************/
187 /* ***************************************************
191 ** **************************************************/
193 static void __setting_font_font_size_click_softkey_back_cb(void *data, Evas_Object * obj, void *event_info)
196 ret_if(data == NULL);
197 SettingFontUG *ad = (SettingFontUG *) data;
199 if (ad->view_to_load == &setting_view_font_font_size) {
203 int ret = setting_get_int_slp_key(INT_SLP_SETTING_ACCESSIBILITY_FONT_SIZE, &value, &err);
204 setting_retm_if(ret != 0, "fail to get vconf");
207 if (service_create(&svc)) return;
209 service_add_extra_data(svc, "category", "FontSize");
210 service_add_extra_data(svc, "FontSize", result_str_arr[value]);
212 SETTING_TRACE(" SERVICE_ADD_EXTRA : %s %s","category", "FontSize");
213 SETTING_TRACE(" SERVICE_ADD_EXTRA : %s %s","FontSize", result_str_arr[value]);
215 ug_send_result(ad->ug, svc);
216 service_destroy(svc);
218 ug_destroy_me(ad->ug);
220 setting_view_change(&setting_view_font_font_size, &setting_view_font_main, ad);
224 static void setting_font_font_size_list_mouse_up_cb(void *data, Evas_Object *obj, void *event_info)
228 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
229 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
230 elm_genlist_item_selected_set(item, 0);
231 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
233 setting_retm_if(data == NULL, "Data parameter is NULL");
235 SettingFontUG *ad = list_item->userdata;
236 Evas_Object *radio = data;
237 elm_radio_value_set(radio, list_item->chk_status);
241 ret = setting_get_int_slp_key(INT_SLP_SETTING_ACCESSIBILITY_FONT_SIZE, &old_value, &err);
243 if (old_value == list_item->chk_status) return;
245 //Due to long time taken by font Setting, add the block code when font is Setting.
247 evas_object_del(ad->popup);
250 ad->popup = setting_create_popup_with_progressbar(ad, ad->win_get,
252 NULL, NULL, NULL, 0, TRUE, TRUE);
254 ret = setting_set_int_slp_key(INT_SLP_SETTING_ACCESSIBILITY_FONT_SIZE, list_item->chk_status, &err);
255 setting_retm_if(ret == -1, "Failed to set vconf");