2 * Copyright (c) 2014 Samsung Electronics Co., Ltd.
4 * Licensed under the Flora License, Version 1.0 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://floralicense.org/license/
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
20 * Created on: Oct 9, 2013
25 #include <system_settings.h>
27 #include <vconf-keys.h>
28 #include <libxml/xmlmemory.h>
29 #include <libxml/parser.h>
30 #include <fontconfig/fontconfig.h>
32 #include "setting_data_vconf.h"
33 #include "setting-display.h"
34 #include "setting_view_toast.h"
35 #include "setting-language.h"
36 #include "setting-homescreen.h"
37 #include "setting-motion.h"
40 static struct _display_menu_item display_menu_its[] = {
41 { "IDS_ST_MBODY_SCREEN_TIMEOUT_ABB", SETTING_DISPLAY_SCREEN_TIME, _display_gl_screen_timeout_cb, 0 },
42 { "IDS_ST_BODY_FONT", SETTING_DISPLAY_FONT, _display_gl_font_cb, 0 },
43 { "IDS_ST_BUTTON_LANGUAGE", SETTING_DISPLAY_LANG, _display_gl_language_cb, 0 },
44 { "IDS_ST_MBODY_ALWAYS_ON_ABB", SETTING_DISPLAY_AMBIENT_MODE, _display_ambient_mode_cb, 0 },
45 #if !defined(FEATURE_SETTING_SDK) && !defined(FEATURE_SETTING_EMUL)
46 { "IDS_ST_MBODY_MANAGE_APPS_ABB", SETTING_DISPLAY_EDIT_APPS, _homescreen_gl_edit_apps_cb, 0 },
50 static struct _font_menu_item font_menu_its[] = {
51 { "IDS_ST_BODY_FONT_STYLE", SETTING_DISPLAY_FONT_STYLE, _display_gl_font_style_cb },
52 { "IDS_ST_BODY_FONT_SIZE_ABB", SETTING_DISPLAY_FONT_SIZE, _display_gl_font_size_cb },
55 static int screen_time_str[] = {
58 static int timeout_arr[] = {
62 static char *font_size_str[] = {
63 "IDS_EMAIL_OPT_SMALL_M_FONT_SIZE",
64 "IDS_ST_OPT_MEDIUM_M_FONT_SIZE",
65 "IDS_ST_BODY_LARGE_M_FONT_SIZE_ABB2"
68 static char *rotate_screen_str[] = {
69 "IDS_COM_BODY_DEFAULT", "IDS_COM_OPT_ROTATE_CW", "IDS_COM_OPT_ROTATE_CCW", "IDS_ST_SBODY_180_DEGREE"
72 static appdata *temp_ad = NULL;
73 static Evas_Object *g_display_genlist = NULL;
74 static Evas_Object *g_screen_time_genlist = NULL;
75 static Evas_Object *g_font_size_genlist = NULL;
76 static Evas_Object *g_font_style_genlist = NULL;
77 static Evas_Object *g_rotate_screen_genlist = NULL;
79 static int screen_time_index = 1; /* default: 10 seconds */
80 static int font_size_index = 1; /* default: normal */
81 static int rotate_screen_rot = 0; /* default: 0(0degree), vconf enum */
82 static int rotate_screen_index = 0; /* default: 0, list index */
84 static int touch_mode = NONE;
86 /* Main display list item */
87 static Elm_Object_Item *lang_item = NULL;
88 static Elm_Object_Item *wake_up_item = NULL;
89 static Elm_Object_Item *edit_icon_item = NULL;
90 static Elm_Object_Item *screen_time_item = NULL;
91 static Elm_Object_Item *ambient_mode_item = NULL;
94 static char *font_name = NULL;
96 static Elm_Object_Item *font_style_item = NULL;
97 static Elm_Object_Item *font_size_item = NULL;
99 static void _font_size_gl_cb(void *data, Evas_Object *obj, void *event_info);
100 static void _font_style_gl_cb(void *data, Evas_Object *obj, void *event_info);
101 static Eina_Bool setting_font_style_pop_cb(void *data, Elm_Object_Item *it);
102 static void settings_font_style_changed_cb(system_settings_key_e key, void *user_data);
103 static void change_language_enabling(keynode_t *key, void *data);
104 static void change_screen_time_cb(keynode_t *key, void *data);
105 static void change_language_cb(keynode_t *key, void *data);
106 static Eina_Bool setting_font_list_pop_cb(void *data, Elm_Object_Item *it);
107 static void _lang_update_font_style_list(void *data, Evas_Object *obj, void *event_info);
112 _gl_menu_title_text_get(void *data, Evas_Object *obj, const char *part)
116 snprintf(buf, 1023, "%s", _("IDS_ST_MBODY_DISPLAY_ABB"));
121 _gl_menu_font_title_text_get(void *data, Evas_Object *obj, const char *part)
125 snprintf(buf, 1023, "%s", _("IDS_ST_BODY_FONT_STYLE"));
132 register_vconf_changing(VCONFKEY_WMS_WMANAGER_CONNECTED, change_language_enabling, NULL);
133 register_vconf_changing(VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL, change_screen_time_cb, NULL);
134 register_vconf_changing(VCONFKEY_LANGSET, change_language_cb, NULL);
136 /*_init_screen_rotate(); */
139 void _init_screen_rotate()
142 rotate = _get_rotate_screen();
143 rotate_screen_rot = rotate;
145 if (rotate == SETTING_SCREENROTATION_90_DEGREE) {
147 rotate_screen_index = 1;
148 } else if (rotate == SETTING_SCREENROTATION_270_DEGREE) {
150 rotate_screen_index = 2;
151 } else if (rotate == SETTING_SCREENROTATION_180_DEGREE) {
153 rotate_screen_index = 3;
157 rotate_screen_rot = SETTING_SCREENROTATION_0_DEGREE;
161 void _update_menu_text_when_lang_changed()
163 DBG("Setting - Language is changed...update display list");
165 if (g_display_genlist) {
166 elm_genlist_realized_items_update(g_display_genlist);
169 if (temp_ad && temp_ad->main_genlist) {
170 elm_genlist_realized_items_update(temp_ad->main_genlist);
174 Eina_Bool _clear_display_cb(void *data, Elm_Object_Item *it)
177 g_screen_time_genlist = NULL;
178 g_font_size_genlist = NULL;
179 g_font_style_genlist = NULL;
180 g_rotate_screen_genlist = NULL;
184 unregister_vconf_changing(VCONFKEY_WMS_WMANAGER_CONNECTED, change_language_enabling);
185 unregister_vconf_changing(VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL, change_screen_time_cb);
186 unregister_vconf_changing(VCONFKEY_LANGSET, change_language_cb);
191 void _display_gl_font_cb(void *data, Evas_Object *obj, void *event_info)
193 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
196 _show_font_list(data);
198 DBG("ad->font_name is NULL !!!!!!");
202 void _display_gl_font_style_cb(void *data, Evas_Object *obj, void *event_info)
204 DBG("_display_gl_font_style_cb");
206 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
209 _show_font_style_list(data);
213 void _display_gl_font_size_cb(void *data, Evas_Object *obj, void *event_info)
215 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
218 _show_font_size_list(data);
222 void _display_gl_rotate_screen_cb(void *data, Evas_Object *obj, void *event_info)
224 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
227 _show_rotate_screen_list(data);
231 void _display_gl_screen_timeout_cb(void *data, Evas_Object *obj, void *event_info)
233 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
236 _show_screen_timeout_list(data);
240 void _display_gl_language_cb(void *data, Evas_Object *obj, void *event_info)
242 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
244 Evas_Object *genlist = NULL;
245 Elm_Object_Item *nf_it = NULL;
249 DBG("Setting - ad is null");
253 if (ad->MENU_TYPE == SETTING_LANGUAGE) {
254 DBG("Already language screen enter:clear");
258 if (is_connected_GM()) {
259 DBG("Setting - language can not change!!");
261 /* automatic freed!! */
262 struct _toast_data *toast = _create_toast(ad, _("IDS_ST_TPOP_CHANGE_LANGUAGE_ON_MOBILE_DEVICE"));
264 _show_toast(ad, toast);
269 ad->MENU_TYPE = SETTING_LANGUAGE;
271 _initialize_language(ad);
272 _set_launguage_update_cb(_update_menu_text_when_lang_changed);
274 genlist = _create_lang_list(data);
275 if (genlist == NULL) {
276 DBG("%s", "language cb - genlist is null");
280 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, "empty");
282 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, NULL);
284 evas_object_event_callback_add(genlist, EVAS_CALLBACK_DEL, _clear_lang_cb, ad);
285 #if !defined(FEATURE_SETTING_TELEPHONY)
286 elm_naviframe_item_title_enabled_set(nf_it, FALSE, EINA_FALSE);
288 elm_object_item_domain_text_translatable_set(nf_it, SETTING_PACKAGE, EINA_TRUE);
290 ad->MENU_TYPE = SETTING_LANGUAGE;
293 Evas_Object *_gl_display_check_get(void *data, Evas_Object *obj, const char *part)
295 Evas_Object *check = NULL;
297 Display_Item_Data *id = data;
298 int index = id->index;
300 if (!strcmp(part, "elm.icon")) {
301 check = elm_check_add(obj);
303 if (vconf_get_bool(VCONFKEY_SETAPPL_AMBIENT_MODE_BOOL, &display_menu_its[0].is_enable_ambient_mode) < 0) {
304 display_menu_its[0].is_enable_ambient_mode = AMBIENT_MODE_ENABLE; /* default value of ambient mode: off */
306 elm_check_state_set(check, (display_menu_its[0].is_enable_ambient_mode) ? EINA_TRUE : EINA_FALSE);
307 evas_object_smart_callback_add(check, "changed", _display_ambient_mode_cb, (void *)1);
308 evas_object_size_hint_align_set(check, EVAS_HINT_FILL, EVAS_HINT_FILL);
309 evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
310 evas_object_propagate_events_set(check, EINA_FALSE);
321 char *_gl_display_title_get(void *data, Evas_Object *obj, const char *part)
323 char buf[1024] = {0,};
324 Display_Item_Data *id = data;
325 int index = id->index;
327 if (!strcmp(part, "elm.text")) {
328 if (id->item == lang_item) {
329 if (is_connected_GM()) {
330 snprintf(buf, sizeof(buf) - 1, "<font color=#515151>%s</font>",
331 _(display_menu_its[index].name));
333 snprintf(buf, sizeof(buf) - 1, "%s",
334 _(display_menu_its[index].name));
336 DBG("buf --->%s", buf);
338 snprintf(buf, sizeof(buf) - 1, "%s", _(display_menu_its[index].name));
339 DBG("buf --->%s", buf);
341 } else if (!strcmp(part, "elm.text.1")) {
342 if (id->item == edit_icon_item) {
343 char *str = _get_homeview_type_subtitle();
344 snprintf(buf, sizeof(buf) - 1, "%s", str);
345 DBG("buf --->%s", buf);
347 } else if (id->item == lang_item) {
348 const char *curr_lang = setting_get_lang_title();
350 if (is_connected_GM()) {
351 snprintf(buf, sizeof(buf) - 1, "<font color=#515151>%s</font>", curr_lang);
353 snprintf(buf, sizeof(buf) - 1, "%s", curr_lang);
355 DBG("buf --->%s", buf);
358 } else if (id->item == screen_time_item) {
360 vconf_get_int(VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL, &time);
363 snprintf(buf, sizeof(buf) - 1, _("IDS_ST_BODY_10SEC"), screen_time_str[0]);
366 snprintf(buf, sizeof(buf) - 1, _("IDS_ST_BODY_15SEC"), screen_time_str[1]);
369 snprintf(buf, sizeof(buf) - 1, _("IDS_ST_BODY_30SEC"), screen_time_str[2]);
372 snprintf(buf, sizeof(buf) - 1, _("IDS_ST_BODY_1_MINUTE_ABB2"), screen_time_str[3]);
375 snprintf(buf, sizeof(buf) - 1, _("IDS_ST_BODY_5_MINUTES"), screen_time_str[4]);
378 DBG("buf --->%s", buf);
380 snprintf(buf, sizeof(buf) - 1, "%s", _get_wake_up_gesture_sub_title());
381 DBG("buf --->%s", buf);
387 void _display_gl_del(void *data, Evas_Object *obj)
389 Display_Item_Data *id = data;
394 Evas_Object *_create_display_list(void *data)
398 DBG("%s", "_create_display_list - appdata is null");
401 Evas_Object *genlist = NULL;
402 struct _display_menu_item *menu_its = NULL;
407 Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
408 itc->item_style = "1text";
409 itc->func.text_get = _gl_display_title_get;
410 itc->func.del = _display_gl_del;
412 Elm_Genlist_Item_Class *itc2 = elm_genlist_item_class_new();
413 itc2->item_style = "2text";
414 itc2->func.text_get = _gl_display_title_get;
415 itc2->func.del = _display_gl_del;
417 Elm_Genlist_Item_Class *itc_ambient_md = elm_genlist_item_class_new();
418 itc_ambient_md->item_style = "1text.1icon.1";
419 itc_ambient_md->func.text_get = _gl_display_title_get;
420 itc_ambient_md->func.content_get = _gl_display_check_get;
421 itc_ambient_md->func.del = _display_gl_del;
423 genlist = elm_genlist_add(ad->nf);
424 elm_genlist_block_count_set(genlist, 14);
425 elm_genlist_homogeneous_set(genlist, EINA_TRUE);
426 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
429 Evas_Object *circle_genlist = eext_circle_object_genlist_add(genlist, ad->circle_surface);
430 eext_circle_object_genlist_scroller_policy_set(circle_genlist, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
431 eext_rotary_object_event_activated_set(circle_genlist, EINA_TRUE);
435 Elm_Genlist_Item_Class *title_item = elm_genlist_item_class_new();
436 title_item ->func.text_get = _gl_menu_title_text_get;
437 title_item->item_style = "title";
438 title_item->func.del = _display_gl_del;
440 elm_genlist_item_append(genlist, title_item, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
442 elm_genlist_item_class_free(title_item);
444 menu_its = display_menu_its;
446 int size = sizeof(display_menu_its) / sizeof(struct _display_menu_item);
448 for (idx = 0; idx < size; idx++) {
449 Elm_Genlist_Item_Class *itc_tmp = NULL;
451 if (menu_its[idx].type == SETTING_DISPLAY_GESTURE
452 || menu_its[idx].type == SETTING_DISPLAY_ICON_SIZE
453 || menu_its[idx].type == SETTING_DISPLAY_LANG
454 || menu_its[idx].type == SETTING_DISPLAY_SCREEN_TIME) {
456 } else if (menu_its[idx].type == SETTING_DISPLAY_AMBIENT_MODE) {
457 itc_tmp = itc_ambient_md;
462 Display_Item_Data *id = calloc(sizeof(Display_Item_Data), 1);
465 id->item = elm_genlist_item_append(
466 genlist, /* genlist object */
467 itc_tmp, /* item class */
470 ELM_GENLIST_ITEM_NONE,
471 menu_its[idx].func, /* call back */
474 if (menu_its[idx].type == SETTING_DISPLAY_LANG) {
475 lang_item = id->item;
476 } else if (menu_its[idx].type == SETTING_DISPLAY_GESTURE) {
477 DBG("wakeup item@!!!");
478 wake_up_item = id->item;
479 } else if (menu_its[idx].type == SETTING_DISPLAY_ICON_SIZE) {
480 DBG("edit icon item@!!!");
481 edit_icon_item = id->item;
482 } else if (menu_its[idx].type == SETTING_DISPLAY_SCREEN_TIME) {
483 DBG("screen time item@!!!");
484 screen_time_item = id->item;
485 } else if (menu_its[idx].type == SETTING_DISPLAY_AMBIENT_MODE) {
486 DBG("ambient mode item@!!!");
487 ambient_mode_item = id->item;
491 elm_genlist_item_class_free(itc);
492 elm_genlist_item_class_free(itc2);
493 elm_genlist_item_class_free(itc_ambient_md);
496 Elm_Genlist_Item_Class *padding = elm_genlist_item_class_new();
497 padding->item_style = "padding";
498 padding->func.del = _display_gl_del;
500 elm_genlist_item_append(genlist, padding, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
501 elm_genlist_item_class_free(padding);
503 g_display_genlist = genlist;
508 static char *_gl_screen_timeout_title_get(void *data, Evas_Object *obj, const char *part)
510 char buf[1024] = {0,};
511 Item_Data *id = data;
513 if (!strcmp(part, "elm.text")) {
514 if (id->index == 0) {
515 snprintf(buf, sizeof(buf) - 1, _("IDS_ST_BODY_10SEC"), screen_time_str[id->index]);
516 } else if (id->index == 1) {
517 snprintf(buf, sizeof(buf) - 1, _("IDS_ST_BODY_15SEC"), screen_time_str[id->index]);
518 } else if (id->index == 2) {
519 snprintf(buf, sizeof(buf) - 1, _("IDS_ST_BODY_30SEC"), screen_time_str[id->index]);
520 } else if (id->index == 3) {
521 snprintf(buf, sizeof(buf) - 1, _("IDS_ST_BODY_1_MINUTE_ABB2"), screen_time_str[id->index]);
523 snprintf(buf, sizeof(buf) - 1, _("IDS_ST_BODY_5_MINUTES"), screen_time_str[id->index]);
529 static int _get_timeout_index(int seconds)
533 length = sizeof(timeout_arr) / sizeof(timeout_arr[0]);
535 DBG("Setting - timeout_arr's length: %d", length);
537 for (index = 0; index < length; index++) {
538 if (timeout_arr[index] == seconds) {
539 DBG("Setting - timeout index : %d, sec : %d", index, timeout_arr[index]);
547 static void _screen_timeout_gl_cb(void *data, Evas_Object *obj, void *event_info)
549 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
551 screen_time_index = (int)data;
553 vconf_set_int(VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL , timeout_arr[screen_time_index]);
555 elm_genlist_realized_items_update(g_screen_time_genlist);
557 elm_naviframe_item_pop(temp_ad->nf);
558 if (!temp_ad->screen_timeout_rdg) {
559 evas_object_del(temp_ad->screen_timeout_rdg);
560 temp_ad->screen_timeout_rdg = NULL;
564 static Evas_Object *_gl_screen_timeout_ridio_get(void *data, Evas_Object *obj, const char *part)
566 Evas_Object *radio = NULL;
567 Evas_Object *radio_main = evas_object_data_get(obj, "radio_main");
568 Item_Data *id = data;
569 static int timeout = -1;
571 if (!strcmp(part, "elm.icon")) {
572 radio = elm_radio_add(obj);
573 elm_radio_state_value_set(radio, id->index);
574 evas_object_size_hint_align_set(radio, EVAS_HINT_FILL, EVAS_HINT_FILL);
575 evas_object_size_hint_weight_set(radio, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
576 elm_radio_group_add(radio, radio_main);
577 evas_object_smart_callback_add(radio, "changed", _screen_timeout_gl_cb, (void *)id->index);
578 evas_object_propagate_events_set(radio, EINA_FALSE);
581 vconf_get_int(VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL, &timeout);
582 screen_time_index = _get_timeout_index(timeout);
585 if (screen_time_index == id->index) {
586 elm_radio_value_set(radio_main, screen_time_index);
592 static void _screen_timeout_gl_del(void *data, Evas_Object *obj)
594 Item_Data *id = data;
601 _gl_menu_screen_timeout_title_text_get(void *data, Evas_Object *obj, const char *part)
605 snprintf(buf, 1023, "%s", _("IDS_ST_MBODY_SCREEN_TIMEOUT_ABB"));
609 void _show_screen_timeout_list(void *data)
613 DBG("%s", "_show_screen_timeout_list - appdata is null");
616 Evas_Object *genlist = NULL;
617 Elm_Object_Item *nf_it = NULL;
622 Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
623 itc->item_style = "1text.1icon.1";
624 itc->func.text_get = _gl_screen_timeout_title_get;
625 itc->func.content_get = _gl_screen_timeout_ridio_get;
626 itc->func.del = _screen_timeout_gl_del;
628 genlist = elm_genlist_add(ad->nf);
629 elm_genlist_block_count_set(genlist, 14);
630 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
631 evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
634 Evas_Object *circle_genlist = eext_circle_object_genlist_add(genlist, ad->circle_surface);
635 eext_circle_object_genlist_scroller_policy_set(circle_genlist, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
636 eext_rotary_object_event_activated_set(circle_genlist, EINA_TRUE);
640 Elm_Genlist_Item_Class *title_item = elm_genlist_item_class_new();
641 title_item ->func.text_get = _gl_menu_screen_timeout_title_text_get;
642 title_item->item_style = "title";
643 title_item->func.del = _screen_timeout_gl_del;
645 elm_genlist_item_append(genlist, title_item, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
647 elm_genlist_item_class_free(title_item);
650 vconf_get_int(VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL, &timeout);
651 screen_time_index = _get_timeout_index(timeout);
653 Elm_Object_Item *curr_item = NULL;
655 for (idx = 0; idx < SCREEN_TIME_COUNT; idx++) {
656 Item_Data *id = calloc(sizeof(Item_Data), 1);
659 id->item = elm_genlist_item_append(genlist, itc, id, NULL, ELM_GENLIST_ITEM_NONE, _screen_timeout_gl_cb, (void *)idx);
662 if (idx == screen_time_index) {
663 curr_item = id->item;
667 ad->screen_timeout_rdg = elm_radio_add(genlist);
668 elm_radio_state_value_set(ad->screen_timeout_rdg, 6);
669 elm_radio_value_set(ad->screen_timeout_rdg, screen_time_index);
671 evas_object_data_set(genlist, "radio_main", ad->screen_timeout_rdg);
674 elm_genlist_item_show(curr_item, ELM_GENLIST_ITEM_SCROLLTO_TOP);
678 Elm_Genlist_Item_Class *padding = elm_genlist_item_class_new();
679 padding->item_style = "padding";
680 padding->func.del = _screen_timeout_gl_del;
682 elm_genlist_item_append(genlist, padding, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
683 elm_genlist_item_class_free(padding);
685 g_screen_time_genlist = genlist;
687 elm_genlist_item_class_free(itc);
690 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, "empty");
692 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, NULL);
694 #if !defined(FEATURE_SETTING_TELEPHONY)
695 elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
697 elm_object_item_domain_text_translatable_set(nf_it, SETTING_PACKAGE, EINA_TRUE);
700 static char *_gl_font_title_get(void *data, Evas_Object *obj, const char *part)
702 char buf[1024] = {0};
703 Item_Data *id = data;
705 if (!strcmp(part, "elm.text") || !strcmp(part, "elm.text.1")) {
706 snprintf(buf, sizeof(buf) - 1, "%s", _(font_menu_its[id->index].name));
707 } else if (!strcmp(part, "elm.text.2")) {
708 if (id->index == SETTING_DISPLAY_FONT_STYLE) {
709 char *font_name = NULL;
710 if (system_settings_get_value_string(SYSTEM_SETTINGS_KEY_FONT_TYPE, &font_name)
711 != SYSTEM_SETTINGS_ERROR_NONE) {
712 ERR("failed to call system_setting_get_value_string with err");
717 DBG(" font_name <---------------------- (%s) ", font_name);
719 if (strstr(font_name, "Samsung")) {
720 snprintf(buf, sizeof(buf) - 1, "%s", _("IDS_ST_BODY_DEFAULT_FONT"));
722 if (!strcmp(font_name, "Choco cooky")) {
723 snprintf(buf, sizeof(buf) - 1, "%s", _("IDS_LCKSCN_BODY_CHOCO_COOKY_M_FONT"));
724 } else if (!strcmp(font_name, "Cool jazz")) {
725 snprintf(buf, sizeof(buf) - 1, "%s", _("IDS_ST_BODY_COOL_JAZZ"));
726 } else if (!strcmp(font_name, "Rosemary")) {
727 snprintf(buf, sizeof(buf) - 1, "%s", _("IDS_ST_BODY_FONTSTYLE_ROSEMARY"));
728 } else if (!strcmp(font_name, "Tinkerbell")) {
729 snprintf(buf, sizeof(buf) - 1, "%s", _("IDS_ST_MBODY_TINKERBELL"));
730 } else if (!strcmp(font_name, "Applemint")) {
731 snprintf(buf, sizeof(buf) - 1, "%s", _("IDS_RH_BUTTON2_APPLEMINT_M_FONT"));
732 } else if (!strcmp(font_name, "Kaiti")) {
733 snprintf(buf, sizeof(buf) - 1, "%s", _("IDS_ST_BODY_KAITI_M_FONT"));
734 } else if (!strcmp(font_name, "POP")) {
735 snprintf(buf, sizeof(buf) - 1, "%s", _("IDS_ST_BODY_POP_JPN_DCM"));
736 } else if (!strcmp(font_name, "UDMincho")) {
737 snprintf(buf, sizeof(buf) - 1, "%s", _("IDS_ST_BODY_UDMINCHO_JPN"));
738 } else if (!strcmp(font_name, "UDRGothic")) {
739 snprintf(buf, sizeof(buf) - 1, "%s", _("IDS_ST_BODY_UDRGOTHICM_JPN"));
740 } else if (!strcmp(font_name, "TizenSans")) {
741 snprintf(buf, sizeof(buf) - 1, "%s", _("TizenSans"));
743 snprintf(buf, sizeof(buf) - 1, "%s", font_name);
747 snprintf(buf, sizeof(buf) - 1, "%s", _("IDS_ST_BODY_UNKNOWN"));
749 } else if (id->index == SETTING_DISPLAY_FONT_SIZE) {
751 if (system_settings_get_value_int(SYSTEM_SETTINGS_KEY_FONT_SIZE, &font_size)
752 != SYSTEM_SETTINGS_ERROR_NONE) {
753 DBG("Setting - system_settings_get_value_int() is failed.");
756 if (font_size < 0 || font_size > 2) {
757 snprintf(buf, sizeof(buf) - 1, "%s", _("IDS_ST_BODY_UNKNOWN"));
759 snprintf(buf, sizeof(buf) - 1, "%s", _(font_size_str[font_size]));
767 static char *_gl_font_style_title_get(void *data, Evas_Object *obj, const char *part)
770 Font_Style_Item_Data *id = data;
772 char *pos = id->font_name;
776 while (pos && *pos != '\0') {
778 new_name[count] = '\\';
780 new_name[count] = ' ';
782 new_name[count] = id->font_name[i];
789 new_name[count] = '\0';
791 if (!strcmp(part, "elm.text")) {
793 if (id->index == 0) {
794 snprintf(buf, sizeof(buf) - 1, "<font=%s>%s</font>", new_name, _("IDS_ST_BODY_DEFAULT_FONT"));
798 if (!strcmp(id->font_name, "Choco cooky")) {
799 snprintf(buf, sizeof(buf) - 1, "<font=%s>%s</font>", new_name, _("IDS_LCKSCN_BODY_CHOCO_COOKY_M_FONT"));
800 } else if (!strcmp(id->font_name, "Cool jazz")) {
801 snprintf(buf, sizeof(buf) - 1, "<font=%s>%s</font>", new_name, _("IDS_ST_BODY_COOL_JAZZ"));
802 } else if (!strcmp(id->font_name, "Rosemary")) {
803 snprintf(buf, sizeof(buf) - 1, "<font=%s>%s</font>", new_name, _("IDS_ST_BODY_FONTSTYLE_ROSEMARY"));
804 } else if (!strcmp(id->font_name, "Tinkerbell")) {
805 snprintf(buf, sizeof(buf) - 1, "<font=%s>%s</font>", new_name, _("IDS_ST_MBODY_TINKERBELL"));
806 } else if (!strcmp(id->font_name, "Applemint")) {
807 snprintf(buf, sizeof(buf) - 1, "<font=%s>%s</font>", new_name, _("IDS_RH_BUTTON2_APPLEMINT_M_FONT"));
808 } else if (!strcmp(id->font_name, "Kaiti")) {
809 snprintf(buf, sizeof(buf) - 1, "<font=%s>%s</font>", new_name, _("IDS_ST_BODY_KAITI_M_FONT"));
810 } else if (!strcmp(id->font_name, "POP")) {
811 snprintf(buf, sizeof(buf) - 1, "<font=%s>%s</font>", new_name, _("IDS_ST_BODY_POP_JPN_DCM"));
812 } else if (!strcmp(id->font_name, "UDMincho")) {
813 snprintf(buf, sizeof(buf) - 1, "<font=%s>%s</font>", new_name, _("IDS_ST_BODY_UDMINCHO_JPN"));
814 } else if (!strcmp(id->font_name, "UDRGothic")) {
815 snprintf(buf, sizeof(buf) - 1, "<font=%s>%s</font>", new_name, _("IDS_ST_BODY_UDRGOTHICM_JPN"));
817 snprintf(buf, sizeof(buf) - 1, "<font=%s>%s</font>", new_name, id->font_name);
824 DBG("font = %s", buf);
828 static Evas_Object *_gl_font_style_ridio_get(void *data, Evas_Object *obj, const char *part)
830 Evas_Object *radio = NULL;
831 Evas_Object *radio_main = evas_object_data_get(obj, "radio_main");
832 Font_Style_Item_Data *id = data;
834 if (!strcmp(part, "elm.icon")) {
835 radio = elm_radio_add(obj);
836 elm_radio_state_value_set(radio, id->index);
837 evas_object_size_hint_align_set(radio, EVAS_HINT_FILL, EVAS_HINT_FILL);
838 evas_object_size_hint_weight_set(radio, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
839 elm_radio_group_add(radio, radio_main);
841 evas_object_smart_callback_add(radio, "clicked", _font_style_gl_cb, (void *)id);
842 evas_object_propagate_events_set(radio, EINA_FALSE);
848 static void _font_style_gl_del(void *data, Evas_Object *obj)
850 Font_Style_Item_Data *id = data;
857 static char *_gl_font_size_title_get(void *data, Evas_Object *obj, const char *part)
859 int old_font_size = -1;
860 if (system_settings_get_value_int(SYSTEM_SETTINGS_KEY_FONT_SIZE, &old_font_size)
861 != SYSTEM_SETTINGS_ERROR_NONE) {
862 DBG("Setting - system_settings_get_value_int() is failed.");
864 char buf[1024] = {0,};
865 Item_Data *id = data;
867 if (!strcmp(part, "elm.text")) {
868 if (id->index == 0) {
869 snprintf(buf, sizeof(buf) - 1, "<font_size=30>%s</font_size>", _(font_size_str[id->index]));
870 } else if (id->index == 1) {
871 snprintf(buf, sizeof(buf) - 1, "<font_size=38>%s</font_size>", _(font_size_str[id->index]));
873 snprintf(buf, sizeof(buf) - 1, "<font_size=46>%s</font_size>", _(font_size_str[id->index]));
879 static Evas_Object *_gl_font_size_ridio_get(void *data, Evas_Object *obj, const char *part)
881 Evas_Object *radio = NULL;
882 Evas_Object *radio_main = evas_object_data_get(obj, "radio_main");
883 Item_Data *id = data;
885 int old_font_size = -1;
886 if (system_settings_get_value_int(SYSTEM_SETTINGS_KEY_FONT_SIZE, &old_font_size)
887 != SYSTEM_SETTINGS_ERROR_NONE) {
888 DBG("Setting - system_settings_get_value_int() is failed.");
891 if (!strcmp(part, "elm.icon")) {
892 radio = elm_radio_add(obj);
893 elm_radio_state_value_set(radio, id->index);
894 evas_object_size_hint_align_set(radio, EVAS_HINT_FILL, EVAS_HINT_FILL);
895 evas_object_size_hint_weight_set(radio, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
896 elm_radio_group_add(radio, radio_main);
897 evas_object_smart_callback_add(radio, "changed", _font_size_gl_cb, (void *)id->index);
898 evas_object_propagate_events_set(radio, EINA_FALSE);
900 if (old_font_size == id->index) {
901 elm_radio_value_set(radio_main, old_font_size);
907 static void _font_size_gl_del(void *data, Evas_Object *obj)
909 Item_Data *id = data;
914 static Ecore_Timer *font_timer = NULL;
916 static Eina_Bool _update_font_style(void *data)
918 /* change font style */
920 system_settings_set_value_string(SYSTEM_SETTINGS_KEY_FONT_TYPE, font_name);
923 ERR("font_name is null");
927 return ECORE_CALLBACK_CANCEL;
930 static void _font_style_cancel_cb(void *data, Evas_Object *obj, void *event_info)
934 ERR("appdata is null");
938 elm_naviframe_item_pop(ad->nf);
939 if (!ad->font_style_rdg) {
940 evas_object_del(ad->font_style_rdg);
941 ad->font_style_rdg = NULL;
947 static void _font_style_ok_cb(void *data, Evas_Object *obj, void *event_info)
951 ERR("appdata is null");
955 elm_naviframe_item_pop(ad->nf);
957 if (!ad->font_style_rdg) {
958 evas_object_del(ad->font_style_rdg);
959 ad->font_style_rdg = NULL;
963 ecore_timer_del(font_timer);
966 font_timer = ecore_timer_add(0.3, (Ecore_Task_Cb) _update_font_style, NULL);
970 static void _font_style_gl_cb(void *data, Evas_Object *obj, void *event_info)
972 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
973 Font_Style_Item_Data *id = (Font_Style_Item_Data *)data;
975 /*elm_radio_value_set(temp_ad->font_style_rdg, id->index); */
980 font_name = strdup(id->font_name);
983 /*elm_genlist_realized_items_update(g_font_style_genlist); */
984 elm_naviframe_item_pop(temp_ad->nf);
986 if (font_style_item) {
987 elm_genlist_item_update(font_style_item);
990 if (!temp_ad->font_style_rdg) {
991 evas_object_del(temp_ad->font_style_rdg);
992 temp_ad->font_style_rdg = NULL;
996 ecore_timer_del(font_timer);
999 font_timer = ecore_timer_add(0.3, (Ecore_Task_Cb) _update_font_style, NULL);
1002 static Eina_Bool _update_font_size(void *data)
1004 /* change font size */
1005 system_settings_set_value_int(SYSTEM_SETTINGS_KEY_FONT_SIZE, font_size_index);
1009 if (font_size_item) {
1010 elm_genlist_item_update(font_size_item);
1013 return ECORE_CALLBACK_CANCEL;
1016 static void _font_size_gl_cb(void *data, Evas_Object *obj, void *event_info)
1018 int old_font_size = 0;
1020 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
1022 if (system_settings_get_value_int(SYSTEM_SETTINGS_KEY_FONT_SIZE, &old_font_size)
1023 != SYSTEM_SETTINGS_ERROR_NONE) {
1024 DBG("Setting - system_settings_get_value_int() is failed.");
1027 DBG("Setting - old font size is %d.", old_font_size);
1029 font_size_index = (int)data;
1031 DBG("Setting - Curr font size is %d.", font_size_index);
1033 /*elm_genlist_realized_items_update(g_font_size_genlist); */
1035 elm_naviframe_item_pop(temp_ad->nf);
1037 if (!temp_ad->font_size_rdg) {
1038 evas_object_del(temp_ad->font_size_rdg);
1039 temp_ad->font_size_rdg = NULL;
1043 ecore_timer_del(font_timer);
1047 if (old_font_size != font_size_index) {
1048 DBG("Setting - font size is same with old.");
1049 font_timer = ecore_timer_add(0.3, (Ecore_Task_Cb) _update_font_size, NULL);
1055 _gl_menu_font_list_title_text_get(void *data, Evas_Object *obj, const char *part)
1059 snprintf(buf, 1023, "%s", _("IDS_ST_BODY_FONT"));
1063 void _show_font_list(void *data)
1067 DBG("%s", "_show_font_list - appdata is null");
1071 Evas_Object *genlist = NULL;
1072 Elm_Object_Item *nf_it = NULL;
1077 Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
1078 itc->item_style = "2text";
1079 itc->func.text_get = _gl_font_title_get;
1080 itc->func.del = _font_size_gl_del;
1082 Evas_Object *layout = elm_layout_add(ad->nf);
1083 elm_layout_file_set(layout, EDJE_PATH, "setting/genlist/layout");
1084 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1086 genlist = elm_genlist_add(layout);
1087 elm_genlist_block_count_set(genlist, 14);
1088 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
1089 evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1092 Elm_Genlist_Item_Class *title_item = elm_genlist_item_class_new();
1093 title_item ->func.text_get = _gl_menu_font_list_title_text_get;
1094 title_item->item_style = "title";
1095 title_item->func.del = _font_size_gl_del;
1097 elm_genlist_item_append(genlist, title_item, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
1099 elm_genlist_item_class_free(title_item);
1102 for (idx = 0; idx < 1; idx++) {
1103 Item_Data *id = calloc(sizeof(Item_Data), 1);
1106 id->item = elm_genlist_item_append(genlist, itc, id, NULL,
1107 ELM_GENLIST_ITEM_NONE, _display_gl_font_style_cb, ad);
1110 font_style_item = id->item;
1116 Elm_Genlist_Item_Class *padding = elm_genlist_item_class_new();
1117 padding->item_style = "padding";
1118 padding->func.del = _font_size_gl_del;
1120 elm_genlist_item_append(genlist, padding, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
1121 elm_genlist_item_class_free(padding);
1124 elm_object_part_content_set(layout, "elm.genlist", genlist);
1126 elm_genlist_item_class_free(itc);
1129 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, layout,"empty");
1131 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, layout, NULL);
1134 #if !defined(FEATURE_SETTING_TELEPHONY)
1135 elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
1137 elm_object_item_domain_text_translatable_set(nf_it, SETTING_PACKAGE, EINA_TRUE);
1138 elm_naviframe_item_pop_cb_set(nf_it, setting_font_list_pop_cb, ad);
1140 if (system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_FONT_TYPE, settings_font_style_changed_cb, ad) != 0) {
1141 ERR("system_settings_set_changed_cb failed!!");
1145 char *_get_default_font()
1147 xmlDocPtr doc = NULL;
1148 xmlNodePtr cur = NULL;
1149 xmlNodePtr cur2 = NULL;
1150 xmlNodePtr cur3 = NULL;
1151 xmlChar *key = NULL;
1152 struct _xmlAttr *properties = NULL;
1153 char *default_font_name = NULL;
1155 doc = xmlParseFile("/usr/opt/etc/fonts/conf.avail/99-slp.conf");
1157 cur = xmlDocGetRootElement(doc);
1165 if (xmlStrcmp(cur->name, (const xmlChar *)"fontconfig")) {
1171 cur = cur->xmlChildrenNode;
1173 while (cur != NULL) {
1174 if ((!xmlStrcmp(cur->name, (const xmlChar *)"match"))) {
1175 cur2 = cur->xmlChildrenNode;
1176 while (cur2 != NULL) {
1177 if ((!xmlStrcmp(cur2->name, (const xmlChar *)"edit"))) {
1178 properties = cur2->properties;
1179 /*find the "name" property*/
1180 while (NULL != properties) {
1181 if (!xmlStrcmp(properties->name, (const xmlChar *)"name")) {
1184 properties = properties->next;
1187 /*If the value of "name" property is "family", then get the child node string,
1188 it shall be the default font type*/
1189 if (NULL != properties && !xmlStrcmp(properties->children->content, (const xmlChar *)"family")) {
1190 cur3 = cur2->xmlChildrenNode;
1191 while (cur3 != NULL) {
1192 if ((!xmlStrcmp(cur3->name, (const xmlChar *)"string"))) {
1193 key = xmlNodeListGetString(doc, cur3->xmlChildrenNode, 1);
1194 default_font_name = (char *)g_strdup((char *)key);
1199 return default_font_name;
1216 static Eina_List *_get_available_font_list()
1218 FcObjectSet *os = NULL;
1219 FcFontSet *fs = NULL;
1220 FcPattern *pat = NULL;
1221 Eina_List *list = NULL;
1222 FcConfig *font_config = NULL;
1224 font_config = FcInitLoadConfigAndFonts();
1226 if (font_config == NULL) {
1227 ERR("Failed: FcInitLoadConfigAndFonts");
1231 char *locale = setlocale(0, NULL);
1233 pat = FcPatternCreate();
1235 os = FcObjectSetBuild(FC_FAMILY, FC_FILE, FC_FAMILYLANG, (char *) 0);
1238 fs = FcFontList(font_config, pat, os);
1239 FcObjectSetDestroy(os);
1244 FcPatternDestroy(pat);
1250 DBG("fs->nfont = %d", fs->nfont);
1252 for (j = 0; j < fs->nfont; j++) {
1253 FcChar8 *family = NULL;
1254 FcChar8 *file = NULL;
1255 FcChar8 *lang = NULL;
1258 if (FcPatternGetString(fs->fonts[j], FC_FILE, 0, &file) == FcResultMatch) {
1259 int preload_path_len = strlen(SETTING_FONT_PRELOAD_FONT_PATH);
1260 int download_path_len = strlen(SETTING_FONT_DOWNLOADED_FONT_PATH);
1262 char *family_result = NULL;
1264 if (FcPatternGetString(fs->fonts[j], FC_FAMILY, 0, &family) != FcResultMatch) {
1265 DBG("Family name is invalid");
1269 if (FcPatternGetString(fs->fonts[j], FC_FAMILYLANG, id, &lang) != FcResultMatch) {
1270 DBG("Family lang is invalid");
1274 if (!strncmp((const char *)file, SETTING_FONT_PRELOAD_FONT_PATH, preload_path_len)) {
1275 /* Find proper family name for current locale. */
1276 while (locale && family && lang) {
1277 /*DBG("locale: %s, family: %s, lang: %s", locale, family, lang); */
1279 if (!strncmp(locale, (char *)lang, strlen((char *)lang))) {
1280 family_result = (char *)family;
1284 /* I will set english as default family language. */
1285 /* If there is no proper family language for current locale, */
1286 /* we have to show the english family name. */
1287 if (!strcmp(lang, "en")) {
1288 family_result = (char *)family;
1291 if (FcPatternGetString(fs->fonts[j], FC_FAMILY, id, &family) != FcResultMatch) {
1294 if (FcPatternGetString(fs->fonts[j], FC_FAMILYLANG, id, &lang) != FcResultMatch) {
1299 if (eina_list_data_find(list, family_result) == NULL) {
1300 list = eina_list_append(list, family_result);
1301 DBG("-------- ADDED FONT - family result = %s", (char *)family_result);
1307 /* always shown for D/L */
1308 if (!strncmp((const char *)file, SETTING_FONT_DOWNLOADED_FONT_PATH, download_path_len)) {
1309 /* Find proper family name for current locale. */
1310 while (locale && family && lang) {
1311 /*DBG("locale: %s, family: %s, lang: %s", locale, family, lang); */
1313 if (!strncmp(locale, (char *)lang, strlen((char *)lang))) {
1314 family_result = (char *)family;
1318 /* I will set english as default family language. */
1319 /* If there is no proper family language for current locale, */
1320 /* we have to show the english family name. */
1321 if (!strcmp(lang, "en")) {
1322 family_result = (char *)family;
1325 if (FcPatternGetString(fs->fonts[j], FC_FAMILY, id, &family) != FcResultMatch) {
1328 if (FcPatternGetString(fs->fonts[j], FC_FAMILYLANG, id, &lang) != FcResultMatch) {
1333 if (eina_list_data_find(list, family_result) == NULL) {
1334 list = eina_list_append(list, family_result);
1335 DBG("-------- ADDED FONT - family result = %s", (char *)family_result);
1340 FcFontSetDestroy(fs);
1344 FcConfigDestroy(font_config);
1349 int _show_font_style_list(void *data)
1353 DBG("%s", "_show_font_style_list - appdata is null");
1356 Evas_Object *genlist = NULL;
1357 Evas_Object *btn = NULL;
1358 Elm_Object_Item *nf_it = NULL;
1359 char *default_font_name = NULL;
1360 char *tmp_name = NULL;
1361 int idx = 0, matched_idx = 0;
1366 Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
1367 itc->item_style = "1text.1icon.1";
1368 itc->func.text_get = _gl_font_style_title_get;
1369 itc->func.content_get = _gl_font_style_ridio_get;
1370 itc->func.del = _font_style_gl_del;
1372 Evas_Object *layout = elm_layout_add(ad->nf);
1373 elm_layout_file_set(layout, EDJE_PATH, "setting/genlist/layout");
1374 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1376 genlist = elm_genlist_add(layout);
1377 elm_genlist_block_count_set(genlist, 14);
1378 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
1379 evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1382 ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_FONT_TYPE, &tmp_name);
1383 if (ret != SYSTEM_SETTINGS_ERROR_NONE) {
1384 ERR("failed to call system_setting_get_value_string with err %d", ret);
1385 tmp_name = _get_default_font();
1386 if (tmp_name == NULL) {
1387 ERR("failed to get default font name");
1390 DBG("get_default_font = %s", tmp_name);
1393 DBG("SYSTEM_SETTINGS_KEY_FONT_TYPE = %s", tmp_name);
1396 default_font_name = _get_default_font();
1399 Elm_Genlist_Item_Class *title_item = elm_genlist_item_class_new();
1400 title_item ->func.text_get = _gl_menu_font_title_text_get;
1401 title_item->item_style = "title";
1402 title_item->func.del = _font_style_gl_del;
1404 elm_genlist_item_append(genlist, title_item, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
1406 elm_genlist_item_class_free(title_item);
1408 if (default_font_name) {
1409 Font_Style_Item_Data *id_default = calloc(sizeof(Font_Style_Item_Data), 1);
1410 if (default_font_name && tmp_name && !strcmp(tmp_name, default_font_name)) {
1412 font_name = strdup(tmp_name);
1415 id_default->index = idx++;
1416 id_default->font_name = strdup(default_font_name);
1417 id_default->item = elm_genlist_item_append(genlist, itc, id_default, NULL, ELM_GENLIST_ITEM_NONE,
1418 _font_style_gl_cb, (void *)id_default);
1421 ERR("default_font_name is NULL");
1425 Eina_List *font_list = NULL;
1426 Eina_List *l = NULL;
1427 FcChar8 *font_data = NULL;
1428 font_list = _get_available_font_list();
1429 EINA_LIST_FOREACH(font_list, l, font_data) {
1430 if (!default_font_name || strcmp((const char *)default_font_name, (const char *)font_data)) {
1431 Font_Style_Item_Data *id = calloc(sizeof(Item_Data), 1);
1432 if (tmp_name && !strcmp((const char *)tmp_name, (const char *)font_data)) {
1434 font_name = strdup(tmp_name);
1437 DBG("font_data -------> %s", (const char *)font_data);
1441 id->font_name = (char *)strdup((char *)font_data);
1442 id->item = elm_genlist_item_append(genlist, itc, id, NULL, ELM_GENLIST_ITEM_NONE,
1443 _font_style_gl_cb, (void *)id);
1449 ad->font_style_rdg = elm_radio_add(genlist);
1450 elm_radio_state_value_set(ad->font_style_rdg, -1);
1451 elm_radio_value_set(ad->font_style_rdg, matched_idx);
1453 evas_object_data_set(genlist, "radio_main", ad->font_style_rdg);
1456 Elm_Genlist_Item_Class *padding = elm_genlist_item_class_new();
1457 padding->item_style = "padding";
1458 padding->func.del = _font_style_gl_del;
1460 elm_genlist_item_append(genlist, padding, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
1461 elm_genlist_item_class_free(padding);
1463 g_font_style_genlist = genlist;
1465 elm_object_part_content_set(layout, "elm.genlist", genlist);
1467 elm_genlist_item_class_free(itc);
1469 evas_object_smart_callback_add(genlist, "language,changed", _lang_update_font_style_list, ad);
1472 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, layout, "empty");
1474 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, layout, NULL);
1476 #if !defined(FEATURE_SETTING_TELEPHONY)
1477 elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
1479 elm_object_item_domain_text_translatable_set(nf_it, SETTING_PACKAGE, EINA_TRUE);
1480 elm_naviframe_item_pop_cb_set(nf_it, setting_font_style_pop_cb, ad);
1485 static void _lang_update_font_style_list(void *data, Evas_Object *obj, void *event_info)
1487 DBG("_lang_update_font_style_list");
1491 DBG("%s", "_lang_update_font_style_list - appdata is null");
1495 if (g_font_style_genlist) {
1496 elm_genlist_clear(g_font_style_genlist);
1498 char *default_font_name = NULL;
1499 char *tmp_name = NULL;
1500 int idx = 0, matched_idx = 0;
1503 Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
1504 itc->item_style = "1text.1icon.1";
1505 itc->func.text_get = _gl_font_style_title_get;
1506 itc->func.content_get = _gl_font_style_ridio_get;
1507 itc->func.del = _font_style_gl_del;
1510 ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_FONT_TYPE, &tmp_name);
1511 if (ret != SYSTEM_SETTINGS_ERROR_NONE) {
1512 ERR("failed to call system_setting_get_value_string with err %d", ret);
1513 tmp_name = _get_default_font();
1516 default_font_name = _get_default_font();
1518 Font_Style_Item_Data *id_default = calloc(sizeof(Font_Style_Item_Data), 1);
1519 if (default_font_name && tmp_name && !strcmp(tmp_name, default_font_name)) {
1521 font_name = strdup(tmp_name);
1524 id_default->index = idx++;
1525 id_default->font_name = (default_font_name != NULL) ? strdup(default_font_name) : NULL;
1526 id_default->item = elm_genlist_item_append(g_font_style_genlist, itc, id_default, NULL, ELM_GENLIST_ITEM_NONE,
1527 _font_style_gl_cb, (void *)id_default);
1530 Eina_List *font_list = NULL;
1531 Eina_List *l = NULL;
1532 FcChar8 *font_data = NULL;
1533 font_list = _get_available_font_list();
1534 EINA_LIST_FOREACH(font_list, l, font_data) {
1535 if (!default_font_name || strcmp((const char *)default_font_name, (const char *)font_data)) {
1536 Font_Style_Item_Data *id = calloc(sizeof(Item_Data), 1);
1537 if (tmp_name && !strcmp((const char *)tmp_name, (const char *)font_data)) {
1539 font_name = strdup(tmp_name);
1541 DBG("Font1: %s, Font2: %s", tmp_name, font_data);
1545 id->font_name = (char *)strdup((char *)font_data);
1546 id->item = elm_genlist_item_append(g_font_style_genlist, itc, id, NULL, ELM_GENLIST_ITEM_NONE,
1547 _font_style_gl_cb, (void *)id);
1552 ad->font_style_rdg = evas_object_data_get(g_font_style_genlist, "radio_main");
1553 if (ad->font_style_rdg) {
1554 evas_object_del(ad->font_style_rdg);
1555 ad->font_style_rdg = NULL;
1559 ad->font_style_rdg = elm_radio_add(g_font_style_genlist);
1560 elm_radio_state_value_set(ad->font_style_rdg, -1);
1562 evas_object_data_set(g_font_style_genlist, "radio_main", ad->font_style_rdg);
1564 elm_genlist_realized_items_update(g_font_style_genlist);
1566 DBG("Matched index: %d", matched_idx);
1568 elm_radio_value_set(ad->font_style_rdg, matched_idx);
1570 elm_genlist_item_class_free(itc);
1576 _gl_menu_font_size_title_text_get(void *data, Evas_Object *obj, const char *part)
1580 snprintf(buf, 1023, "%s", _("IDS_ST_BODY_FONT_SIZE_ABB"));
1584 void _show_font_size_list(void *data)
1588 DBG("%s", "_show_screen_timeout_list - appdata is null");
1591 Evas_Object *genlist = NULL;
1592 Elm_Object_Item *nf_it = NULL;
1593 struct _dt_menu_item *menu_its = NULL;
1598 Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
1599 itc->item_style = "1text.1icon.1";
1600 itc->func.text_get = _gl_font_size_title_get;
1601 itc->func.content_get = _gl_font_size_ridio_get;
1602 itc->func.del = _font_size_gl_del;
1604 Evas_Object *layout = elm_layout_add(ad->nf);
1605 elm_layout_file_set(layout, EDJE_PATH, "setting/genlist/layout");
1606 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1608 genlist = elm_genlist_add(layout);
1609 elm_genlist_block_count_set(genlist, 14);
1610 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
1611 evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1614 Elm_Genlist_Item_Class *title_item = elm_genlist_item_class_new();
1615 title_item ->func.text_get = _gl_menu_font_size_title_text_get;
1616 title_item->item_style = "title";
1617 title_item->func.del = _font_size_gl_del;
1619 elm_genlist_item_append(genlist, title_item, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
1621 elm_genlist_item_class_free(title_item);
1623 for (idx = 0; idx < FONT_SIZE_COUNT; idx++) {
1624 Item_Data *id = calloc(sizeof(Item_Data), 1);
1627 id->item = elm_genlist_item_append(genlist, itc, id, NULL, ELM_GENLIST_ITEM_NONE, _font_size_gl_cb, (void *)idx);
1631 ad->font_size_rdg = elm_radio_add(genlist);
1632 elm_radio_state_value_set(ad->font_size_rdg, 6);
1633 elm_radio_value_set(ad->font_size_rdg, screen_time_index);
1635 evas_object_data_set(genlist, "radio_main", ad->font_size_rdg);
1637 g_font_size_genlist = genlist;
1640 Elm_Genlist_Item_Class *padding = elm_genlist_item_class_new();
1641 padding->item_style = "padding";
1642 padding->func.del = _font_size_gl_del;
1644 elm_genlist_item_append(genlist, padding, NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
1645 elm_genlist_item_class_free(padding);
1647 elm_object_part_content_set(layout, "elm.genlist", genlist);
1649 elm_genlist_item_class_free(itc);
1652 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, layout, "empty");
1654 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, layout, NULL);
1656 #if !defined(FEATURE_SETTING_TELEPHONY)
1657 elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
1659 elm_object_item_domain_text_translatable_set(nf_it, SETTING_PACKAGE, EINA_TRUE);
1662 static char *_gl_roatate_screen_title_get(void *data, Evas_Object *obj, const char *part)
1664 char buf[1024] = {0,};
1665 Item_Data *id = data;
1667 if (!strcmp(part, "elm.text")) {
1668 snprintf(buf, sizeof(buf) - 1, "%s", _(rotate_screen_str[id->index]));
1674 static Evas_Object *_gl_rotate_screen_radio_get(void *data, Evas_Object *obj, const char *part)
1676 Evas_Object *radio = NULL;
1677 Evas_Object *radio_main = evas_object_data_get(obj, "radio_main");
1678 Item_Data *id = data;
1679 static int rotate = -1;
1681 if (!strcmp(part, "elm.icon")) {
1682 radio = elm_radio_add(obj);
1683 elm_radio_state_value_set(radio, id->index);
1684 evas_object_size_hint_align_set(radio, EVAS_HINT_FILL, EVAS_HINT_FILL);
1685 evas_object_size_hint_weight_set(radio, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1686 elm_radio_group_add(radio, radio_main);
1689 rotate = _get_rotate_screen();
1690 rotate_screen_rot = rotate;
1692 if (rotate == SETTING_SCREENROTATION_90_DEGREE) {
1694 rotate_screen_index = 1;
1695 } else if (rotate == SETTING_SCREENROTATION_270_DEGREE) {
1697 rotate_screen_index = 2;
1698 } else if (rotate == SETTING_SCREENROTATION_180_DEGREE) {
1700 rotate_screen_index = 3;
1704 rotate_screen_rot = SETTING_SCREENROTATION_0_DEGREE;
1710 static void _rotate_screen_gl_del(void *data, Evas_Object *obj)
1712 Item_Data *id = data;
1717 static void _rotate_screen_gl_cb(void *data, Evas_Object *obj, void *event_info)
1719 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
1721 rotate_screen_index = (int)data;
1723 if (rotate_screen_index == 1) {
1725 rotate_screen_rot = SETTING_SCREENROTATION_90_DEGREE;
1726 } else if (rotate_screen_index == 2) {
1728 rotate_screen_rot = SETTING_SCREENROTATION_270_DEGREE;
1729 } else if (rotate_screen_index == 3) {
1731 rotate_screen_rot = SETTING_SCREENROTATION_180_DEGREE;
1733 rotate_screen_rot = SETTING_SCREENROTATION_0_DEGREE;
1737 _set_rotate_screen(rotate_screen_rot);
1739 elm_genlist_realized_items_update(g_rotate_screen_genlist);
1741 elm_naviframe_item_pop(temp_ad->nf);
1742 if (!temp_ad->rotate_screen_rdg) {
1743 evas_object_del(temp_ad->rotate_screen_rdg);
1744 temp_ad->rotate_screen_rdg = NULL;
1748 void _show_rotate_screen_list(void *data)
1752 DBG("%s", "_show_screen_timeout_list - appdata is null");
1755 Evas_Object *genlist = NULL;
1756 Elm_Object_Item *nf_it = NULL;
1757 struct _dt_menu_item *menu_its = NULL;
1762 Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
1763 itc->item_style = "1text.1icon.1";
1764 itc->func.text_get = _gl_roatate_screen_title_get;
1765 itc->func.content_get = _gl_rotate_screen_radio_get;
1766 itc->func.del = _rotate_screen_gl_del;
1768 genlist = elm_genlist_add(ad->nf);
1769 elm_genlist_block_count_set(genlist, 14);
1770 evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1772 for (idx = 0; idx < ROTATE_SCREEN_COUNT; idx++) {
1773 Item_Data *id = calloc(sizeof(Item_Data), 1);
1776 id->item = elm_genlist_item_append(genlist, itc, id, NULL, ELM_GENLIST_ITEM_NONE, _rotate_screen_gl_cb, (void *)idx);
1780 ad->rotate_screen_rdg = elm_radio_add(genlist);
1781 elm_radio_state_value_set(ad->rotate_screen_rdg, -1);
1782 elm_radio_value_set(ad->rotate_screen_rdg, rotate_screen_index);
1784 evas_object_data_set(genlist, "radio_main", ad->rotate_screen_rdg);
1786 g_screen_time_genlist = genlist;
1788 elm_genlist_item_class_free(itc);
1790 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, NULL);
1791 elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
1794 static void _set_rotate_screen(const int rotation)
1796 vconf_set_int(VCONFKEY_SETAPPL_SCREENROTATION_DEG_INT, rotation);
1799 static int _get_rotate_screen()
1802 vconf_get_int(VCONFKEY_SETAPPL_SCREENROTATION_DEG_INT, &rot);
1806 static void settings_font_style_changed_cb(system_settings_key_e key, void *user_data)
1808 DBG("settings_font_style_changed_cb");
1810 appdata *ad = user_data;
1814 char *font_name = NULL;
1815 Evas_Object *font_style_radio = NULL;
1816 if (g_font_style_genlist) {
1817 font_style_radio = evas_object_data_get(g_font_style_genlist, "radio_main");
1818 if (font_style_radio) {
1819 if (system_settings_get_value_string(SYSTEM_SETTINGS_KEY_FONT_TYPE, &font_name)
1820 != SYSTEM_SETTINGS_ERROR_NONE) {
1821 ERR("failed to call system_setting_get_value_string with err");
1825 DBG("Update a font style list");
1827 DBG("System font: %s", font_name);
1830 Eina_List *font_list = NULL;
1831 Eina_List *l = NULL;
1832 Elm_Object_Item *font_item = NULL;
1833 Font_Style_Item_Data *font_data = NULL;
1835 font_list = elm_genlist_realized_items_get(g_font_style_genlist);
1836 EINA_LIST_FOREACH(font_list, l, font_item) {
1837 font_data = (Font_Style_Item_Data *) elm_object_item_data_get(font_item);
1838 if (font_name && !strcmp((const char *)font_name, (const char *)font_data->font_name)) {
1839 DBG("1: %s, 2: %s", font_name, font_data->font_name);
1840 DBG("Font style matched index : %d", index);
1841 elm_radio_value_set(font_style_radio, index);
1849 if (font_style_item) {
1850 elm_genlist_item_update(font_style_item);
1854 static Eina_Bool setting_font_style_pop_cb(void *data, Elm_Object_Item *it)
1856 DBG("setting_font_style_pop_cb");
1858 g_font_style_genlist = NULL;
1863 static Eina_Bool setting_font_list_pop_cb(void *data, Elm_Object_Item *it)
1865 DBG("setting_font_list_pop_cb");
1867 font_size_item = NULL;
1868 font_style_item = NULL;
1870 if (system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_FONT_TYPE) != 0) {
1871 ERR("system_settings_unset_changed_cb failed!!");
1877 static void change_language_enabling(keynode_t *key, void *data)
1879 if (lang_item == NULL) {
1880 DBG("Setting - lang_item is null!!");
1885 vconf_get_bool(VCONFKEY_WMS_WMANAGER_CONNECTED, &enable);
1887 DBG("Setting - Language is disabled");
1889 DBG("Setting - Language is enabled");
1893 elm_genlist_item_update(lang_item);
1897 static void change_screen_time_cb(keynode_t *key, void *data)
1899 DBG("Setting - change_screen_time_cb");
1901 if (screen_time_item) {
1902 elm_genlist_item_update(screen_time_item);
1906 static void change_language_cb(keynode_t *key, void *data)
1908 DBG("Setting - change_language_cb");
1911 elm_genlist_item_update(lang_item);
1916 static void _display_brightness_cb(void *data, Evas_Object *obj, void *event_info)
1918 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
1920 Evas_Object *layout = NULL;
1921 Elm_Object_Item *navi_it = NULL;
1926 layout = _show_brightness_popup(ad, obj, event_info);
1930 evas_object_event_callback_add(layout, EVAS_CALLBACK_MOUSE_IN, _power_off_popup_dismiss_cb, NULL);
1932 navi_it = elm_naviframe_item_push(ad->nf, "IDS_ST_BUTTON_BRIGHTNESS", NULL, NULL, layout, NULL);
1933 elm_object_item_domain_text_translatable_set(navi_it, SETTING_PACKAGE, EINA_TRUE);
1934 elm_naviframe_item_pop_cb_set(navi_it, _brightness_pop_cb, NULL);
1936 register_vconf_changing(VCONFKEY_SETAPPL_LCD_BRIGHTNESS, brightness_vconf_changed_cb, NULL);
1940 Evas_Object *_show_brightness_popup(void *data, Evas_Object *obj, void *event_info)
1947 int brightness_level = 0;
1954 pd = (spin_date *) malloc(sizeof(spin_date));
1956 int real_brightness = 0;
1957 device_get_brightness(0, &real_brightness);
1958 DBG("Setting - Real brightness : %d", real_brightness);
1960 /* Vconf brightness level */
1961 vconf_get_int(VCONFKEY_SETAPPL_LCD_BRIGHTNESS, &brightness_level);
1963 if (real_brightness != brightness_level) { /* HBM mode -> normal level(4) */
1964 sync_brightness(real_brightness);
1966 brightness_level = real_brightness;
1969 int enable = display_get_hbm();
1971 DBG("Setting - dispaly_get_hbm() is fail!!");
1974 if (enable == TRUE) {
1975 DBG("Setting - current HBM mode!!");
1976 brightness_index = 6;
1978 brightness_index = _change_bright_lovel_to_index(brightness_level);
1981 DBG("Setting - level: %d, index: %d", brightness_level, brightness_index);
1983 brightness_origin_level = brightness_level;
1985 ly = elm_layout_add(ad->nf);
1986 elm_layout_file_set(ly, EDJE_PATH, "setting/2finger_popup/default2");
1987 evas_object_size_hint_min_set(ly, 320, 200);
1988 evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1989 evas_object_size_hint_align_set(ly, EVAS_HINT_FILL, EVAS_HINT_FILL);
1991 brightness_layout = ly;
1993 pd->spinner = elm_spinner_add(ly);
1994 elm_object_style_set(pd->spinner, "brightnessstyle");
1995 elm_spinner_editable_set(pd->spinner, EINA_TRUE);
1996 elm_spinner_min_max_set(pd->spinner, 1, 6);
1997 evas_object_smart_callback_add(pd->spinner, "changed", _on_spinner_change_cb, pd);
1998 elm_object_part_content_set(ly, "elm.icon.1", pd->spinner);
1999 elm_spinner_value_set(pd->spinner, brightness_index);
2000 _update_brightness_circle(pd->spinner);
2002 btn = elm_button_add(ly);
2003 evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2004 elm_object_translatable_text_set(btn, "IDS_ST_BUTTON_CANCEL_ABB2");
2005 elm_object_part_content_set(ly, "btn1", btn);
2006 evas_object_smart_callback_add(btn, "clicked", _set_cancel_cb, ad);
2008 btn = elm_button_add(ly);
2009 evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2010 elm_object_translatable_text_set(btn, "IDS_WNOTI_BUTTON_OK_ABB2");
2011 elm_object_part_content_set(ly, "btn2", btn);
2012 evas_object_smart_callback_add(btn, "clicked", _set_brightness_clicked_cb, ad);
2014 hbm_mode_on_original = enable; /* backup for cancel */
2016 g_spinner = pd->spinner;
2021 static void _on_spinner_change_cb(void *data, Evas_Object *obj, void *event_info)
2023 DBG("Setting - _on_spinner_change_cb() is called!");
2027 static int prev = 0;
2029 int idx = (int) elm_spinner_value_get(obj);
2031 edje_object_part_geometry_get(elm_layout_edje_get(obj), "center.image2", NULL, NULL, &w, NULL);
2032 elm_spinner_min_max_get(obj, &min, &max);
2034 DBG("Setting - min: %i, max: %i, idx: %d", (int)min, (int)max, idx);
2037 edje_object_signal_emit(elm_layout_edje_get(obj), "elm,spinner,full", "elm");
2039 edje_object_signal_emit(elm_layout_edje_get(obj), "elm,spinner,default", "elm");
2041 edje_object_signal_emit(elm_layout_edje_get(obj), "elm,spinner,min", "elm");
2043 edje_object_signal_emit(elm_layout_edje_get(obj), "elm,spinner,normal", "elm");
2046 brightness_index = idx;
2048 if (brightness_index > 0 && brightness_index < 6) {
2049 int enable = display_get_hbm();
2051 DBG("Setting - dispaly_get_hbm() is fail!!");
2052 } else if (enable == TRUE) {
2053 DBG("Setting - current HBM mode!!");
2055 elm_object_part_text_set(brightness_layout, "elm.text.2", "");
2057 _set_HBM_mode(FALSE);
2059 /*set off sequnce : hbm off -> bright level down */
2060 int brightness_level = _change_bright_index_to_level(brightness_index);
2061 device_set_brightness_to_settings(0, brightness_level);
2062 vconf_set_int("db/setting/Brightness", brightness_level);
2063 } else if (brightness_index == 6) {
2064 DBG("Setting - HBM mode on!!");
2066 _set_HBM_mode(TRUE);
2068 elm_object_translatable_part_text_set(brightness_layout, "elm.text.2", "IDS_ST_BODY_OUTDOOR_MODE_ABB");
2071 double posx2 = (double)(w / max) * brightness_index;
2074 edje_object_part_drag_value_set(elm_layout_edje_get(obj), "elm.dragable.slider", posx2, 0);
2077 static Eina_Bool _brightness_pop_cb(void *data, Elm_Object_Item *it)
2079 DBG("Setting - brightness_pop_cb() is called!");
2082 DBG("Setting - Free pd!");
2086 unregister_vconf_changing(VCONFKEY_SETAPPL_LCD_BRIGHTNESS, brightness_vconf_changed_cb);
2091 static void _power_off_popup_dismiss_cb(void *data, Evas_Object *obj, void *event_info)
2093 DBG("Setting - _power_off_popup_dismiss_cb() is called!");
2095 int brightness_level = 0;
2096 vconf_get_int(VCONFKEY_SETAPPL_LCD_BRIGHTNESS, &brightness_level);
2097 brightness_index = _change_bright_lovel_to_index(brightness_level);
2100 int enable = display_get_hbm();
2102 brightness_index = 6;
2104 elm_spinner_value_set(g_spinner, brightness_index);
2105 _update_brightness_circle(g_spinner);
2109 static void brightness_vconf_changed_cb(keynode_t *key, void *data)
2111 DBG("Setting - brightness vconf changed!!");
2113 int brightness_level = 0;
2114 brightness_level = vconf_keynode_get_int(key);
2115 brightness_index = _change_bright_lovel_to_index(brightness_level);
2118 int enable = display_get_hbm();
2120 brightness_index = 6;
2122 elm_spinner_value_set(g_spinner, brightness_index);
2123 _update_brightness_circle(g_spinner);
2127 static void _set_brightness_clicked_cb(void *data, Evas_Object *obj, void *event_info)
2129 appdata *ad = (appdata *) data;
2133 int enable = display_get_hbm();
2134 if (enable == TRUE) {
2136 snprintf(buf, sizeof(buf) - 1, _("IDS_IDLE_POP_AFTER_P1SD_MINS_BRIGHTNESS_WILL_BE_RESET_TO_DEFAULT_LEVEL_HP2SD"), 5, 4);
2138 /* show toast - automatic freed!! */
2139 struct _toast_data *toast = _create_toast(ad, buf);
2141 _show_toast(ad, toast);
2144 int brightness_level = _change_bright_index_to_level(brightness_index);
2146 device_set_brightness_to_settings(0, brightness_level);
2149 brightness_layout = NULL;
2150 g_brightness_controller = NULL;
2153 elm_naviframe_item_pop(ad->nf);
2157 static void sync_brightness(int real_brightness)
2159 DBG("Setting - Synchronized brightness level");
2161 vconf_set_int(VCONFKEY_SETAPPL_LCD_BRIGHTNESS, real_brightness);
2164 static void _update_brightness_circle(Evas_Object *spiner)
2170 double min, max, posx2;
2171 int idx = (int) elm_spinner_value_get(spiner);
2173 edje_object_part_geometry_get(elm_layout_edje_get(spiner), "center.image2", NULL, NULL, &w, NULL);
2174 elm_spinner_min_max_get(spiner, &min, &max);
2176 int enable = display_get_hbm();
2178 DBG("Setting - dispaly_get_hbm() is fail!!");
2181 if (enable == TRUE) {
2182 edje_object_signal_emit(elm_layout_edje_get(spiner), "elm,spinner,full1", "elm");
2184 elm_object_part_text_set(brightness_layout, "elm.text.2", _("IDS_ST_BODY_OUTDOOR_MODE_ABB"));
2187 edje_object_signal_emit(elm_layout_edje_get(spiner), "elm,spinner,min", "elm");
2189 edje_object_signal_emit(elm_layout_edje_get(spiner), "elm,spinner,full1", "elm");
2191 edje_object_signal_emit(elm_layout_edje_get(spiner), "elm,spinner,default1", "elm");
2193 brightness_index = idx;
2195 posx2 = (double)(w / max) * brightness_index;
2197 edje_object_part_drag_value_set(elm_layout_edje_get(spiner), "elm.dragable.slider", posx2, 0);
2199 elm_object_part_text_set(brightness_layout, "elm.text.2", "");
2203 static void wake_up_vconf_changed_cb(keynode_t *key, void *data)
2205 DBG("Setting - motion_vconf_changed_cb() is called!");
2208 elm_genlist_item_update(wake_up_item);
2212 static void icon_size_vconf_changed_cb(keynode_t *key, void *data)
2214 DBG("Setting - icon_size_vconf_changed_cb() is called!");
2216 if (edit_icon_item) {
2217 elm_genlist_item_update(edit_icon_item);
2221 static void _set_cancel_cb(void *data, Evas_Object *obj, void *event_info)
2227 int enable = display_get_hbm();
2228 if (hbm_mode_on_original) {
2229 if (enable == DISABLE) {
2230 _set_HBM_mode(TRUE);
2233 if (enable == ENABLE) {
2234 _set_HBM_mode(FALSE);
2238 device_set_brightness_to_settings(0, brightness_origin_level);
2240 brightness_layout = NULL;
2241 g_brightness_controller = NULL;
2243 elm_naviframe_item_pop(ad->nf);
2246 static int _change_bright_lovel_to_index(int level)
2250 if (level >= 20 && level <= 100) {
2251 index = (level / 20);
2252 DBG("Setting - level -> index : %d", index);
2257 static int _change_bright_index_to_level(int index)
2260 if (index > 0 && index < 6) {
2280 DBG("Setting - index -> level : %d", level);
2285 static void _set_HBM_mode(int enable)
2287 if (display_enable_hbm(enable, 300) == 0) { /* after 5 minutes, HBM mode will be off! */
2288 DBG("Setting - HBM %s!!", (enable) ? "enabled" : "disabled");
2290 DBG("Setting - HBM api failed!!");
2297 void _display_ambient_mode_cb(void *data, Evas_Object *obj, void *event_info)
2299 Elm_Object_Item *it = (Elm_Object_Item *)event_info;
2302 DBG("%s", "_display_gl_ambient_mode_cb - appdata or check is null");
2305 display_menu_its[3].is_enable_ambient_mode = display_menu_its[3].is_enable_ambient_mode ? 0 : 1;
2306 DBG("is_enable_ambient_mode: %d", display_menu_its[3].is_enable_ambient_mode);
2307 vconf_set_bool(VCONFKEY_SETAPPL_AMBIENT_MODE_BOOL, display_menu_its[3].is_enable_ambient_mode);
2309 elm_genlist_item_selected_set(it, EINA_FALSE);
2311 elm_genlist_item_update(it);