4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
6 * Contact: MyoungJune Park <mj2004.park@samsung.com>
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
21 #include <setting-display-main.h>
22 #include <dd-display.h>
23 #include <eventsystem.h>
25 #include <setting-common-draw-widget.h>
26 #include <bundle_internal.h>
28 #define KEYSTR_SCREEN_ROTATION "IDS_ST_MBODY_SCREEN_ROTATION"
31 static int setting_display_main_create(void *cb);
32 static int setting_display_main_destroy(void *cb);
33 static int setting_display_main_update(void *cb);
34 static int setting_display_main_cleanup(void *cb);
36 setting_view setting_view_display_main = {
37 .create = setting_display_main_create,
38 .destroy = setting_display_main_destroy,
39 .update = setting_display_main_update,
40 .cleanup = setting_display_main_cleanup,
43 extern const char *str_in_arr[];
44 extern const char *str_out_arr[];
45 const char *screen_capture_destination[] = {
46 KeyStr_ScreenCapture_Ask,
47 KeyStr_ScreenCapture_Gallery,
48 KeyStr_ScreenCapture_KeepIt,
52 /* ***************************************************
56 ***************************************************/
57 static void __screen_timeout_cb(void *data, Evas_Object *obj, void *event_info)
61 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
63 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
64 elm_genlist_item_selected_set(item, 0);
66 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
68 SettingDisplayUG *ad = data;
70 SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
73 if (!safeStrCmp(KeyStr_Backlight_15_SEC_STR, list_item->keyStr)) {
74 elm_radio_value_set(ad->screen_timeout_rdg, 0);
76 } else if (!safeStrCmp(KeyStr_Backlight_30_SEC_STR, list_item->keyStr)) {
77 elm_radio_value_set(ad->screen_timeout_rdg, 1);
79 } else if (!safeStrCmp(KeyStr_Backlight_1_MIN_STR, list_item->keyStr)) {
80 elm_radio_value_set(ad->screen_timeout_rdg, 2);
82 } else if (!safeStrCmp(KeyStr_Backlight_2_MIN_STR, list_item->keyStr)) {
83 elm_radio_value_set(ad->screen_timeout_rdg, 3);
85 } else if (!safeStrCmp(KeyStr_Backlight_5_MIN_STR, list_item->keyStr)) {
86 elm_radio_value_set(ad->screen_timeout_rdg, 4);
88 } else if (!safeStrCmp(KeyStr_Backlight_10_MIN_STR, list_item->keyStr)) {
89 elm_radio_value_set(ad->screen_timeout_rdg, 5);
94 setting_set_int_slp_key(ad->data_back->int_slp_setting_binded, value, &err);
96 if (ad->screen_timeout_popup) {
97 evas_object_del(ad->screen_timeout_popup);
98 ad->screen_timeout_popup = NULL;
102 static void setting_display_screen_timeout_popup(void *data)
105 setting_retm_if(data == NULL, "data is NULL");
107 SettingDisplayUG *ad = (SettingDisplayUG *) data;
109 Evas_Object *menu_glist = NULL;
110 ad->screen_timeout_popup = setting_create_popup_with_list(&menu_glist, ad, ad->win_get,
111 KeyStr_BacklightTime, NULL, 0, 0);
112 _P(ad->screen_timeout_popup);
114 Evas_Object *rdg = elm_radio_add(menu_glist);
115 elm_object_style_set(rdg, "list");
116 evas_object_propagate_events_set(rdg, EINA_TRUE);
117 elm_radio_state_value_set(rdg, -1);
118 evas_object_data_set(menu_glist, "radio", rdg);
119 ad->screen_timeout_rdg = rdg;
121 ad->data_backlight_15sec = setting_create_Gendial_field_1radio(menu_glist, &(ad->itc_1icon_1text_sub),
122 __screen_timeout_cb, ad,
124 rdg, 0, KeyStr_Backlight_15_SEC_STR,
126 if (ad->data_backlight_15sec) {
127 ad->data_backlight_15sec->userdata = ad;
128 __BACK_POINTER_SET(ad->data_backlight_15sec);
130 SETTING_TRACE_ERROR("ad->data_backlight_15sec is NULL");
133 ad->data_backlight_30sec = setting_create_Gendial_field_1radio(menu_glist, &(ad->itc_1icon_1text_sub),
134 __screen_timeout_cb, ad,
136 rdg, 1, KeyStr_Backlight_30_SEC_STR,
138 if (ad->data_backlight_30sec) {
139 ad->data_backlight_30sec->userdata = ad;
140 __BACK_POINTER_SET(ad->data_backlight_30sec);
142 SETTING_TRACE_ERROR("ad->data_backlight_30sec is NULL");
145 ad->data_backlight_1min = setting_create_Gendial_field_1radio(menu_glist, &(ad->itc_1icon_1text_sub),
146 __screen_timeout_cb, ad,
148 rdg, 2, KeyStr_Backlight_1_MIN_STR,
150 if (ad->data_backlight_1min) {
151 ad->data_backlight_1min->userdata = ad;
152 __BACK_POINTER_SET(ad->data_backlight_1min);
154 SETTING_TRACE_ERROR("ad->data_backlight_1min is NULL");
157 ad->data_backlight_2min = setting_create_Gendial_field_1radio(menu_glist, &(ad->itc_1icon_1text_sub),
158 __screen_timeout_cb, ad,
160 rdg, 3, KeyStr_Backlight_2_MIN_STR,
162 if (ad->data_backlight_2min) {
163 ad->data_backlight_2min->userdata = ad;
164 __BACK_POINTER_SET(ad->data_backlight_2min);
166 SETTING_TRACE_ERROR("ad->data_backlight_2min is NULL");
169 ad->data_backlight_5min = setting_create_Gendial_field_1radio(menu_glist, &(ad->itc_1icon_1text_sub),
170 __screen_timeout_cb, ad,
172 rdg, 4, KeyStr_Backlight_5_MIN_STR,
174 if (ad->data_backlight_5min) {
175 ad->data_backlight_5min->userdata = ad;
176 __BACK_POINTER_SET(ad->data_backlight_5min);
178 SETTING_TRACE_ERROR("ad->data_backlight_5min is NULL");
181 ad->data_backlight_10min = setting_create_Gendial_field_1radio(menu_glist, &(ad->itc_1icon_1text_sub),
182 __screen_timeout_cb, ad,
184 rdg, 5, KeyStr_Backlight_10_MIN_STR,
186 if (ad->data_backlight_10min) {
187 ad->data_backlight_10min->userdata = ad;
188 __BACK_POINTER_SET(ad->data_backlight_10min);
190 SETTING_TRACE_ERROR("ad->data_backlight_10min is NULL");
196 setting_get_int_slp_key(ad->data_back->int_slp_setting_binded, &value, &err);
198 elm_radio_value_set(rdg, 0);
199 } else if (30 == value) {
200 elm_radio_value_set(rdg, 1);
201 } else if (60 == value) {
202 elm_radio_value_set(rdg, 2);
203 } else if (120 == value) {
204 elm_radio_value_set(rdg, 3);
205 } else if (300 == value) {
206 elm_radio_value_set(rdg, 4);
207 } else if (600 == value) {
208 elm_radio_value_set(rdg, 5);
212 #if !SUPPOR_SEPARATE_BRIGHTNESS
214 static void setting_display_main_lowbat_cb(keynode_t *key, void *data)
216 ret_if(data == NULL);
217 SettingDisplayUG *ad = (SettingDisplayUG *) data;
219 ret_if(ad->data_br == NULL);
221 char *vconf_key = vconf_keynode_get_name(key);
222 SETTING_TRACE("the value of [ %s ] just changed", vconf_key);
223 /* VCONFKEY_SYSMAN_BATTERY_STATUS_LOW */
226 vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &battery_value);
227 ad->low_bat = battery_value;
229 if (battery_value < VCONFKEY_SYSMAN_BAT_WARNING_LOW) {
230 elm_slider_value_set(ad->data_br->eo_check, 1);
232 setting_disable_genlist_item(ad->data_br->item);
234 setting_enable_genlist_item(ad->data_br->item);
240 static char *___touchkey_light_duration_sub_desc()
244 vconf_get_int(VCONFKEY_SETAPPL_TOUCHKEY_LIGHT_DURATION, &value);
247 return g_strdup("IDS_ST_BODY_ALWAYS_OFF");
249 return g_strdup("IDS_ST_BODY_ALWAYS_ON");
251 return g_strdup("IDS_ST_BODY_1_5_SECONDS");
254 return g_strdup("IDS_MSG_OPT_6_SECONDS");
257 return g_strdup("IDS_ST_BODY_ALWAYS_ON");
261 static char *___format_touchkey_light_duration_sub_desc(char *temp)
263 /*SETTING_TRACE_BEGIN; */
264 /*SETTING_TRACE("temp:%s",temp); */
265 if (!safeStrCmp(temp, "IDS_ST_BODY_ALWAYS_OFF")) {
266 return g_strdup(_("IDS_ST_BODY_ALWAYS_OFF"));
267 } else if (!safeStrCmp(temp, "IDS_ST_BODY_ALWAYS_ON")) {
268 return g_strdup(_("IDS_ST_BODY_ALWAYS_ON"));
269 } else if (!safeStrCmp(temp, "1.5")) {
270 char duration[MAX_DISPLAY_NAME_LEN_ON_UI] = {0, };
271 snprintf(duration, sizeof(duration), "%s %s", temp, (char *)(_("IDS_ST_BODY_SECONDS")));
272 return g_strdup(duration);
273 } else if (!safeStrCmp(temp, "6")) {
274 char duration[MAX_DISPLAY_NAME_LEN_ON_UI] = {0, };
275 snprintf(duration, sizeof(duration), "%s %s", temp, (char *)(_("IDS_ST_BODY_SECONDS")));
276 return g_strdup(duration);
278 return g_strdup(_("IDS_ST_BODY_ALWAYS_ON"));
283 char *__setting_display_screen_capture_destination_get()
287 int ret = vconf_get_int(VCONFKEY_SETAPPL_SCREEN_CAPTURE_DESTINATION, &value);
289 SETTING_TRACE_ERROR("get vconf failed");
293 case SETTING_SCREEN_CAPTURE_DESTINATION_ASK:
294 temp = (char *)(screen_capture_destination[SETTING_SCREEN_CAPTURE_DESTINATION_ASK]);
296 case SETTING_SCREEN_CAPTURE_DESTINATION_GALLERY:
297 temp = (char *)(screen_capture_destination[SETTING_SCREEN_CAPTURE_DESTINATION_GALLERY]);
299 case SETTING_SCREEN_CAPTURE_DESTINATION_KEEPIT:
300 temp = (char *)(screen_capture_destination[SETTING_SCREEN_CAPTURE_DESTINATION_KEEPIT]);
303 SETTING_TRACE_ERROR("incorrect screen capture destination");
304 temp = (char *)(screen_capture_destination[SETTING_SCREEN_CAPTURE_DESTINATION_ASK]);
310 char *__item_touch_duration_sub_item_text_get(void *data, Evas_Object *obj, const char *part)
312 /*SETTING_TRACE_BEGIN; */
313 setting_retvm_if(data == NULL, NULL, "Data parameter is NULL");
314 Setting_GenGroupItem_Data *item_data = (Setting_GenGroupItem_Data *) data;
315 char *ret_str = NULL;
316 if (!safeStrCmp(part, "elm.text") || !safeStrCmp(part, "elm.text.1")) {
317 if (item_data->keyStr) {
318 ret_str = ___format_touchkey_light_duration_sub_desc(item_data->keyStr);
323 char *__item_touch_duration_text_get(void *data, Evas_Object *obj, const char *part)
325 /*SETTING_TRACE_BEGIN; */
326 setting_retvm_if(data == NULL, NULL, "Data parameter is NULL");
327 Setting_GenGroupItem_Data *item_data = (Setting_GenGroupItem_Data *) data;
328 char *ret_str = NULL;
329 if (!safeStrCmp(part, "elm.text") || !safeStrCmp(part, "elm.text.1")) {
330 if (item_data->keyStr) {
331 ret_str = (char *)g_strdup(_(item_data->keyStr));
333 } else if (!safeStrCmp(part, "elm.text.2")) { /* bottom or right */
334 if (item_data->sub_desc) {
335 ret_str = ___format_touchkey_light_duration_sub_desc(item_data->sub_desc);
340 char *__item_backlight_sub_item_text_get(void *data, Evas_Object *obj, const char *part)
342 /*SETTING_TRACE_BEGIN; */
343 setting_retvm_if(data == NULL, NULL, "Data parameter is NULL");
344 Setting_GenGroupItem_Data *item_data = (Setting_GenGroupItem_Data *) data;
345 char *ret_str = NULL;
346 if (!safeStrCmp(part, "elm.text") || !safeStrCmp(part, "elm.text.1")) {
347 if (item_data->keyStr) {
348 ret_str = format_backlight_time_str(item_data->keyStr);
355 char *__item_backlight_text_get(void *data, Evas_Object *obj, const char *part)
357 /*SETTING_TRACE_BEGIN; */
358 setting_retvm_if(data == NULL, NULL, "Data parameter is NULL");
359 Setting_GenGroupItem_Data *item_data = (Setting_GenGroupItem_Data *) data;
360 char *ret_str = NULL;
361 if (!safeStrCmp(part, "elm.text") || !safeStrCmp(part, "elm.text.1")) {
362 if (item_data->keyStr) {
363 ret_str = (char *)g_strdup(_(item_data->keyStr));
365 } else if (!safeStrCmp(part, "elm.text.2")) { /* bottom or right */
366 if (item_data->sub_desc) {
367 ret_str = format_backlight_time_str(item_data->sub_desc);
370 /*SETTING_TRACE_END; */
373 static void setting_display_main_vconf_change_cb(keynode_t *key, void *data)
375 ret_if(data == NULL);
377 SettingDisplayUG *ad = data;
380 status = vconf_keynode_get_bool(key);
381 char *vconf_name = vconf_keynode_get_name(key);
382 SETTING_TRACE("status:%d", status);
383 if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL)) {
384 if (ad->data_auto_rotate && ad->data_auto_rotate->eo_check) {
385 setting_update_gl_item_chk_status(ad->data_auto_rotate, status);
386 if (status == TRUE) {
387 if (ad->data_smart_rotation && ad->data_smart_rotation->item) {
388 setting_enable_genlist_item(ad->data_smart_rotation->item);
390 } else if (status == FALSE) {
391 if (ad->data_smart_rotation && ad->data_smart_rotation->item) {
392 setting_disable_genlist_item(ad->data_smart_rotation->item);
396 } else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_LCD_AUTO_DISPLAY_ADJUSTMENT)) {
397 setting_update_gl_item_chk_status(ad->data_auto_adjust_scrn_tone, status);
398 } else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_DYNAMIC_STATUS_BAR)) {
399 setting_update_gl_item_chk_status(ad->data_dynamic, status);
400 } else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL)) {
402 G_FREE(ad->data_back->sub_desc);
403 ad->data_back->sub_desc = get_pa_backlight_time_value_str();
404 elm_object_item_data_set(ad->data_back->item, ad->data_back);
405 elm_genlist_item_update(ad->data_back->item);
407 } else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_TOUCHKEY_LIGHT_DURATION)) {
408 if (ad->data_touchkey_light_duration) {
409 G_FREE(ad->data_touchkey_light_duration->sub_desc);
410 ad->data_touchkey_light_duration->sub_desc = ___touchkey_light_duration_sub_desc();
411 elm_object_item_data_set(ad->data_touchkey_light_duration->item, ad->data_touchkey_light_duration);
412 elm_genlist_item_update(ad->data_touchkey_light_duration->item);
418 void auto_rotate_event_handler(const char *event_name, bundle *data, void *user_data)
420 const char *auto_rotate_set = NULL;
421 SETTING_TRACE("auto rotate set event(%s) received", event_name);
423 auto_rotate_set = bundle_get_val(data, EVT_KEY_SCREEN_AUTOROTATE_STATE);
424 SETTING_TRACE("auto_rotate_set(%s", auto_rotate_set);
427 int auto_rotate_event_reg_id;
429 static int setting_display_main_create(void *cb)
433 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
435 SettingDisplayUG *ad = (SettingDisplayUG *) cb;
437 Evas_Object *scroller = NULL;
442 /* add basic layout */
443 char setBtnStr[MAX_DISPLAY_NAME_LEN_ON_UI];
444 snprintf(setBtnStr, sizeof(setBtnStr), "%s",
445 (char *)dgettext("sys_string", "IDS_ST_BUTTON_BACK"));
448 setting_create_layout_navi_bar_genlist(ad->win_main_layout,
450 KeyStr_Display, setBtnStr,
452 (setting_call_back_func)setting_display_main_click_softkey_back_cb,
456 ad->genlist = scroller;
457 elm_genlist_mode_set(ad->genlist, ELM_LIST_COMPRESS);
458 /*register vconf key */
460 ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL,
461 setting_display_main_vconf_change_cb, ad);
463 SETTING_TRACE_ERROR("vconf notifications Failed %d", ret);
465 ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_LCD_AUTO_DISPLAY_ADJUSTMENT,
466 setting_display_main_vconf_change_cb, ad);
468 SETTING_TRACE_ERROR("vconf notifications Failed %d", ret);
470 ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_DYNAMIC_STATUS_BAR,
471 setting_display_main_vconf_change_cb, ad);
473 SETTING_TRACE_ERROR("vconf notifications Failed %d", ret);
475 ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_SCREEN_CAPTURE_EDIT_AFTER_CAPTURE,
476 setting_display_main_vconf_change_cb, ad);
478 SETTING_TRACE_ERROR("vconf notifications Failed %d", ret);
480 ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL,
481 setting_display_main_vconf_change_cb, ad);
483 SETTING_TRACE_ERROR("vconf notifications Failed %d", ret);
485 ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_TOUCHKEY_LIGHT_DURATION,
486 setting_display_main_vconf_change_cb, ad);
488 SETTING_TRACE_ERROR("vconf notifications Failed %d", ret);
494 construct_brightness(ad, scroller);
498 setting_create_Gendial_field_def(scroller, &(ad->itc_1text),
499 setting_display_main_mouse_up_Gendial_list_cb,
500 ad, SWALLOW_Type_INVALID, NULL,
501 NULL, 0, KeyStr_Font,
504 ad->data_font->userdata = ad;
505 ad->data_font->group_style = SETTING_GROUP_STYLE_TOP;
506 __BACK_POINTER_SET(ad->data_font);
508 SETTING_TRACE_ERROR("ad->data_font is NULL");
512 ret = vconf_get_bool(VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, &value);
513 ad->data_auto_rotate =
514 setting_create_Gendial_field_def(scroller, &(ad->itc_1text_1icon),
515 setting_display_main_mouse_up_Gendial_list_cb,
516 ad, SWALLOW_Type_1ICON_1RADIO, NULL,
517 NULL, value, "IDS_ST_HEADER_AUTO_ROTATE_SCREEN_ABB",
519 setting_display_main_auto_rotate_chk_btn_cb);
520 if (ad->data_auto_rotate) {
521 ad->data_auto_rotate->userdata = ad;
522 __BACK_POINTER_SET(ad->data_auto_rotate);
523 setting_genlist_item_groupstyle_set(ad->data_auto_rotate, SETTING_GROUP_STYLE_TOP);
525 SETTING_TRACE_ERROR("ad->data_battery is NULL");
529 char *pa_backlight_time = get_pa_backlight_time_str();
531 setting_create_Gendial_field_def(scroller,
533 setting_display_main_mouse_up_Gendial_list_cb, ad,
534 SWALLOW_Type_INVALID, NULL, NULL,
535 0, KeyStr_BacklightTime,
540 ad->data_back->int_slp_setting_binded = INT_SLP_SETTING_LCD_TIMEOUT_NORMAL;
541 ad->data_back->group_style = SETTING_GROUP_STYLE_CENTER;
542 __BACK_POINTER_SET(ad->data_back);
544 SETTING_TRACE_ERROR("ad->data_back is NULL");
546 G_FREE(pa_backlight_time);
548 #if !SUPPOR_SEPARATE_BRIGHTNESS
551 vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &battery_value);
552 ad->low_bat = battery_value;
554 if (battery_value < VCONFKEY_SYSMAN_BAT_WARNING_LOW) {
555 elm_slider_value_set(ad->data_br->eo_check, 1);
556 setting_disable_genlist_item(ad->data_br->item);
558 setting_enable_genlist_item(ad->data_br->item);
561 if (ad->display_expand_state == DISPLAY_EXPAND_BACKLIGHT) {
562 if (ad->data_back && ad->data_back->item) {
563 elm_genlist_item_expanded_set(ad->data_back->item, TRUE);
566 vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, setting_display_main_lowbat_cb, ad);
570 if (eventsystem_register_event(SYS_EVENT_SCREEN_AUTOROTATE_STATE,
571 &auto_rotate_event_reg_id,
572 (eventsystem_handler)auto_rotate_event_handler, cb) != ES_R_OK) {
573 SETTING_TRACE_ERROR("error");
576 /* add separator in botton of view */
577 Elm_Object_Item *item =
578 elm_genlist_item_append(scroller, &itc_seperator, NULL, NULL,
579 ELM_GENLIST_ITEM_NONE, NULL, NULL);
580 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
581 setting_view_display_main.is_create = 1;
582 return SETTING_RETURN_SUCCESS;
585 static int setting_display_main_destroy(void *cb)
589 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
590 retv_if(!(setting_view_display_main.is_create), SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
592 SettingDisplayUG *ad = (SettingDisplayUG *) cb;
593 destruct_brightness(ad);
594 #if !SUPPORT_SEPARATE_BRIGHTNESS
595 /* low battery handler - registration */
596 vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, setting_display_main_lowbat_cb);
598 vconf_ignore_key_changed(VCONFKEY_SETAPPL_BRIGHTNESS_AUTOMATIC_INT, __display_int_vconf_cb);
600 ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL,
601 setting_display_main_vconf_change_cb);
603 SETTING_TRACE_ERROR("vconf ignore Failed %d", ret);
605 ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_LCD_AUTO_DISPLAY_ADJUSTMENT,
606 setting_display_main_vconf_change_cb);
608 SETTING_TRACE_ERROR("vconf ignore Failed %d", ret);
610 ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_DYNAMIC_STATUS_BAR,
611 setting_display_main_vconf_change_cb);
613 SETTING_TRACE_ERROR("vconf ignore Failed %d", ret);
615 ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_SCREEN_CAPTURE_EDIT_AFTER_CAPTURE,
616 setting_display_main_vconf_change_cb);
618 SETTING_TRACE_ERROR("vconf ignore Failed %d", ret);
620 ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL,
621 setting_display_main_vconf_change_cb);
623 SETTING_TRACE_ERROR("vconf ignore Failed %d", ret);
625 ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_TOUCHKEY_LIGHT_DURATION,
626 setting_display_main_vconf_change_cb);
628 SETTING_TRACE_ERROR("vconf ignore Failed %d", ret);
634 if (ad->ly_main != NULL) {
635 evas_object_del(ad->ly_main);
637 /* if(ad->back_dialData) FREE(ad->back_dialData); */
639 setting_view_display_main.is_create = 0;
641 if (ES_R_OK != eventsystem_unregister_event(auto_rotate_event_reg_id)) {
642 SETTING_TRACE_ERROR("error");
645 return SETTING_RETURN_SUCCESS;
648 static int setting_display_main_update(void *cb)
652 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
654 SettingDisplayUG *ad = (SettingDisplayUG *) cb;
656 if (ad->ly_main != NULL) {
657 evas_object_show(ad->ly_main);
659 ad->data_br->sub_desc =
660 (char *)g_strdup(get_brightness_mode_str());
661 elm_object_item_data_set(ad->data_br->item, ad->data_br);
662 elm_genlist_item_update(ad->data_br->item);
665 #ifdef SUPPORT_SCREEN_MODE
666 if (ad->data_screen_mode) {
667 char *curmode = vconf_get_str(VCONFKEY_SETAPPL_SCREENMODE_SELNAME);
668 SETTING_TRACE(">>> CUR SCREEN MODE : %s ", curmode);
670 for (; i < SCREENMODE_MAX; i++) {
671 if (0 == safeStrCmp(str_in_arr[i], curmode)) {
672 ad->data_screen_mode->sub_desc = (char *)g_strdup(_(str_out_arr[i]));
678 elm_object_item_data_set(ad->data_screen_mode->item, ad->data_screen_mode);
679 elm_genlist_item_update(ad->data_screen_mode->item);
684 return SETTING_RETURN_SUCCESS;
687 static int setting_display_main_cleanup(void *cb)
690 return SETTING_RETURN_SUCCESS;
693 /* ***************************************************
697 ***************************************************/
699 void setting_display_destroy_font_ug_cb(ui_gadget_h ug,
702 ret_if(priv == NULL);
703 SettingDisplayUG *ad = (SettingDisplayUG *) priv;
705 setting_ug_destroy(ug);
708 elm_genlist_realized_items_update(ad->genlist);
712 Eina_Bool ___display_freeze_event_timer_cb(void *cb)
715 retv_if(cb == NULL, EINA_FALSE);
717 SettingDisplayUG *ad = (SettingDisplayUG *)cb;
719 evas_object_freeze_events_set(ad->navi_bar, EINA_FALSE);
720 ad->event_freeze_timer = NULL;
724 gboolean setting_display_create_font_sg(void *data)
728 retv_if(data == NULL, FALSE);
730 SettingDisplayUG *ad = (SettingDisplayUG *) data; /* ad is point to data */
731 if (0 == app_launcher("setting-font-efl")) {
732 if (ad->event_freeze_timer) {
733 ecore_timer_del(ad->event_freeze_timer);
734 ad->event_freeze_timer = NULL;
736 ad->event_freeze_timer = ecore_timer_add(1, ___display_freeze_event_timer_cb, ad);
737 evas_object_freeze_events_set(ad->navi_bar, EINA_TRUE);
742 void setting_display_destroy_ledindicator_ug_cb(ui_gadget_h ug,
745 ret_if(priv == NULL);
746 SettingDisplayUG *ad = (SettingDisplayUG *) priv;
748 setting_ug_destroy(ug);
749 ad->ug_ledindicator = NULL;
751 /* elm_genlist_realized_items_update(ad->genlist); */
754 gboolean setting_display_create_ledindicator_sg(void *data)
757 retv_if(data == NULL, FALSE);
759 SettingDisplayUG *ad = (SettingDisplayUG *) data; /* ad is point to data */
761 if (ad->ug_ledindicator) {
762 SETTING_TRACE("Font UG is already loaded.");
765 struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
770 cbs->layout_cb = setting_display_layout_ug_cb;
771 cbs->result_cb = NULL;
772 cbs->destroy_cb = setting_display_destroy_ledindicator_ug_cb;
773 cbs->priv = (void *)ad;
775 elm_object_tree_focus_allow_set(ad->ly_main, EINA_FALSE);
776 ad->ug_ledindicator = setting_ug_create(ad->ug, "setting-ledindicator-efl", UG_MODE_FULLVIEW, NULL, cbs);
777 if (NULL == ad->ug_ledindicator) { /* error handling */
778 SETTING_TRACE_ERROR("NULL == ad->ug_ledindicator");
779 evas_object_show(ad->ly_main);
788 setting_display_main_mouse_up_Gendial_list_cb(void *data, Evas_Object *obj,
792 setting_retm_if(data == NULL, "Data parameter is NULL");
794 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
795 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
796 elm_genlist_item_selected_set(item, 0);
797 Setting_GenGroupItem_Data *list_item =
798 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
799 setting_retm_if(NULL == list_item, "list_item is NULL");
801 SettingDisplayUG *ad = (SettingDisplayUG *) data;
803 SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
805 if (!safeStrCmp("IDS_ST_BODY_BRIGHTNESS_M_POWER_SAVING", list_item->keyStr)) {
806 setting_view_change(&setting_view_display_main,
807 &setting_view_display_brightness, ad);
808 } else if (!safeStrCmp(KEYSTR_SCREEN_ROTATION, list_item->keyStr)) {
809 setting_update_gl_item_chk_status(list_item, !(list_item->chk_status));
810 vconf_set_bool(VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, list_item->chk_status);
811 } else if (!safeStrCmp(KeyStr_Font, list_item->keyStr)) {
812 setting_display_create_font_sg(ad);
813 } else if (!safeStrCmp(keystr_LedIndicator, list_item->keyStr)) {
814 setting_display_create_ledindicator_sg(ad);
815 } else if (!safeStrCmp(KeyStr_ScreenCapture_Edit, list_item->keyStr)) {
816 setting_update_gl_item_chk_status(list_item, !(list_item->chk_status));
817 vconf_set_bool(VCONFKEY_SETAPPL_SCREEN_CAPTURE_EDIT_AFTER_CAPTURE, list_item->chk_status);
818 } else if (!safeStrCmp(KeyStr_Dynamic_Status_Bar, list_item->keyStr)) {
819 setting_update_gl_item_chk_status(list_item, !(list_item->chk_status));
820 vconf_set_bool(VCONFKEY_SETAPPL_DYNAMIC_STATUS_BAR, list_item->chk_status);
821 } else if (!safeStrCmp(KeyStr_BacklightTime, list_item->keyStr)) {
822 setting_display_screen_timeout_popup(ad);
827 setting_display_main_click_softkey_back_cb(void *data, Evas_Object *obj,
832 setting_retvm_if(data == NULL, EINA_FALSE,
833 "[Setting > Display] Data parameter is NULL");
835 SettingDisplayUG *ad = (SettingDisplayUG *) data;
837 /* Send destroy request */
838 ug_destroy_me(ad->ug);
844 static void setting_display_main_auto_rotate_chk_btn_cb(void *data, Evas_Object *obj, void *event_info)
848 retm_if(data == NULL, "Data parameter is NULL");
849 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
850 SettingDisplayUG *ad = (SettingDisplayUG *)list_item->userdata;
852 list_item->chk_status = elm_check_state_get(obj); /* for genlist update status */
854 if (list_item->chk_status == 1) {
855 int angle = elm_win_rotation_get(ad->win_main_layout);
856 elm_win_rotation_with_resize_set(ad->win_main_layout, angle);
857 setting_set_event_system(SYS_EVENT_SCREEN_AUTOROTATE_STATE, EVT_KEY_SCREEN_AUTOROTATE_STATE, EVT_VAL_SCREEN_AUTOROTATE_ON);
859 elm_win_rotation_with_resize_set(ad->win_main_layout, 0);
860 setting_set_event_system(SYS_EVENT_SCREEN_AUTOROTATE_STATE, EVT_KEY_SCREEN_AUTOROTATE_STATE, EVT_VAL_SCREEN_AUTOROTATE_OFF);
863 vconf_set_bool(VCONFKEY_SETAPPL_AUTO_ROTATE_SCREEN_BOOL, list_item->chk_status);