fix bug : N_SE-8706
[apps/core/preloaded/settings.git] / setting-font / src / setting-font.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-font.h>
22 #include <system_settings.h>
23 #ifndef UG_MODULE_API
24 #define UG_MODULE_API __attribute__ ((visibility("default")))
25 #endif
26
27 setting_view *__get_font_view_to_load(void *data,service_h service)
28 {
29         SETTING_TRACE_BEGIN;
30         setting_retvm_if((!data), NULL, "data is NULL");
31         SettingFontUG *fontUG = (SettingFontUG *)data;
32
33         setting_view_node_table_intialize();
34
35         char *category = NULL;
36         service_get_extra_data(service, "category", &category);
37
38         if (0 == safeStrCmp(category, "FontType")) {
39                 SETTING_TRACE("LAUNCHED BY APP-CONTROL MODE");
40                 fontUG->viewmode = FONT_SEL_VIEW_APPCONTROL;
41                 // here
42                 setting_view_node_table_register(&setting_view_font_font_size, &setting_view_font_main);
43                 setting_view_node_table_register(&setting_view_font_main, NULL);
44                 return &setting_view_font_main;
45         } else if (0 == safeStrCmp(category, "FontSize")) {
46                 SETTING_TRACE("category = %s", category);
47                 fontUG->viewmode = FONT_SIZE_VIEW_APPCONTROL;
48                 setting_view_node_table_register(&setting_view_font_font_size, NULL);
49                 return &setting_view_font_font_size;
50         }else {
51                 SETTING_TRACE("HERE ?? <<<<< ");
52                 fontUG->viewmode = FONT_SIZE_AND_FONT_SEL_UG;   // set default
53                 setting_view_node_table_register(&setting_view_font_font_size, &setting_view_font_main);
54                 setting_view_node_table_register(&setting_view_font_main, NULL);
55                 return &setting_view_font_main;
56         }
57 }
58
59 static void setting_font_ug_cb_resize(void *data, Evas *e, Evas_Object *obj,
60                                       void *event_info)
61 {
62         SettingFontUG *ad = (SettingFontUG *) data;
63         setting_view_update(&setting_view_font_main, ad);
64 }
65
66 static void *setting_font_ug_on_create(ui_gadget_h ug, enum ug_mode mode,
67                                        service_h service, void *priv)
68 {
69         setting_retvm_if((!priv), NULL, "!priv");
70         SettingFontUG *fontUG = priv;
71
72         appcore_set_i18n(SETTING_PACKAGE, SETTING_LOCALEDIR);
73
74         fontUG->ug = ug;
75         fontUG->win_main_layout = (Evas_Object *) ug_get_parent_layout(ug);
76         fontUG->win_get = (Evas_Object *) ug_get_window();
77         evas_object_show(fontUG->win_main_layout);
78         fontUG->evas = evas_object_evas_get(fontUG->win_main_layout);
79
80         setting_retvm_if(fontUG->win_main_layout == NULL, NULL,
81                          "cannot get main window ");
82
83         fontUG->itc_seperator.item_style = "dialogue/separator/21/with_line";
84         fontUG->itc_seperator.func.text_get = NULL;
85         fontUG->itc_seperator.func.content_get = NULL;
86         fontUG->itc_seperator.func.state_get = NULL;
87         fontUG->itc_seperator.func.del = NULL;
88
89         setting_create_Gendial_itc("dialogue/2text.3/expandable", &(fontUG->itc_2text_3_parent));
90         setting_create_Gendial_itc("dialogue/1text.1icon/expandable2", &(fontUG->itc_1icon_1text_sub));
91         setting_create_Gendial_itc("dialogue/2text.3", &(fontUG->itc_2text_2));
92         setting_create_Gendial_itc("dialogue/1text.1icon.6", &(fontUG->itc_1text_1icon_2));
93         setting_create_Gendial_itc("dialogue/title", &(fontUG->itc_group_item));
94         setting_create_Gendial_itc("multiline/1text", &(fontUG->itc_bg_1icon));
95
96         // view type checking
97         fontUG->view_to_load = __get_font_view_to_load(fontUG, service);
98         setting_retvm_if(NULL == fontUG->view_to_load, NULL, "NULL == fontUG->view_to_load");
99
100         setting_view_node_set_cur_view(fontUG->view_to_load);
101         setting_view_create(fontUG->view_to_load, (void *)fontUG);
102
103         /*  creating a view. */
104         //setting_view_create(&setting_view_font_main, (void *)fontUG);
105         evas_object_event_callback_add(fontUG->win_main_layout, EVAS_CALLBACK_RESIZE, setting_font_ug_cb_resize, fontUG);
106         return fontUG->ly_main;
107 }
108
109 static void setting_font_ug_on_start(ui_gadget_h ug, service_h service,
110                                      void *priv)
111 {
112 }
113
114 static void setting_font_ug_on_pause(ui_gadget_h ug, service_h service,
115                                      void *priv)
116 {
117 }
118
119 static void setting_font_ug_on_resume(ui_gadget_h ug, service_h service,
120                                       void *priv)
121 {
122 }
123
124 static void setting_font_ug_on_destroy(ui_gadget_h ug, service_h service,
125                                        void *priv)
126 {
127         SETTING_TRACE_BEGIN;
128         setting_retm_if((!priv), "!priv");
129         SettingFontUG *fontUG = priv;
130
131         evas_object_event_callback_del(fontUG->win_main_layout, EVAS_CALLBACK_RESIZE, setting_font_ug_cb_resize);       /* fix flash issue for gallery */
132         fontUG->ug = ug;
133
134         /*  delete the allocated objects. */
135         if (fontUG->view_to_load == &setting_view_font_font_size) {
136                 setting_view_destroy(&setting_view_font_font_size, fontUG);
137         } else {
138                 setting_view_destroy(&setting_view_font_font_size, fontUG);
139                 setting_view_destroy(&setting_view_font_main, fontUG);
140         }
141
142         if (NULL != ug_get_layout(fontUG->ug)) {
143                 evas_object_hide((Evas_Object *) ug_get_layout(fontUG->ug));
144                 evas_object_del((Evas_Object *) ug_get_layout(fontUG->ug));
145         }
146
147         SETTING_TRACE_END;
148 }
149
150 static void setting_font_ug_on_message(ui_gadget_h ug, service_h msg,
151                                        service_h service, void *priv)
152 {
153         SETTING_TRACE_BEGIN;
154 }
155
156 static void setting_font_ug_on_event(ui_gadget_h ug, enum ug_event event,
157                                      service_h service, void *priv)
158 {
159         SETTING_TRACE_BEGIN;
160         switch (event) {
161         case UG_EVENT_LOW_MEMORY:
162                 break;
163         case UG_EVENT_LOW_BATTERY:
164                 break;
165         case UG_EVENT_LANG_CHANGE:
166                 break;
167         case UG_EVENT_ROTATE_PORTRAIT:
168                 break;
169         case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
170                 break;
171         case UG_EVENT_ROTATE_LANDSCAPE:
172                 break;
173         case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
174                 break;
175         case UG_EVENT_REGION_CHANGE:
176                 break;
177         default:
178                 break;
179         }
180 }
181
182 static void setting_font_ug_on_key_event(ui_gadget_h ug,
183                                          enum ug_key_event event, service_h service,
184                                          void *priv)
185 {
186         SETTING_TRACE_BEGIN;
187         if (!ug)
188                 return;
189
190         switch (event) {
191         case UG_KEY_EVENT_END:
192                 ug_destroy_me(ug);
193                 break;
194         default:
195                 break;
196         }
197 }
198
199 UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
200 {
201         SETTING_TRACE_BEGIN;
202         SettingFontUG *fontUG = calloc(1, sizeof(SettingFontUG));
203         setting_retvm_if(!fontUG, -1, "Create SettingFontUG obj failed");
204
205         ops->create = setting_font_ug_on_create;
206         ops->start = setting_font_ug_on_start;
207         ops->pause = setting_font_ug_on_pause;
208         ops->resume = setting_font_ug_on_resume;
209         ops->destroy = setting_font_ug_on_destroy;
210         ops->message = setting_font_ug_on_message;
211         ops->event = setting_font_ug_on_event;
212         ops->key_event = setting_font_ug_on_key_event;
213         ops->priv = fontUG;
214         ops->opt = UG_OPT_INDICATOR_ENABLE;
215
216         return 0;
217 }
218
219 UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
220 {
221         SETTING_TRACE_BEGIN;
222         struct SettingFontUG *fontUG;
223         setting_retm_if(!ops, "ops == NULL");
224
225         fontUG = ops->priv;
226         if (fontUG) {
227                 FREE(fontUG);
228         }
229 }
230
231 /* ***************************************************
232  *
233  *general func
234  *
235  ***************************************************/
236
237 int setting_font_update_vconf_key_int_type(void *data,
238                                            setting_int_slp_list slp_key)
239 {
240         SETTING_TRACE_BEGIN;
241         /* error check */
242         if (data == NULL) {
243                 return SETTING_GENERAL_ERR_NULL_DATA_PARAMETER;
244         }
245
246         int ret = SETTING_RETURN_FAIL;
247         int value;
248         int err;
249         /* SettingFontUG *ad = (SettingFontUG *)data; */
250
251         ret = setting_get_int_slp_key(slp_key, &value, &err);
252
253         switch (slp_key) {
254                 /*
255                    case INT_SLP_SETTING_LCD_TIMEOUT_NORMAL:
256                    {
257                    if (ret == SETTING_RETURN_FAIL) value = SETTING_BACKLIGHT_TIME_15SEC;
258
259                    switch(value)
260                    {
261                    case SETTING_BACKLIGHT_TIME_8SEC:    edje_object_part_text_set(_EDJ(ad->eo_DC_backlight), DC_ITEM_SUB_STR_BACKLIGHT, _(STR_SETTING_8SEC)); break;
262                    case SETTING_BACKLIGHT_TIME_15SEC: edje_object_part_text_set(_EDJ(ad->eo_DC_backlight), DC_ITEM_SUB_STR_BACKLIGHT, _(STR_SETTING_15SEC)); break;
263                    case SETTING_BACKLIGHT_TIME_30SEC: edje_object_part_text_set(_EDJ(ad->eo_DC_backlight), DC_ITEM_SUB_STR_BACKLIGHT, _(STR_SETTING_30SEC)); break;
264                    case SETTING_BACKLIGHT_TIME_1MIN: edje_object_part_text_set(_EDJ(ad->eo_DC_backlight), DC_ITEM_SUB_STR_BACKLIGHT, _(STR_SETTING_1MIN)); break;
265                    case SETTING_BACKLIGHT_TIME_3MIN: edje_object_part_text_set(_EDJ(ad->eo_DC_backlight), DC_ITEM_SUB_STR_BACKLIGHT, _(STR_SETTING_3MIN)); break;
266                    case SETTING_BACKLIGHT_TIME_10MIN: edje_object_part_text_set(_EDJ(ad->eo_DC_backlight), DC_ITEM_SUB_STR_BACKLIGHT, _(STR_SETTING_10MIN)); break;
267                    default: ret = SETTING_GENERAL_ERR_NOT_FIND_VALUE_SWITCH;
268                    }
269                    }
270                    break;
271                  */
272
273         default:
274                 ret = SETTING_GENERAL_ERR_NOT_FIND_VALUE_SWITCH;
275                 break;
276         }
277
278         return ret;
279 }
280
281 int setting_font_update_vconf_key(void *data, setting_vconf_type type,
282                                   int slp_key)
283 {
284         SETTING_TRACE_BEGIN;
285         /* error check */
286         if (data == NULL) {
287                 return SETTING_GENERAL_ERR_NULL_DATA_PARAMETER;
288         }
289
290         int ret = SETTING_RETURN_FAIL;
291         SettingFontUG *ad = (SettingFontUG *) data;
292
293         switch (type) {
294         case SETTING_VCONF_INT_TYPE:
295                 ret = setting_font_update_vconf_key_int_type(ad, slp_key);
296                 break;
297
298         case SETTING_VCONF_BOOL_TYPE:
299                 break;
300
301         case SETTING_VCONF_STR_TYPE:
302                 break;
303         default:
304                 /* do nothing */
305                 break;
306         }
307
308         return ret;
309 }
310 /**
311 * Reset function to 'reset' the settings of the UG, it will be invoked by 'Reset' UG
312 */
313 UG_MODULE_API int setting_plugin_reset(service_h service, void *priv)
314 {
315         SETTING_TRACE_BEGIN;
316         //int ret = vconf_set_str(VCONFKEY_SETAPPL_DEVICE_NAME_STR, "Fraser");
317         int ret = 0;
318 #if SUPPORT_RUN_SYSTEM_COMMAND
319         ret += excuteCmd(SETTING_POSTINST_FILE, 1, "font");
320 #else
321         /* reset font type, default is HelveticaNeue */
322         font_config_set("HelveticaNeue");
323
324         /* reset font size */
325         ret += vconf_set_int(VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE, SYSTEM_SETTINGS_FONT_SIZE_NORMAL); // 3 is normal size
326         setting_retvm_if(ret == -1, -1, "Failed to set vconf");
327         font_size_set();
328 #endif
329         return ret;
330 }
331