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>
25 static int setting_display_main_create(void *cb);
26 static int setting_display_main_destroy(void *cb);
27 static int setting_display_main_update(void *cb);
28 static int setting_display_main_cleanup(void *cb);
30 setting_view setting_view_display_main = {
31 .create = setting_display_main_create,
32 .destroy = setting_display_main_destroy,
33 .update = setting_display_main_update,
34 .cleanup = setting_display_main_cleanup,
37 static char* str_in_arr[] = {"Dynamic", "Standard", "Natural", "Movie"};
38 static char* str_out_arr[] = {Keystr_Dynamic, Keystr_Standard, Keystr_Natural, Keystr_Movie};
41 /* ***************************************************
45 ***************************************************/
47 __setting_display_main_exp_cb(void *data, Evas_Object *obj, void *event_info)
49 ret_if(NULL == data || NULL == event_info);
51 SettingDisplayUG *ad = (SettingDisplayUG *) data;
52 Elm_Object_Item *parentItem = event_info; /* parent item */
53 Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem); /* parent data */
54 Evas_Object *scroller = elm_object_item_widget_get(parentItem);
57 if (data_parentItem == ad->data_back) {
58 rgd = elm_radio_add(scroller);
59 elm_radio_value_set(rgd, -1);
63 setting_create_Gendial_exp_sub_field(scroller,
64 &(ad->itc_1icon_1text_sub),
65 NULL, NULL, parentItem,
66 SWALLOW_Type_1RADIO, rgd,
68 "IDS_ST_BODY_ALWAYS_ON", NULL);
70 setting_create_Gendial_exp_sub_field(scroller,
71 &(ad->itc_1icon_1text_sub),
72 NULL, NULL, parentItem,
73 SWALLOW_Type_1RADIO, rgd,
75 SETTING_DISPLAY_TIME_15_SEC_STR, NULL);
77 setting_create_Gendial_exp_sub_field(scroller,
78 &(ad->itc_1icon_1text_sub),
79 NULL, NULL, parentItem,
80 SWALLOW_Type_1RADIO, rgd,
82 SETTING_DISPLAY_TIME_30_SEC_STR, NULL);
84 ad->data_backlight_1min = setting_create_Gendial_exp_sub_field(scroller,
85 &(ad->itc_1icon_1text_sub),
86 NULL, NULL, parentItem,
87 SWALLOW_Type_1RADIO, rgd,
89 SETTING_DISPLAY_TIME_1_MIN_STR, NULL);
91 ad->data_backlight_2min = setting_create_Gendial_exp_sub_field(scroller,
92 &(ad->itc_1icon_1text_sub),
93 NULL, NULL, parentItem,
94 SWALLOW_Type_1RADIO, rgd,
96 SETTING_DISPLAY_TIME_2_MIN_STR, NULL);
98 ad->data_backlight_5min = setting_create_Gendial_exp_sub_field(scroller,
99 &(ad->itc_1icon_1text_sub),
100 NULL, NULL, parentItem,
101 SWALLOW_Type_1RADIO, rgd,
103 SETTING_DISPLAY_TIME_5_MIN_STR, NULL);
105 ad->data_backlight_10min = setting_create_Gendial_exp_sub_field(scroller,
106 &(ad->itc_1icon_1text_sub),
107 NULL, NULL, parentItem,
108 SWALLOW_Type_1RADIO, rgd,
110 SETTING_DISPLAY_TIME_10_MIN_STR, NULL);
112 setting_update_chk_status(rgd,
113 data_parentItem->int_slp_setting_binded);
117 #if !SUPPOR_SEPARATE_BRIGHTNESS
119 static void setting_display_main_lowbat_cb(keynode_t *key, void* data)
121 ret_if(data == NULL);
122 SettingDisplayUG *ad = (SettingDisplayUG *) data;
124 ret_if(ad->data_br == NULL);
126 char* vconf_key = vconf_keynode_get_name(key);
127 SETTING_TRACE("the value of [ %s ] just changed", vconf_key);
128 // VCONFKEY_SYSMAN_BATTERY_STATUS_LOW
131 vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &battery_value);
132 ad->low_bat = battery_value;
134 if (battery_value < VCONFKEY_SYSMAN_BAT_WARNING_LOW)
136 elm_slider_value_set(ad->data_br->eo_check, 1);
138 setting_disable_genlist_item(ad->data_br->item);
140 setting_enable_genlist_item(ad->data_br->item);
146 static int setting_display_main_create(void *cb)
150 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
152 SettingDisplayUG *ad = (SettingDisplayUG *) cb;
154 Evas_Object *scroller = NULL;
156 /* add basic layout */
157 char setBtnStr[MAX_DISPLAY_NAME_LEN_ON_UI];
158 snprintf(setBtnStr, sizeof(setBtnStr), "%s",
159 (char *)dgettext("sys_string", "IDS_COM_BODY_BACK"));
162 setting_create_layout_navi_bar_genlist(ad->win_main_layout,
164 _(KeyStr_Display), setBtnStr,
166 setting_display_main_click_softkey_back_cb,
169 setting_enable_expandable_genlist(scroller, ad,
170 __setting_display_main_exp_cb, NULL);
172 Elm_Object_Item *item = NULL;;
175 elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
176 ELM_GENLIST_ITEM_NONE, NULL, NULL);
177 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
183 char *curmode = vconf_get_str(VCONFKEY_SETAPPL_SCREENMODE_SELNAME);
184 SETTING_TRACE(">>> CUR SCREEN MODE : %s ", curmode);
187 for (; i < sizeof(str_in_arr)/sizeof(str_in_arr[0]); i++) {
188 if (0 == safeStrCmp(str_in_arr[i], curmode)) {
189 ad->data_screen_mode = setting_create_Gendial_field_def(scroller, &(itc_2text_3),
190 setting_display_main_mouse_up_Gendial_list_cb,
191 ad, SWALLOW_Type_INVALID, NULL,
192 NULL, 0, Keystr_ScreenMode,
193 _(str_out_arr[i]), NULL);
194 if (ad->data_screen_mode) {
195 ad->data_screen_mode->userdata = ad;
197 SETTING_TRACE_ERROR("ad->data_screen_mode is NULL");
204 elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
205 ELM_GENLIST_ITEM_NONE, NULL, NULL);
206 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
208 #if !SUPPOR_SEPARATE_BRIGHTNESS
211 setting_create_Gendial_field_def(scroller, &(ad->itc_2text_2),
212 setting_display_main_mouse_up_Gendial_list_cb,
213 ad, SWALLOW_Type_INVALID, NULL,
214 NULL, 0, "IDS_COM_OPT_BRIGHTNESS",
215 get_brightness_mode_str(), NULL);
217 ad->data_br->userdata = ad;
219 SETTING_TRACE_ERROR("ad->data_br is NULL");
223 ret = vconf_get_bool(VCONFKEY_SETAPPL_BOOL_AUTO_ADJUST_SCREEN_TONE, &value);
224 ad->data_auto_adjust_scrn_tone =
225 setting_create_Gendial_field_def(scroller, &(ad->itc_1text_1icon),
226 setting_display_main_mouse_up_Gendial_list_cb,
227 ad, SWALLOW_Type_1TOGGLE, NULL,
228 NULL, value, KeyStr_AdjustScreenTone,
230 setting_display_main_auto_adjust_chk_btn_cb);
231 if (ad->data_auto_adjust_scrn_tone) {
232 ad->data_auto_adjust_scrn_tone->userdata = ad;
234 SETTING_TRACE_ERROR("ad->data_battery is NULL");
237 setting_create_Gendial_field_def(scroller, &itc_multiline_text, NULL,
238 ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
239 NULL, NULL, 0, KeyStr_AdjustScreenTone_Dsc, NULL, NULL);
241 elm_genlist_item_select_mode_set(elm_genlist_item_append(scroller, &(itc_seperator), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL),
242 ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
246 char* pa_backlight_time = get_pa_backlight_time_str();
248 setting_create_Gendial_exp_parent_field(scroller,
249 &(ad->itc_2text_3_parent),
251 SWALLOW_Type_INVALID,
252 KeyStr_BacklightTime,
255 #if SUPPORT_LCD_TIMEOUT_KEEPING
257 ad->data_back->int_slp_setting_binded =
258 INT_SLP_SETTING_LCD_TIMEOUT_NORMAL_BACKUP;
260 SETTING_TRACE_ERROR("ad->data_back is NULL");
264 ad->data_back->int_slp_setting_binded =
265 INT_SLP_SETTING_LCD_TIMEOUT_NORMAL;
267 SETTING_TRACE_ERROR("ad->data_back is NULL");
270 G_FREE(pa_backlight_time);
274 elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
275 ELM_GENLIST_ITEM_NONE, NULL, NULL);
276 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
278 /* setting_get_bool_slp_key(BOOL_SLP_SETTING_AUTOMATIC_BRIGHTNESS, &auto_value, &err); */
280 vconf_get_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, &value);
282 setting_create_Gendial_field_def(scroller, &(ad->itc_1text_1icon),
283 setting_display_main_mouse_up_Gendial_list_cb,
284 ad, SWALLOW_Type_1TOGGLE, NULL,
285 NULL, value, LAUNCH_BATTERY_STR,
287 setting_display_main_battery_chk_btn_cb);
288 if (ad->data_battery) {
289 ad->data_battery->userdata = ad;
291 SETTING_TRACE_ERROR("ad->data_battery is NULL");
294 setting_create_Gendial_field_def(scroller, &itc_multiline_text, NULL,
295 ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
296 NULL, NULL, 0, LAUNCH_BATTERY_DESC, NULL, NULL);
299 elm_genlist_item_select_mode_set(elm_genlist_item_append(scroller, &(itc_seperator), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL),
300 ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
304 elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
305 ELM_GENLIST_ITEM_NONE, NULL, NULL);
306 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
308 /* Launch Effect - Opening Effect */
309 int launch_effect_value = 0;
310 Ecore_X_Window root = 0;
311 Ecore_X_Atom effect_enable_atom = 0;
313 root = setting_display_main_effect_get_root(ad->win_main_layout);
314 effect_enable_atom = ecore_x_atom_get("_NET_CM_EFFECT_ENABLE");
317 ecore_x_window_prop_card32_get(root, effect_enable_atom,
319 &launch_effect_value, 1);
321 ad->data_launch_effect =
322 setting_create_Gendial_field_def(scroller, &(ad->itc_1text_1icon),
323 setting_display_main_mouse_up_Gendial_list_cb,
324 ad, SWALLOW_Type_1TOGGLE, NULL,
325 NULL, launch_effect_value,
326 LAUNCH_EFFECT_STR, NULL,
327 setting_display_main_launch_effect_chk_btn_cb);
328 if (ad->data_launch_effect) {
329 ad->data_launch_effect->userdata = ad;
331 SETTING_TRACE_ERROR("ad->data_launch_effect is NULL");
334 /* Launch Image on/off */
335 ret = SETTING_RETURN_FAIL;
336 #ifdef UNUSED_VCONFKEY
337 int launch_image_value;
340 ret = setting_get_bool_slp_key(BOOL_SLP_SETTING_LAUNCH_IMAGE,
341 &launch_image_value, &err);
342 ad->data_launch_image =
343 setting_create_Gendial_field_def(scroller, &(ad->itc_1text_1icon),
344 setting_display_main_mouse_up_Gendial_list_cb,
345 ad, SWALLOW_Type_1TOGGLE, NULL,
346 NULL, launch_image_value,
347 LAUNCH_IMAGE_STR, NULL,
348 setting_display_main_launch_image_chk_btn_cb);
349 if (ad->data_launch_image) {
350 ad->data_launch_image->userdata = ad;
352 SETTING_TRACE_ERROR("ad->data_launch_image is NULL");
355 #if !SUPPOR_SEPARATE_BRIGHTNESS
358 vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &battery_value);
359 ad->low_bat = battery_value;
361 if ( battery_value < VCONFKEY_SYSMAN_BAT_WARNING_LOW )
363 elm_slider_value_set(ad->data_br->eo_check, 1);
364 setting_disable_genlist_item(ad->data_br->item);
368 setting_enable_genlist_item(ad->data_br->item);
372 vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, setting_display_main_lowbat_cb, ad);
375 setting_view_display_main.is_create = 1;
376 return SETTING_RETURN_SUCCESS;
379 static int setting_display_main_destroy(void *cb)
383 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
385 SettingDisplayUG *ad = (SettingDisplayUG *) cb;
386 #if !SUPPOR_SEPARATE_BRIGHTNESS
387 // low battery handler - registration
388 vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, setting_display_main_lowbat_cb);
390 if (ad->ly_main != NULL) {
391 evas_object_del(ad->ly_main);
392 /* if(ad->back_dialData) FREE(ad->back_dialData); */
393 setting_view_display_main.is_create = 0;
396 return SETTING_RETURN_SUCCESS;
399 static int setting_display_main_update(void *cb)
403 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
405 SettingDisplayUG *ad = (SettingDisplayUG *) cb;
407 if (ad->ly_main != NULL) {
408 evas_object_show(ad->ly_main);
410 ad->data_br->sub_desc =
411 (char *)g_strdup(get_brightness_mode_str());
412 elm_object_item_data_set(ad->data_br->item, ad->data_br);
413 elm_genlist_item_update(ad->data_br->item);
417 if (ad->data_screen_mode) {
418 char *curmode = vconf_get_str(VCONFKEY_SETAPPL_SCREENMODE_SELNAME);
419 SETTING_TRACE(">>> CUR SCREEN MODE : %s ", curmode);
421 for (; i < sizeof(str_in_arr)/sizeof(str_in_arr[0]); i++) {
422 if (0 == safeStrCmp(str_in_arr[i], curmode)) {
423 ad->data_screen_mode->sub_desc = (char *)g_strdup(_(str_out_arr[i]));
427 elm_object_item_data_set(ad->data_screen_mode->item, ad->data_screen_mode);
428 elm_genlist_item_update(ad->data_screen_mode->item);
432 return SETTING_RETURN_SUCCESS;
435 static int setting_display_main_cleanup(void *cb)
438 return SETTING_RETURN_SUCCESS;
441 /* ***************************************************
445 ***************************************************/
448 setting_display_main_mouse_up_Gendial_list_cb(void *data, Evas_Object *obj,
452 setting_retm_if(data == NULL, "Data parameter is NULL");
454 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
455 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
456 elm_genlist_item_selected_set(item, 0);
457 Setting_GenGroupItem_Data *list_item =
458 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
460 SettingDisplayUG *ad = (SettingDisplayUG *) data;
462 SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
464 if (!safeStrCmp("IDS_COM_OPT_BRIGHTNESS", list_item->keyStr)) {
465 setting_view_change(&setting_view_display_main,
466 &setting_view_display_brightness, ad);
468 else if (!safeStrCmp(KeyStr_AdjustScreenTone, list_item->keyStr)) {
469 int old_status = elm_check_state_get(list_item->eo_check);
471 list_item->chk_status = !old_status;
472 elm_check_state_set(list_item->eo_check, list_item->chk_status);
473 vconf_set_bool(VCONFKEY_SETAPPL_BOOL_AUTO_ADJUST_SCREEN_TONE, list_item->chk_status);
476 else if (!safeStrCmp(LAUNCH_EFFECT_STR, list_item->keyStr)) {
477 int old_status = elm_check_state_get(list_item->eo_check);
479 list_item->chk_status = !old_status;
480 elm_check_state_set(list_item->eo_check, list_item->chk_status);
482 setting_display_main_effect_set_value(list_item);
485 #ifdef UNUSED_VCONFKEY
486 else if (!safeStrCmp(LAUNCH_IMAGE_STR, list_item->keyStr)) {
487 int old_status = elm_check_state_get(list_item->eo_check);
489 list_item->chk_status = !old_status;
490 elm_check_state_set(list_item->eo_check, list_item->chk_status);
493 setting_set_bool_slp_key(BOOL_SLP_SETTING_LAUNCH_IMAGE,
494 list_item->chk_status, &err);
497 else if (!safeStrCmp(LAUNCH_BATTERY_STR, list_item->keyStr)) {
498 int old_status = elm_check_state_get(list_item->eo_check);
500 list_item->chk_status = !old_status;
501 elm_check_state_set(list_item->eo_check, list_item->chk_status);
502 vconf_set_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, list_item->chk_status);
504 else if (!safeStrCmp(Keystr_ScreenMode, list_item->keyStr)) {
505 setting_view_change(&setting_view_display_main, &setting_view_display_screen_mode, ad);
510 setting_display_main_click_softkey_back_cb(void *data, Evas_Object *obj,
515 setting_retm_if(data == NULL,
516 "[Setting > Display] Data parameter is NULL");
518 SettingDisplayUG *ad = (SettingDisplayUG *) data;
520 /* Send destroy request */
521 ug_destroy_me(ad->ug);
526 static void setting_display_main_auto_adjust_chk_btn_cb(void *data, Evas_Object *obj, void *event_info)
530 retm_if(data == NULL, "Data parameter is NULL");
531 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
533 list_item->chk_status = elm_check_state_get(obj); /* for genlist update status */
534 vconf_set_bool(VCONFKEY_SETAPPL_BOOL_AUTO_ADJUST_SCREEN_TONE, list_item->chk_status);
539 setting_display_main_battery_chk_btn_cb(void *data, Evas_Object *obj,
544 retm_if(data == NULL, "Data parameter is NULL");
545 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
547 list_item->chk_status = elm_check_state_get(obj); /* for genlist update status */
548 vconf_set_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, list_item->chk_status);
553 setting_display_main_launch_effect_chk_btn_cb(void *data, Evas_Object *obj,
558 retm_if(data == NULL, "Data parameter is NULL");
559 Setting_GenGroupItem_Data *list_item =
560 (Setting_GenGroupItem_Data *) data;
562 list_item->chk_status = elm_check_state_get(obj); /* for genlist update status */
563 setting_display_main_effect_set_value(list_item);
568 /* setting_display_brightness_chk_btn_cb*/
569 #ifdef UNUSED_VCONFKEY
570 /* Fake image - launch effect*/
572 setting_display_main_launch_image_chk_btn_cb(void *data, Evas_Object *obj,
577 retm_if(data == NULL, "Data parameter is NULL");
578 Setting_GenGroupItem_Data *list_item =
579 (Setting_GenGroupItem_Data *) data;
581 list_item->chk_status = elm_check_state_get(obj); /* for genlist update status */
584 setting_set_bool_slp_key(BOOL_SLP_SETTING_LAUNCH_IMAGE,
585 list_item->chk_status, &err);
589 static Ecore_X_Window setting_display_main_effect_get_root(Evas_Object *
592 Ecore_X_Window xwin = 0;
593 Ecore_X_Window root = 0;
595 retv_if(!win_main, root);
597 xwin = elm_win_xwindow_get(win_main);
598 retv_if(!xwin, root);
600 root = ecore_x_window_root_get(xwin);
604 static void setting_display_main_effect_set_value(void *data)
606 Setting_GenGroupItem_Data *list_item =
607 (Setting_GenGroupItem_Data *) data;
608 SettingDisplayUG *ad = list_item->userdata;
609 Ecore_X_Window root = 0;
610 Ecore_X_Atom effect_enable_atom = 0;
611 unsigned int is_enable = 0; /* 0: effect disable, 1: effect enable */
613 root = setting_display_main_effect_get_root(ad->win_main_layout);
615 effect_enable_atom = ecore_x_atom_get("_NET_CM_EFFECT_ENABLE");
616 ret_if(!effect_enable_atom);
618 if (list_item->chk_status) {
622 ecore_x_window_prop_card32_set(root, effect_enable_atom, &is_enable, 1);