2 * Copyright (c) 2000 - 2013 Samsung Electronics Co., Ltd. All rights reserved.
4 * Licensed under the Apache License, Version 2.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://www.apache.org/licenses/LICENSE-2.0
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 #define _CSC_FEATURE_DEF_BOOL_HOME_EDIT_MODE_LONGPRESS_DISABLE 0
41 #define _CSC_FEATURE_DEF_BOOL_SETTING_FONT_OTHER_PRELOAD_DISABLE 0
43 static struct _display_menu_item display_menu_its[] = {
44 #if !defined(FEATURE_SETTING_SDK) && !defined(FEATURE_SETTING_EMUL)
45 { "IDS_ST_BUTTON_BRIGHTNESS", SETTING_DISPLAY_BRIGTHNESS, _display_brightness_cb },
46 { "IDS_ST_MBODY_SCREEN_TIMEOUT_ABB", SETTING_DISPLAY_SCREEN_TIME, _display_gl_screen_timeout_cb },
47 { "IDS_ST_BODY_FONT", SETTING_DISPLAY_FONT, _display_gl_font_cb },
49 { "IDS_ST_BUTTON_LANGUAGE", SETTING_DISPLAY_LANG, _display_gl_language_cb },
50 #if !defined(FEATURE_SETTING_EMUL)
51 { "IDS_ST_MBODY_WAKE_UP_GESTURE_ABB", SETTING_DISPLAY_GESTURE, _motion_gl_wake_up_cb },
53 #if !defined(FEATURE_SETTING_SDK) && !defined(FEATURE_SETTING_EMUL)
54 { "IDS_HS_MBODY_HOME_ICON_SIZE_ABB", SETTING_DISPLAY_ICON_SIZE, _homescreen_gl_viewtype_cb },
55 { "IDS_ST_MBODY_EDIT_HOME_SCREEN_ABB", SETTING_DISPLAY_EDIT_HOME, _homescreen_gl_edit_home_cb },
56 { "IDS_ST_MBODY_MANAGE_APPS_ABB", SETTING_DISPLAY_EDIT_APPS, _homescreen_gl_edit_apps_cb },
57 //{ "IDS_ST_HEADER_ROTATE_SCREEN_ABB", 0, 0, _display_gl_rotate_screen_cb },
61 static struct _font_menu_item font_menu_its[] = {
62 { "IDS_ST_BODY_FONT_STYLE", _display_gl_font_style_cb },
63 { "IDS_ST_BODY_FONT_SIZE_ABB", _display_gl_font_size_cb },
66 static int screen_time_str[] = {
69 static int timeout_arr[] = {
73 static char * font_size_str[] = {
74 "IDS_EMAIL_OPT_SMALL_M_FONT_SIZE",
75 "IDS_ST_OPT_MEDIUM_M_FONT_SIZE",
76 "IDS_ST_BODY_LARGE_M_FONT_SIZE_ABB2"
79 static char * brightness_number_str[] = {
80 "0", "1", "2", "3", "4", "5"
83 static char *rotate_screen_str[] = {
84 "IDS_COM_BODY_DEFAULT", "IDS_COM_OPT_ROTATE_CW", "IDS_COM_OPT_ROTATE_CCW", "IDS_ST_SBODY_180_DEGREE"
87 static appdata* temp_ad = NULL;
88 static Evas_Object * g_display_genlist = NULL;
89 static Evas_Object * g_screen_time_genlist = NULL;
90 static Evas_Object * g_font_size_genlist = NULL;
91 static Evas_Object * g_font_style_genlist = NULL;
92 static Evas_Object * brightness_layout = NULL;
93 static Evas_Object * g_brightness_controller = NULL;
94 static Evas_Object * g_rotate_screen_genlist = NULL;
96 static int screen_time_index = 1; // default: 10 seconds
97 static int font_size_index = 1; // default: normal
98 static int brightness_index = 4; // default: 4 (level4 : 80)
99 static int rotate_screen_rot = 0; // default: 0(0degree), vconf enum
100 static int rotate_screen_index = 0; // default: 0, list index
102 static int brightness_origin_level = 0;
103 static int hbm_mode_on_original = 0;
105 static int touch_mode = NONE;
107 static spin_date *pd = NULL;
109 static char *font_name = NULL;
111 static Evas_Object * g_spinner = NULL;
112 static Elm_Object_Item * lang_item = NULL;
113 static Elm_Object_Item * wake_up_item = NULL;
114 static Elm_Object_Item * edit_icon_item = NULL;
116 static void brightness_vconf_changed_cb(keynode_t * key, void * data);
117 static void _update_brightness_circle(Evas_Object * spiner);
118 static void wake_up_vconf_changed_cb(keynode_t * key, void * data);
119 static void icon_size_vconf_changed_cb(keynode_t * key, void * data);
120 static void _font_size_gl_cb(void *data, Evas_Object *obj, void *event_info);
121 static void _font_style_gl_cb(void *data, Evas_Object *obj, void *event_info);
122 static int _change_bright_lovel_to_index(int level);
125 static void change_language_enabling(keynode_t *key, void * data)
127 if(lang_item == NULL) {
128 DBG("Setting - lang_item is null!!");
133 vconf_get_bool(VCONFKEY_WMS_WMANAGER_CONNECTED, &enable);
136 DBG("Setting - Language is disabled");
140 DBG("Setting - Language is enabled");
142 elm_genlist_item_update(lang_item);
147 register_vconf_changing(VCONFKEY_WMS_WMANAGER_CONNECTED, change_language_enabling, NULL);
148 register_vconf_changing(VCONFKEY_WMS_WAKEUP_BY_GESTURE_SETTING, wake_up_vconf_changed_cb, NULL);
149 register_vconf_changing(VCONFKEY_SETAPPL_HOMESCREEN_TYPE_INT, icon_size_vconf_changed_cb, NULL);
150 //_init_screen_rotate();
153 void _init_screen_rotate()
156 rotate = _get_rotate_screen();
157 rotate_screen_rot = rotate;
159 if(rotate == SETTING_SCREENROTATION_90_DEGREE){
161 rotate_screen_index = 1;
163 else if(rotate == SETTING_SCREENROTATION_270_DEGREE){
165 rotate_screen_index = 2;
167 else if(rotate == SETTING_SCREENROTATION_180_DEGREE){
169 rotate_screen_index = 3;
174 rotate_screen_rot = SETTING_SCREENROTATION_0_DEGREE;
178 void _update_menu_text_when_lang_changed()
180 DBG("Setting - Language is changed...update display list");
182 if(g_display_genlist)
184 elm_genlist_realized_items_update(g_display_genlist);
187 if( temp_ad && temp_ad->main_genlist )
189 elm_genlist_realized_items_update( temp_ad->main_genlist );
193 Eina_Bool _clear_display_cb(void *data, Elm_Object_Item *it)
196 g_screen_time_genlist = NULL;
197 g_font_size_genlist = NULL;
198 g_font_style_genlist = NULL;
199 g_rotate_screen_genlist = NULL;
201 brightness_origin_level = 0;
205 unregister_vconf_changing(VCONFKEY_SETAPPL_LCD_BRIGHTNESS, brightness_vconf_changed_cb);
206 unregister_vconf_changing(VCONFKEY_WMS_WMANAGER_CONNECTED, change_language_enabling);
207 unregister_vconf_changing(VCONFKEY_WMS_WAKEUP_BY_GESTURE_SETTING, wake_up_vconf_changed_cb);
208 unregister_vconf_changing(VCONFKEY_SETAPPL_HOMESCREEN_TYPE_INT, icon_size_vconf_changed_cb);
215 static void _set_HBM_mode(int enable)
217 if( display_enable_hbm(enable, 300) == 0 ) // after 5 minutes, HBM mode will be off!
219 DBG("Setting - HBM %s!!", (enable) ? "enabled" : "disabled");
223 DBG("Setting - HBM api failed!!");
227 static void wake_up_vconf_changed_cb(keynode_t * key, void * data)
229 DBG("Setting - motion_vconf_changed_cb() is called!");
235 elm_genlist_item_update(wake_up_item);
239 static void icon_size_vconf_changed_cb(keynode_t * key, void * data)
241 DBG("Setting - icon_size_vconf_changed_cb() is called!");
247 elm_genlist_item_update(edit_icon_item);
253 static Eina_Bool _brightness_pop_cb(void *data, Elm_Object_Item *it)
255 DBG("Setting - brightness_pop_cb() is called!");
259 DBG("Setting - Free pd!");
263 unregister_vconf_changing(VCONFKEY_SETAPPL_LCD_BRIGHTNESS, brightness_vconf_changed_cb);
268 static void _power_off_popup_dismiss_cb(void *data, Evas_Object *obj, void *event_info)
270 DBG("Setting - _power_off_popup_dismiss_cb() is called!");
272 int brightness_level = 0;
273 vconf_get_int(VCONFKEY_SETAPPL_LCD_BRIGHTNESS, &brightness_level);
274 brightness_index = _change_bright_lovel_to_index(brightness_level);
278 int enable = display_get_hbm();
281 brightness_index = 6;
283 elm_spinner_value_set(g_spinner, brightness_index);
284 _update_brightness_circle(g_spinner);
288 static void _display_brightness_cb(void *data, Evas_Object *obj, void *event_info)
290 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
292 Evas_Object * layout = NULL;
293 Elm_Object_Item *navi_it = NULL;
299 layout = _show_brightness_popup(ad, obj, event_info);
304 evas_object_event_callback_add(layout, EVAS_CALLBACK_MOUSE_IN, _power_off_popup_dismiss_cb, NULL);
306 navi_it = elm_naviframe_item_push( ad->nf, "IDS_ST_BUTTON_BRIGHTNESS", NULL, NULL, layout, NULL );
307 elm_object_item_domain_text_translatable_set(navi_it, SETTING_PACKAGE, EINA_TRUE);
308 elm_naviframe_item_pop_cb_set(navi_it, _brightness_pop_cb, NULL);
310 register_vconf_changing(VCONFKEY_SETAPPL_LCD_BRIGHTNESS, brightness_vconf_changed_cb, NULL);
314 void _display_gl_font_cb(void *data, Evas_Object *obj, void *event_info)
316 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
320 _show_font_list(data);
324 void _display_gl_font_style_cb(void *data, Evas_Object *obj, void *event_info)
326 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
330 _show_font_style_list(data);
334 void _display_gl_font_size_cb(void *data, Evas_Object *obj, void *event_info)
336 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
340 _show_font_size_list(data);
344 void _display_gl_rotate_screen_cb(void *data, Evas_Object *obj, void *event_info)
346 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
350 _show_rotate_screen_list(data);
354 void _display_gl_screen_timeout_cb(void *data, Evas_Object *obj, void *event_info)
356 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
360 _show_screen_timeout_list(data);
364 void _display_gl_language_cb(void *data, Evas_Object *obj, void *event_info)
366 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
368 Evas_Object* genlist = NULL;
369 Elm_Object_Item *nf_it = NULL;
374 DBG("Setting - ad is null");
378 if( is_connected_GM() )
380 DBG("Setting - language can not change!!");
383 struct _toast_data * toast = _create_toast(ad, _("IDS_ST_TPOP_CHANGE_LANGUAGE_ON_MOBILE_DEVICE"));
385 _show_toast(ad, toast);
390 _initialize_language(ad);
391 _set_launguage_update_cb(_update_menu_text_when_lang_changed);
393 genlist = _create_lang_list(data);
396 DBG("%s", "language cb - genlist is null");
399 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, NULL);
400 evas_object_event_callback_add(genlist, EVAS_CALLBACK_DEL, _clear_lang_cb, ad);
401 elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
403 ad->MENU_TYPE = SETTING_LANGUAGE;
406 char * _gl_display_title_get(void *data, Evas_Object *obj, const char *part)
409 Display_Item_Data *id = data;
410 int index = id->index;
412 if( !strcmp(part, "elm.text") || !strcmp(part,"elm.text.1"))
414 if (id->item == lang_item) {
415 if( is_connected_GM() ) {
416 snprintf(buf, sizeof(buf)-1, "<font color=#515151>%s</font>",
417 _(display_menu_its[index].name));
419 snprintf(buf, sizeof(buf)-1, "%s",
420 _(display_menu_its[index].name));
423 snprintf(buf, sizeof(buf)-1, "%s", _(display_menu_its[index].name));
426 else if (!strcmp(part, "elm.text.2"))
428 if(id->item == edit_icon_item){
429 snprintf(buf, sizeof(buf)-1, "%s", _get_homeview_type_subtitle());
432 snprintf(buf, sizeof(buf)-1, "%s", _get_wake_up_gesture_sub_title());
438 void _display_gl_del(void *data, Evas_Object *obj)
440 Display_Item_Data *id = data;
445 Evas_Object* _create_display_list(void* data)
450 DBG("%s", "_create_display_list - appdata is null");
453 Evas_Object * genlist = NULL;
454 struct _display_menu_item * menu_its = NULL;
459 Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
460 itc->item_style = "1text";
461 itc->func.text_get = _gl_display_title_get;
462 itc->func.del = _display_gl_del;
464 Elm_Genlist_Item_Class *itc2 = elm_genlist_item_class_new();
465 itc2->item_style = "2text";
466 itc2->func.text_get = _gl_display_title_get;
467 itc2->func.del = _display_gl_del;
469 genlist = elm_genlist_add(ad->nf);
470 elm_genlist_block_count_set(genlist, 14);
471 elm_genlist_homogeneous_set(genlist, EINA_TRUE);
472 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
474 menu_its = display_menu_its;
476 int size = sizeof(display_menu_its) / sizeof(struct _display_menu_item);
478 for (idx = 0; idx < size; idx++)
480 int b_disable_edit_app;
481 if(menu_its[idx].type == SETTING_DISPLAY_EDIT_APPS)
483 b_disable_edit_app = _CSC_FEATURE_DEF_BOOL_HOME_EDIT_MODE_LONGPRESS_DISABLE; //true for enable menu
484 if(!b_disable_edit_app) continue;
487 Elm_Genlist_Item_Class *itc_tmp = NULL;
489 if (menu_its[idx].type == SETTING_DISPLAY_GESTURE || menu_its[idx].type == SETTING_DISPLAY_ICON_SIZE) {
495 Display_Item_Data *id = calloc(sizeof(Display_Item_Data), 1);
497 id->item = elm_genlist_item_append(
498 genlist, // genlist object
499 itc_tmp, // item class
502 ELM_GENLIST_ITEM_NONE,
503 menu_its[ idx ].func, // call back
506 if (menu_its[idx].type == SETTING_DISPLAY_LANG) {
507 lang_item = id->item;
509 else if(menu_its[idx].type == SETTING_DISPLAY_GESTURE)
511 DBG("wakeup item@!!!");
512 wake_up_item = id->item;
514 else if(menu_its[idx].type == SETTING_DISPLAY_ICON_SIZE)
516 DBG("edit icon item@!!!");
517 edit_icon_item = id->item;
520 elm_genlist_item_class_free(itc);
521 elm_genlist_item_class_free(itc2);
523 g_display_genlist = genlist;
528 static char * _gl_screen_timeout_title_get(void *data, Evas_Object *obj, const char *part)
531 Item_Data *id = data;
533 if( !strcmp(part, "elm.text") )
537 snprintf(buf, sizeof(buf)-1, _("IDS_ST_BODY_10SEC"), screen_time_str[id->index]);
539 else if( id->index == 1 )
541 snprintf(buf, sizeof(buf)-1, _("IDS_ST_BODY_15SEC"), screen_time_str[id->index]);
543 else if( id->index == 2 )
545 snprintf(buf, sizeof(buf)-1, _("IDS_ST_BODY_30SEC"), screen_time_str[id->index]);
547 else if ( id->index == 3 )
549 snprintf(buf, sizeof(buf)-1, _("IDS_ST_BODY_1_MINUTE_ABB2"), screen_time_str[id->index]);
553 snprintf(buf, sizeof(buf)-1, _("IDS_ST_BODY_5_MINUTES"), screen_time_str[id->index]);
559 static int _get_timeout_index(int seconds)
563 length = sizeof(timeout_arr) / sizeof(timeout_arr[0]);
565 DBG("Setting - timeout_arr's length: %d", length);
567 for( index = 0; index < length; index++ )
569 if( timeout_arr[index] == seconds )
571 DBG("Setting - timeout index : %d, sec : %d", index, timeout_arr[index]);
579 static void _screen_timeout_gl_cb(void *data, Evas_Object *obj, void *event_info)
581 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
583 screen_time_index = (int)data;
585 vconf_set_int(VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL ,timeout_arr[screen_time_index]);
587 elm_genlist_realized_items_update(g_screen_time_genlist);
589 elm_naviframe_item_pop(temp_ad->nf);
590 if(!temp_ad->screen_timeout_rdg)
592 evas_object_del(temp_ad->screen_timeout_rdg);
593 temp_ad->screen_timeout_rdg = NULL;
597 static Evas_Object * _gl_screen_timeout_ridio_get(void *data, Evas_Object *obj, const char *part)
599 Evas_Object *radio = NULL;
600 Evas_Object *radio_main = evas_object_data_get(obj, "radio_main");
601 Item_Data *id = data;
602 static int timeout = -1;
604 if( !strcmp(part, "elm.icon") )
606 radio = elm_radio_add(obj);
607 elm_radio_state_value_set(radio, id->index);
608 evas_object_size_hint_align_set(radio, EVAS_HINT_FILL, EVAS_HINT_FILL);
609 evas_object_size_hint_weight_set(radio, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
610 elm_radio_group_add(radio, radio_main);
611 evas_object_smart_callback_add(radio, "changed", _screen_timeout_gl_cb, (void *)id->index);
612 evas_object_propagate_events_set(radio, EINA_FALSE);
616 vconf_get_int(VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL, &timeout);
617 screen_time_index = _get_timeout_index(timeout);
620 if( screen_time_index == id->index )
622 elm_radio_value_set(radio_main, screen_time_index);
628 static void _screen_timeout_gl_del(void *data, Evas_Object *obj)
630 Item_Data *id = data;
635 void _show_screen_timeout_list(void* data)
640 DBG("%s", "_show_screen_timeout_list - appdata is null");
643 Evas_Object *genlist = NULL;
644 Elm_Object_Item *nf_it = NULL;
649 Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
650 itc->item_style = "1text.1icon.1";
651 itc->func.text_get = _gl_screen_timeout_title_get;
652 itc->func.content_get = _gl_screen_timeout_ridio_get;
653 itc->func.del = _screen_timeout_gl_del;
655 genlist = elm_genlist_add(ad->nf);
656 elm_genlist_block_count_set(genlist, 14);
657 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
658 evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
660 for( idx = 0; idx < SCREEN_TIME_COUNT; idx++ )
662 Item_Data *id = calloc(sizeof(Item_Data), 1);
664 id->item = elm_genlist_item_append(genlist, itc, id, NULL, ELM_GENLIST_ITEM_NONE, _screen_timeout_gl_cb, (void*)idx);
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);
673 g_screen_time_genlist = genlist;
675 elm_genlist_item_class_free(itc);
677 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, NULL);
678 elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
681 static char * _gl_font_title_get(void *data, Evas_Object *obj, const char *part)
684 Item_Data *id = data;
686 if( !strcmp(part, "elm.text") )
688 snprintf(buf, sizeof(buf)-1, "%s", _(font_menu_its[id->index].name));
694 static char * _gl_font_style_title_get(void *data, Evas_Object *obj, const char *part)
697 Font_Style_Item_Data *id = data;
699 char* pos = id->font_name;
707 new_name[count] = '\\';
709 new_name[count] = ' ';
711 new_name[count] = id->font_name[i];
718 new_name[count] = '\0';
720 if( !strcmp(part, "elm.text") )
723 snprintf(buf, sizeof(buf)-1, "<font=%s>%s</font>", new_name, _("IDS_ST_BODY_DEFAULT_FONT"));
725 if (!strcmp(id->font_name, "Choco cooky")) {
726 snprintf(buf, sizeof(buf)-1, "<font=%s>%s</font>", new_name, _("IDS_LCKSCN_BODY_CHOCO_COOKY_M_FONT"));
727 } else if (!strcmp(id->font_name, "Cool jazz")) {
728 snprintf(buf, sizeof(buf)-1, "<font=%s>%s</font>", new_name, _("IDS_ST_BODY_COOL_JAZZ"));
729 } else if (!strcmp(id->font_name, "Rosemary")) {
730 snprintf(buf, sizeof(buf)-1, "<font=%s>%s</font>", new_name, _("IDS_ST_BODY_FONTSTYLE_ROSEMARY"));
731 } else if (!strcmp(id->font_name, "Tinkerbell")) {
732 snprintf(buf, sizeof(buf)-1, "<font=%s>%s</font>", new_name, _("IDS_ST_MBODY_TINKERBELL"));
733 } else if (!strcmp(id->font_name, "Applemint")) {
734 snprintf(buf, sizeof(buf)-1, "<font=%s>%s</font>", new_name, _("IDS_RH_BUTTON2_APPLEMINT_M_FONT"));
735 } else if (!strcmp(id->font_name, "Kaiti")) {
736 snprintf(buf, sizeof(buf)-1, "<font=%s>%s</font>", new_name, _("IDS_ST_BODY_KAITI_M_FONT"));
737 } else if (!strcmp(id->font_name, "POP")) {
738 snprintf(buf, sizeof(buf)-1, "<font=%s>%s</font>", new_name, _("IDS_ST_BODY_POP_JPN_DCM"));
739 } else if (!strcmp(id->font_name, "UDMincho")) {
740 snprintf(buf, sizeof(buf)-1, "<font=%s>%s</font>", new_name, _("IDS_ST_BODY_UDMINCHO_JPN"));
741 } else if (!strcmp(id->font_name, "UDRGothic")) {
742 snprintf(buf, sizeof(buf)-1, "<font=%s>%s</font>", new_name, _("IDS_ST_BODY_UDRGOTHICM_JPN"));
744 snprintf(buf, sizeof(buf)-1, "<font=%s>%s</font>", new_name, id->font_name);
749 DBG("font = %s", buf);
753 static Evas_Object * _gl_font_style_ridio_get(void *data, Evas_Object *obj, const char *part)
755 Evas_Object *radio = NULL;
756 Evas_Object *radio_main = evas_object_data_get(obj, "radio_main");
757 Font_Style_Item_Data *id = data;
759 if( !strcmp(part, "elm.icon") )
761 radio = elm_radio_add(obj);
762 elm_radio_state_value_set(radio, id->index);
763 evas_object_size_hint_align_set(radio, EVAS_HINT_FILL, EVAS_HINT_FILL);
764 evas_object_size_hint_weight_set(radio, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
765 elm_radio_group_add(radio, radio_main);
767 evas_object_smart_callback_add(radio, "changed", _font_style_gl_cb, (void *)id);
768 evas_object_propagate_events_set(radio, EINA_FALSE);
774 static void _font_style_gl_del(void *data, Evas_Object *obj)
776 Font_Style_Item_Data *id = data;
784 static char * _gl_font_size_title_get(void *data, Evas_Object *obj, const char *part)
787 Item_Data *id = data;
789 if( !strcmp(part, "elm.text") )
793 snprintf(buf, sizeof(buf)-1, "<font_size=30>%s</font_size>", _(font_size_str[id->index]));
795 else if(id->index == 1 )
797 snprintf(buf, sizeof(buf)-1, "<font_size=38>%s</font_size>", _(font_size_str[id->index]));
801 snprintf(buf, sizeof(buf)-1, "<font_size=46>%s</font_size>", _(font_size_str[id->index]));
807 static Evas_Object * _gl_font_size_ridio_get(void *data, Evas_Object *obj, const char *part)
809 Evas_Object *radio = NULL;
810 Evas_Object *radio_main = evas_object_data_get(obj, "radio_main");
811 Item_Data *id = data;
813 int old_font_size = -1;
814 if( system_settings_get_value_int(SYSTEM_SETTINGS_KEY_FONT_SIZE, &old_font_size)
815 != SYSTEM_SETTINGS_ERROR_NONE )
817 DBG("Setting - system_settings_get_value_int() is failed.");
820 if( !strcmp(part, "elm.icon") )
822 radio = elm_radio_add(obj);
823 elm_radio_state_value_set(radio, id->index);
824 evas_object_size_hint_align_set(radio, EVAS_HINT_FILL, EVAS_HINT_FILL);
825 evas_object_size_hint_weight_set(radio, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
826 elm_radio_group_add(radio, radio_main);
827 evas_object_smart_callback_add(radio, "changed", _font_size_gl_cb, (void *)id->index);
828 evas_object_propagate_events_set(radio, EINA_FALSE);
830 if( old_font_size == id->index )
832 elm_radio_value_set(radio_main, old_font_size);
838 static void _font_size_gl_del(void *data, Evas_Object *obj)
840 Item_Data *id = data;
845 static Ecore_Timer * font_timer = NULL;
847 static Eina_Bool _update_font_style(void * data)
850 system_settings_set_value_string(SYSTEM_SETTINGS_KEY_FONT_TYPE, font_name);
855 return ECORE_CALLBACK_CANCEL;
858 static void _font_style_cancel_cb(void *data, Evas_Object *obj, void *event_info)
863 ERR("appdata is null");
867 elm_naviframe_item_pop(ad->nf);
868 if(!ad->font_style_rdg)
870 evas_object_del(ad->font_style_rdg);
871 ad->font_style_rdg = NULL;
877 static void _font_style_ok_cb(void *data, Evas_Object *obj, void *event_info)
882 ERR("appdata is null");
886 elm_naviframe_item_pop(ad->nf);
888 if(!ad->font_style_rdg)
890 evas_object_del(ad->font_style_rdg);
891 ad->font_style_rdg = NULL;
896 ecore_timer_del(font_timer);
899 font_timer = ecore_timer_add(0.3, (Ecore_Task_Cb) _update_font_style, NULL);
902 static void _font_style_gl_cb(void *data, Evas_Object *obj, void *event_info)
904 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
905 Font_Style_Item_Data *id = (Font_Style_Item_Data *)data;
907 //elm_radio_value_set(temp_ad->font_style_rdg, id->index);
910 font_name = strdup(id->font_name);
912 //elm_genlist_realized_items_update(g_font_style_genlist);
913 elm_naviframe_item_pop(temp_ad->nf);
915 if(!temp_ad->font_style_rdg)
917 evas_object_del(temp_ad->font_style_rdg);
918 temp_ad->font_style_rdg = NULL;
923 ecore_timer_del(font_timer);
926 font_timer = ecore_timer_add(0.3, (Ecore_Task_Cb) _update_font_style, NULL);
929 static Eina_Bool _update_font_size(void * data)
932 system_settings_set_value_int(SYSTEM_SETTINGS_KEY_FONT_SIZE, font_size_index);
936 return ECORE_CALLBACK_CANCEL;
939 static void _font_size_gl_cb(void *data, Evas_Object *obj, void *event_info)
941 int old_font_size = 0;
943 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
945 if( system_settings_get_value_int(SYSTEM_SETTINGS_KEY_FONT_SIZE, &old_font_size)
946 != SYSTEM_SETTINGS_ERROR_NONE )
948 DBG("Setting - system_settings_get_value_int() is failed.");
951 DBG("Setting - old font size is %d.", old_font_size);
953 font_size_index = (int)data;
955 DBG("Setting - Curr font size is %d.", font_size_index);
957 //elm_genlist_realized_items_update(g_font_size_genlist);
959 elm_naviframe_item_pop(temp_ad->nf);
960 if(!temp_ad->font_size_rdg)
962 evas_object_del(temp_ad->font_size_rdg);
963 temp_ad->font_size_rdg = NULL;
968 ecore_timer_del(font_timer);
972 if( old_font_size != font_size_index )
974 DBG("Setting - font size is same with old.");
975 font_timer = ecore_timer_add(0.3, (Ecore_Task_Cb) _update_font_size, NULL);
980 void _show_font_list(void* data)
985 DBG("%s", "_show_font_list - appdata is null");
989 Evas_Object *genlist = NULL;
990 Elm_Object_Item *nf_it = NULL;
995 Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
996 itc->item_style = "1text";
997 itc->func.text_get = _gl_font_title_get;
998 itc->func.del = _font_size_gl_del;
1000 Evas_Object * layout = elm_layout_add(ad->nf);
1001 elm_layout_file_set(layout, EDJE_PATH, "setting/genlist/layout");
1002 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1004 genlist = elm_genlist_add(layout);
1005 elm_genlist_block_count_set(genlist, 14);
1006 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
1007 evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1009 for( idx = 0; idx < sizeof(font_menu_its) / sizeof(struct _font_menu_item); idx++ )
1011 Item_Data *id = calloc(sizeof(Item_Data), 1);
1013 id->item = elm_genlist_item_append(genlist, itc, id, NULL,
1014 ELM_GENLIST_ITEM_NONE, font_menu_its[idx].func, ad);
1017 elm_object_part_content_set(layout, "elm.genlist", genlist);
1019 elm_genlist_item_class_free(itc);
1021 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, layout, NULL);
1022 elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
1025 char* _get_default_font()
1027 xmlDocPtr doc = NULL;
1028 xmlNodePtr cur = NULL;
1029 xmlNodePtr cur2 = NULL;
1030 xmlNodePtr cur3 = NULL;
1031 xmlChar *key = NULL;
1032 struct _xmlAttr *properties = NULL;
1033 char *default_font_name = NULL;
1035 doc = xmlParseFile("/usr/opt/etc/fonts/conf.avail/99-slp.conf");
1037 cur = xmlDocGetRootElement(doc);
1045 if(xmlStrcmp(cur->name, (const xmlChar *)"fontconfig")) {
1051 cur = cur->xmlChildrenNode;
1054 if((!xmlStrcmp(cur->name, (const xmlChar *)"match"))){
1055 cur2 = cur->xmlChildrenNode;
1056 while(cur2 != NULL){
1057 if((!xmlStrcmp(cur2->name, (const xmlChar *)"edit"))){
1058 properties = cur2->properties;
1059 /*find the "name" property*/
1060 while(NULL != properties){
1061 if(!xmlStrcmp(properties->name, (const xmlChar *)"name")){
1064 properties = properties->next;
1067 /*If the value of "name" property is "family", then get the child node string,
1068 it shall be the default font type*/
1069 if(NULL != properties &&!xmlStrcmp(properties->children->content, (const xmlChar *)"family")){
1070 cur3 = cur2->xmlChildrenNode;
1071 while(cur3 != NULL){
1072 if((!xmlStrcmp(cur3->name, (const xmlChar *)"string"))){
1073 key = xmlNodeListGetString(doc, cur3->xmlChildrenNode, 1);
1074 default_font_name = (char*)g_strdup((char *)key);
1079 return default_font_name;
1096 static Eina_List *_get_available_font_list()
1098 FcObjectSet *os = NULL;
1099 FcFontSet *fs = NULL;
1100 FcPattern *pat = NULL;
1101 Eina_List *list = NULL;
1102 FcConfig *font_config = NULL;
1104 font_config = FcInitLoadConfigAndFonts();
1106 if(font_config == NULL) {
1107 ERR("Failed: FcInitLoadConfigAndFonts");
1111 pat = FcPatternCreate();
1113 os = FcObjectSetBuild(FC_FAMILY, FC_FILE, (char *) 0);
1116 fs = FcFontList(font_config, pat, os);
1117 FcObjectSetDestroy(os);
1122 FcPatternDestroy(pat);
1128 DBG("fs->nfont = %d", fs->nfont);
1130 for (j = 0; j < fs->nfont; j++) {
1131 FcChar8 *family = NULL;
1132 FcChar8 *file = NULL;
1134 if (FcPatternGetString(fs->fonts[j], FC_FILE, 0, &file) == FcResultMatch) {
1135 int preload_path_len = strlen(SETTING_FONT_PRELOAD_FONT_PATH);
1136 int download_path_len = strlen(SETTING_FONT_DOWNLOADED_FONT_PATH);
1138 int b_disable_preloaded_font;
1139 b_disable_preloaded_font = _CSC_FEATURE_DEF_BOOL_SETTING_FONT_OTHER_PRELOAD_DISABLE;
1140 /* true : disable for 5 && false : others shown */
1141 if(b_disable_preloaded_font == 1) {
1142 //true : show only default(BRI,CHC,CHN,CTC,TGY)
1143 DBG("show only default");
1146 if (!strncmp((const char*)file, SETTING_FONT_PRELOAD_FONT_PATH, preload_path_len)){
1147 if (FcPatternGetString(fs->fonts[j], FC_FAMILY, 0, &family) != FcResultMatch) {
1148 DBG("Family name is invalid");
1152 if (eina_list_data_find(list, family) == NULL) {
1153 list = eina_list_append(list, family);
1154 DBG("-------- ADDED FONT - family = %s", (char *)family);
1159 /* always shown for D/L */
1160 if (!strncmp((const char*)file, SETTING_FONT_DOWNLOADED_FONT_PATH, download_path_len)) {
1161 if (FcPatternGetString(fs->fonts[j], FC_FAMILY, 0, &family) != FcResultMatch) {
1162 DBG("Family name is invalid");
1166 if (eina_list_data_find(list, family) == NULL) {
1167 list = eina_list_append(list, family);
1168 DBG("-------- ADDED FONT - family = %s", (char *)family);
1173 FcFontSetDestroy(fs);
1177 FcConfigDestroy(font_config);
1182 void _show_font_style_list(void* data)
1187 DBG("%s", "_show_font_style_list - appdata is null");
1190 Evas_Object *genlist = NULL;
1191 Evas_Object *btn = NULL;
1192 Elm_Object_Item *nf_it = NULL;
1193 char *default_font_name = NULL;
1194 char *tmp_name = NULL;
1195 int idx = 0, matched_idx = 0;
1200 Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
1201 itc->item_style = "1text.1icon.1";
1202 itc->func.text_get = _gl_font_style_title_get;
1203 itc->func.content_get = _gl_font_style_ridio_get;
1204 itc->func.del = _font_style_gl_del;
1206 Evas_Object * layout = elm_layout_add(ad->nf);
1207 elm_layout_file_set(layout, EDJE_PATH, "setting/genlist/layout");
1208 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1210 genlist = elm_genlist_add(layout);
1211 elm_genlist_block_count_set(genlist, 14);
1212 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
1213 evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1216 ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_FONT_TYPE, &tmp_name);
1217 if (ret != SYSTEM_SETTINGS_ERROR_NONE) {
1218 ERR("failed to call system_setting_get_value_string with err %d", ret);
1219 tmp_name = _get_default_font();
1222 default_font_name = _get_default_font();
1224 Font_Style_Item_Data *id_default = calloc(sizeof(Font_Style_Item_Data), 1);
1225 if (tmp_name && !strcmp(tmp_name, default_font_name)) {
1227 font_name = strdup(tmp_name);
1229 id_default->index = idx++;
1230 id_default->font_name = strdup(default_font_name);
1231 id_default->item = elm_genlist_item_append(genlist, itc, id_default, NULL, ELM_GENLIST_ITEM_NONE,
1232 _font_style_gl_cb, (void*)id_default);
1234 Eina_List *font_list = NULL;
1235 Eina_List *l = NULL;
1236 FcChar8 *font_data = NULL;
1237 font_list = _get_available_font_list();
1238 EINA_LIST_FOREACH(font_list, l, font_data)
1240 if(!default_font_name || strcmp((const char *)default_font_name, (const char *)font_data)){
1241 Font_Style_Item_Data *id = calloc(sizeof(Item_Data), 1);
1242 if (tmp_name && !strcmp((const char *)tmp_name, (const char *)font_data)) {
1244 font_name = strdup(tmp_name);
1247 id->font_name = (char *)strdup((char*)font_data);
1248 id->item = elm_genlist_item_append(genlist, itc, id, NULL, ELM_GENLIST_ITEM_NONE,
1249 _font_style_gl_cb, (void*)id);
1254 ad->font_style_rdg = elm_radio_add(genlist);
1255 elm_radio_state_value_set(ad->font_style_rdg, -1);
1256 elm_radio_value_set(ad->font_style_rdg, matched_idx);
1258 evas_object_data_set(genlist, "radio_main", ad->font_style_rdg);
1260 g_font_style_genlist = genlist;
1262 elm_object_part_content_set(layout, "elm.genlist", genlist);
1264 elm_genlist_item_class_free(itc);
1267 btn = elm_button_add(layout);
1268 evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1269 elm_object_text_set(btn, _("IDS_ST_BUTTON_CANCEL_ABB2"));
1270 elm_object_part_content_set(layout, "btn.left", btn);
1271 evas_object_smart_callback_add(btn, "clicked", _font_style_cancel_cb, ad);
1273 btn = elm_button_add(layout);
1274 evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1275 elm_object_text_set(btn, _("IDS_WNOTI_BUTTON_OK_ABB2"));
1276 elm_object_part_content_set(layout, "btn.right", btn);
1277 evas_object_smart_callback_add(btn, "clicked", _font_style_ok_cb, ad);
1280 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, layout, NULL);
1281 elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
1284 void _show_font_size_list(void* data)
1289 DBG("%s", "_show_screen_timeout_list - appdata is null");
1292 Evas_Object *genlist = NULL;
1293 Elm_Object_Item *nf_it = NULL;
1294 struct _dt_menu_item *menu_its = NULL;
1299 Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
1300 itc->item_style = "1text.1icon.1";
1301 itc->func.text_get = _gl_font_size_title_get;
1302 itc->func.content_get = _gl_font_size_ridio_get;
1303 itc->func.del = _font_size_gl_del;
1305 Evas_Object * layout = elm_layout_add(ad->nf);
1306 elm_layout_file_set(layout, EDJE_PATH, "setting/genlist/layout");
1307 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1309 genlist = elm_genlist_add(layout);
1310 elm_genlist_block_count_set(genlist, 14);
1311 elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
1312 evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1314 for( idx = 0; idx < FONT_SIZE_COUNT; idx++ )
1316 Item_Data *id = calloc(sizeof(Item_Data), 1);
1318 id->item = elm_genlist_item_append(genlist, itc, id, NULL, ELM_GENLIST_ITEM_NONE, _font_size_gl_cb, (void*)idx);
1321 ad->font_size_rdg = elm_radio_add(genlist);
1322 elm_radio_state_value_set(ad->font_size_rdg, 6);
1323 elm_radio_value_set(ad->font_size_rdg, screen_time_index);
1325 evas_object_data_set(genlist, "radio_main", ad->font_size_rdg);
1327 g_font_size_genlist = genlist;
1329 elm_object_part_content_set(layout, "elm.genlist", genlist);
1331 elm_genlist_item_class_free(itc);
1333 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, layout, NULL);
1334 elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
1337 static char * _gl_roatate_screen_title_get(void *data, Evas_Object *obj, const char *part)
1340 Item_Data *id = data;
1342 if( !strcmp(part, "elm.text") )
1344 snprintf(buf, sizeof(buf)-1, "%s", _(rotate_screen_str[id->index]));
1350 static Evas_Object * _gl_rotate_screen_radio_get(void *data, Evas_Object *obj, const char *part)
1352 Evas_Object *radio = NULL;
1353 Evas_Object *radio_main = evas_object_data_get(obj, "radio_main");
1354 Item_Data *id = data;
1355 static int rotate = -1;
1357 if( !strcmp(part, "elm.icon") )
1359 radio = elm_radio_add(obj);
1360 elm_radio_state_value_set(radio, id->index);
1361 evas_object_size_hint_align_set(radio, EVAS_HINT_FILL, EVAS_HINT_FILL);
1362 evas_object_size_hint_weight_set(radio, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1363 elm_radio_group_add(radio, radio_main);
1366 rotate = _get_rotate_screen();
1367 rotate_screen_rot = rotate;
1369 if(rotate == SETTING_SCREENROTATION_90_DEGREE){
1371 rotate_screen_index = 1;
1373 else if(rotate == SETTING_SCREENROTATION_270_DEGREE){
1375 rotate_screen_index = 2;
1377 else if(rotate == SETTING_SCREENROTATION_180_DEGREE){
1379 rotate_screen_index = 3;
1384 rotate_screen_rot = SETTING_SCREENROTATION_0_DEGREE;
1390 static void _rotate_screen_gl_del(void *data, Evas_Object *obj)
1392 Item_Data *id = data;
1397 static void _rotate_screen_gl_cb(void *data, Evas_Object *obj, void *event_info)
1399 elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
1401 rotate_screen_index = (int)data;
1403 if(rotate_screen_index == 1){
1405 rotate_screen_rot = SETTING_SCREENROTATION_90_DEGREE;
1407 else if(rotate_screen_index == 2){
1409 rotate_screen_rot = SETTING_SCREENROTATION_270_DEGREE;
1411 else if(rotate_screen_index == 3){
1413 rotate_screen_rot = SETTING_SCREENROTATION_180_DEGREE;
1416 rotate_screen_rot = SETTING_SCREENROTATION_0_DEGREE;
1420 _set_rotate_screen(rotate_screen_rot);
1422 elm_genlist_realized_items_update(g_rotate_screen_genlist);
1424 elm_naviframe_item_pop(temp_ad->nf);
1425 if(!temp_ad->rotate_screen_rdg)
1427 evas_object_del(temp_ad->rotate_screen_rdg);
1428 temp_ad->rotate_screen_rdg = NULL;
1432 void _show_rotate_screen_list(void* data)
1437 DBG("%s", "_show_screen_timeout_list - appdata is null");
1440 Evas_Object *genlist = NULL;
1441 Elm_Object_Item *nf_it = NULL;
1442 struct _dt_menu_item *menu_its = NULL;
1447 Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
1448 itc->item_style = "1text.1icon.1";
1449 itc->func.text_get = _gl_roatate_screen_title_get;
1450 itc->func.content_get = _gl_rotate_screen_radio_get;
1451 itc->func.del = _rotate_screen_gl_del;
1453 genlist = elm_genlist_add(ad->nf);
1454 elm_genlist_block_count_set(genlist, 14);
1455 evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1457 for( idx = 0; idx < ROTATE_SCREEN_COUNT; idx++ )
1459 Item_Data *id = calloc(sizeof(Item_Data), 1);
1461 id->item = elm_genlist_item_append(genlist, itc, id, NULL, ELM_GENLIST_ITEM_NONE, _rotate_screen_gl_cb, (void*)idx);
1464 ad->rotate_screen_rdg = elm_radio_add(genlist);
1465 elm_radio_state_value_set(ad->rotate_screen_rdg, -1);
1466 elm_radio_value_set(ad->rotate_screen_rdg, rotate_screen_index);
1468 evas_object_data_set(genlist, "radio_main", ad->rotate_screen_rdg);
1470 g_screen_time_genlist = genlist;
1472 elm_genlist_item_class_free(itc);
1474 nf_it = elm_naviframe_item_push(ad->nf, NULL, NULL, NULL, genlist, NULL);
1475 elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_FALSE);
1478 static void _set_cancel_cb(void *data, Evas_Object *obj, void *event_info)
1480 appdata * ad = data;
1484 int enable = display_get_hbm();
1485 if( hbm_mode_on_original )
1487 if( enable == DISABLE )
1489 _set_HBM_mode(TRUE);
1494 if( enable == ENABLE )
1496 _set_HBM_mode(FALSE);
1500 device_set_brightness_to_settings(0, brightness_origin_level);
1502 brightness_layout = NULL;
1503 g_brightness_controller = NULL;
1505 elm_naviframe_item_pop(ad->nf);
1508 static int _change_bright_lovel_to_index(int level)
1512 if( level >= 20 && level <= 100 )
1514 index = (level / 20);
1515 DBG("Setting - level -> index : %d", index);
1520 static int _change_bright_index_to_level(int index)
1523 if( index > 0 && index < 6 )
1544 DBG("Setting - index -> level : %d", level);
1549 static void brightness_vconf_changed_cb(keynode_t * key, void * data)
1551 DBG("Setting - brightness vconf changed!!");
1553 int brightness_level = 0;
1554 brightness_level = vconf_keynode_get_int(key);
1555 brightness_index = _change_bright_lovel_to_index(brightness_level);
1559 int enable = display_get_hbm();
1562 brightness_index = 6;
1564 elm_spinner_value_set(g_spinner, brightness_index);
1565 _update_brightness_circle(g_spinner);
1569 static void _set_brightness_clicked_cb(void *data, Evas_Object *obj, void *event_info)
1571 appdata * ad = (appdata *) data;
1575 int enable = display_get_hbm();
1576 if( enable == TRUE )
1579 snprintf(buf, sizeof(buf)-1, _("IDS_IDLE_POP_AFTER_P1SD_MINS_BRIGHTNESS_WILL_BE_RESET_TO_DEFAULT_LEVEL_HP2SD"), 5, 4);
1581 // show toast - automatic freed!!
1582 struct _toast_data * toast = _create_toast(ad, strdup(buf));
1584 _show_toast(ad, toast);
1589 int brightness_level = _change_bright_index_to_level(brightness_index);
1591 device_set_brightness_to_settings(0, brightness_level);
1594 brightness_layout = NULL;
1595 g_brightness_controller = NULL;
1599 elm_naviframe_item_pop(ad->nf);
1603 static void sync_brightness(int real_brightness)
1605 DBG("Setting - Synchronized brightness level");
1607 vconf_set_int(VCONFKEY_SETAPPL_LCD_BRIGHTNESS, real_brightness);
1610 static void _update_brightness_circle(Evas_Object * spiner)
1616 double min, max, posx2;
1617 int idx = (int) elm_spinner_value_get(spiner);
1619 edje_object_part_geometry_get(elm_layout_edje_get(spiner), "center.image2", NULL, NULL, &w, NULL);
1620 elm_spinner_min_max_get(spiner, &min, &max);
1622 int enable = display_get_hbm();
1625 DBG("Setting - dispaly_get_hbm() is fail!!");
1630 edje_object_signal_emit(elm_layout_edje_get(spiner), "elm,spinner,full1", "elm");
1632 elm_object_part_text_set(brightness_layout, "elm.text.2", _("IDS_ST_BODY_OUTDOOR_MODE_ABB"));
1637 edje_object_signal_emit(elm_layout_edje_get(spiner), "elm,spinner,min", "elm");
1639 edje_object_signal_emit(elm_layout_edje_get(spiner), "elm,spinner,full1", "elm");
1641 edje_object_signal_emit(elm_layout_edje_get(spiner), "elm,spinner,default1", "elm");
1643 brightness_index = idx;
1645 posx2 = (double)(w/max) * brightness_index;
1647 edje_object_part_drag_value_set(elm_layout_edje_get(spiner), "elm.dragable.slider", posx2, 0);
1649 elm_object_part_text_set(brightness_layout, "elm.text.2", "");
1653 static void _on_spinner_change_cb(void *data, Evas_Object * obj, void *event_info)
1655 DBG("Setting - _on_spinner_change_cb() is called!");
1659 static int prev = 0;
1661 int idx = (int) elm_spinner_value_get(obj);
1663 edje_object_part_geometry_get(elm_layout_edje_get(obj), "center.image2", NULL, NULL, &w, NULL);
1664 elm_spinner_min_max_get(obj, &min, &max);
1666 DBG("Setting - min: %i, max: %i, idx: %d", (int)min, (int)max, idx);
1669 edje_object_signal_emit(elm_layout_edje_get(obj), "elm,spinner,full", "elm");
1671 edje_object_signal_emit(elm_layout_edje_get(obj), "elm,spinner,default", "elm");
1673 edje_object_signal_emit(elm_layout_edje_get(obj), "elm,spinner,min", "elm");
1675 edje_object_signal_emit(elm_layout_edje_get(obj), "elm,spinner,normal", "elm");
1678 brightness_index = idx;
1680 if( brightness_index > 0 && brightness_index < 6 )
1682 int enable = display_get_hbm();
1685 DBG("Setting - dispaly_get_hbm() is fail!!");
1687 else if( enable == TRUE )
1689 DBG("Setting - current HBM mode!!");
1691 elm_object_part_text_set(brightness_layout, "elm.text.2", "");
1693 _set_HBM_mode(FALSE);
1695 //set off sequnce : hbm off -> bright level down
1696 int brightness_level = _change_bright_index_to_level(brightness_index);
1697 device_set_brightness_to_settings(0, brightness_level);
1698 vconf_set_int("db/setting/Brightness", brightness_level);
1700 else if( brightness_index == 6 )
1702 DBG("Setting - HBM mode on!!");
1704 _set_HBM_mode(TRUE);
1706 elm_object_translatable_part_text_set(brightness_layout, "elm.text.2", "IDS_ST_BODY_OUTDOOR_MODE_ABB");
1709 double posx2 = (double)(w/max) * brightness_index;
1712 edje_object_part_drag_value_set(elm_layout_edje_get(obj), "elm.dragable.slider", posx2, 0);
1715 Evas_Object * _show_brightness_popup(void *data, Evas_Object *obj, void *event_info)
1722 int brightness_level = 0;
1729 pd = (spin_date*) malloc(sizeof(spin_date));
1731 int real_brightness = 0;
1732 device_get_brightness(0, &real_brightness);
1733 DBG("Setting - Real brightness : %d", real_brightness);
1735 /* Vconf brightness level */
1736 vconf_get_int(VCONFKEY_SETAPPL_LCD_BRIGHTNESS, &brightness_level);
1738 if( real_brightness != brightness_level ) // HBM mode -> normal level(4)
1740 sync_brightness(real_brightness);
1742 brightness_level = real_brightness;
1745 int enable = display_get_hbm();
1748 DBG("Setting - dispaly_get_hbm() is fail!!");
1751 if( enable == TRUE )
1753 DBG("Setting - current HBM mode!!");
1754 brightness_index = 6;
1758 brightness_index = _change_bright_lovel_to_index(brightness_level);
1761 DBG("Setting - level: %d, index: %d", brightness_level, brightness_index);
1763 brightness_origin_level = brightness_level;
1765 ly = elm_layout_add(ad->nf);
1766 elm_layout_file_set(ly, EDJE_PATH, "setting/2finger_popup/default2");
1767 evas_object_size_hint_min_set(ly, 320, 200);
1768 evas_object_size_hint_weight_set (ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1769 evas_object_size_hint_align_set(ly, EVAS_HINT_FILL, EVAS_HINT_FILL);
1771 brightness_layout = ly;
1773 pd->spinner = elm_spinner_add(ly);
1774 elm_object_style_set(pd->spinner, "brightnessstyle");
1775 elm_spinner_editable_set(pd->spinner, EINA_TRUE);
1776 elm_spinner_min_max_set(pd->spinner, 1, 6);
1777 evas_object_smart_callback_add(pd->spinner, "changed", _on_spinner_change_cb, pd);
1778 elm_object_part_content_set(ly, "elm.icon.1", pd->spinner);
1779 elm_spinner_value_set(pd->spinner, brightness_index);
1780 _update_brightness_circle(pd->spinner);
1782 btn = elm_button_add(ly);
1783 evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1784 elm_object_translatable_text_set(btn, "IDS_ST_BUTTON_CANCEL_ABB2");
1785 elm_object_part_content_set(ly, "btn1", btn);
1786 evas_object_smart_callback_add(btn, "clicked", _set_cancel_cb, ad);
1788 btn = elm_button_add(ly);
1789 evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1790 elm_object_translatable_text_set(btn, "IDS_WNOTI_BUTTON_OK_ABB2");
1791 elm_object_part_content_set(ly, "btn2", btn);
1792 evas_object_smart_callback_add(btn, "clicked", _set_brightness_clicked_cb, ad);
1794 hbm_mode_on_original = enable; // backup for cancel
1796 g_spinner = pd->spinner;
1801 static void _set_rotate_screen(const int rotation)
1803 vconf_set_int(VCONFKEY_SETAPPL_SCREENROTATION_DEG_INT, rotation);
1806 static int _get_rotate_screen()
1809 vconf_get_int(VCONFKEY_SETAPPL_SCREENROTATION_DEG_INT, &rot);