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};
40 /* ***************************************************
44 ***************************************************/
46 __setting_display_main_exp_cb(void *data, Evas_Object *obj, void *event_info)
48 ret_if(NULL == data || NULL == event_info);
50 SettingDisplayUG *ad = (SettingDisplayUG *) data;
51 Elm_Object_Item *parentItem = event_info; /* parent item */
52 Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem); /* parent data */
53 Evas_Object *scroller = elm_object_item_widget_get(parentItem);
56 if (data_parentItem == ad->data_back) {
57 rgd = elm_radio_add(scroller);
58 elm_radio_value_set(rgd, -1);
62 setting_create_Gendial_exp_sub_field(scroller,
63 &(ad->itc_1icon_1text_sub),
64 NULL, NULL, parentItem,
65 SWALLOW_Type_1RADIO, rgd,
67 "IDS_ST_BODY_ALWAYS_ON", NULL);
69 setting_create_Gendial_exp_sub_field(scroller,
70 &(ad->itc_1icon_1text_sub),
71 NULL, NULL, parentItem,
72 SWALLOW_Type_1RADIO, rgd,
74 SETTING_DISPLAY_TIME_15_SEC_STR, NULL);
76 setting_create_Gendial_exp_sub_field(scroller,
77 &(ad->itc_1icon_1text_sub),
78 NULL, NULL, parentItem,
79 SWALLOW_Type_1RADIO, rgd,
81 SETTING_DISPLAY_TIME_30_SEC_STR, NULL);
83 setting_create_Gendial_exp_sub_field(scroller,
84 &(ad->itc_1icon_1text_sub),
85 NULL, NULL, parentItem,
86 SWALLOW_Type_1RADIO, rgd,
88 SETTING_DISPLAY_TIME_1_MIN_STR, NULL);
90 setting_create_Gendial_exp_sub_field(scroller,
91 &(ad->itc_1icon_1text_sub),
92 NULL, NULL, parentItem,
93 SWALLOW_Type_1RADIO, rgd,
95 SETTING_DISPLAY_TIME_2_MIN_STR, NULL);
97 setting_create_Gendial_exp_sub_field(scroller,
98 &(ad->itc_1icon_1text_sub),
99 NULL, NULL, parentItem,
100 SWALLOW_Type_1RADIO, rgd,
102 SETTING_DISPLAY_TIME_5_MIN_STR, NULL);
104 setting_create_Gendial_exp_sub_field(scroller,
105 &(ad->itc_1icon_1text_sub),
106 NULL, NULL, parentItem,
107 SWALLOW_Type_1RADIO, rgd,
109 SETTING_DISPLAY_TIME_10_MIN_STR, NULL);
111 setting_update_chk_status(rgd,
112 data_parentItem->int_slp_setting_binded);
116 #if !SUPPOR_SEPARATE_BRIGHTNESS
118 static void setting_display_main_lowbat_cb(keynode_t *key, void* data)
120 ret_if(data == NULL);
121 SettingDisplayUG *ad = (SettingDisplayUG *) data;
123 ret_if(ad->data_br == NULL);
125 char* vconf_key = vconf_keynode_get_name(key);
126 SETTING_TRACE("the value of [ %s ] just changed", vconf_key);
127 // VCONFKEY_SYSMAN_BATTERY_STATUS_LOW
130 vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &battery_value);
131 ad->low_bat = battery_value;
133 if (battery_value < VCONFKEY_SYSMAN_BAT_WARNING_LOW)
135 elm_slider_value_set(ad->data_br->eo_check, 1);
137 setting_disable_genlist_item(ad->data_br->item);
139 setting_enable_genlist_item(ad->data_br->item);
145 static int setting_display_main_create(void *cb)
149 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
151 SettingDisplayUG *ad = (SettingDisplayUG *) cb;
153 Evas_Object *scroller = NULL;
155 /* add basic layout */
156 char setBtnStr[MAX_DISPLAY_NAME_LEN_ON_UI];
157 snprintf(setBtnStr, sizeof(setBtnStr), "%s",
158 (char *)dgettext("sys_string", "IDS_COM_BODY_BACK"));
161 setting_create_layout_navi_bar_genlist(ad->win_main_layout,
163 _(KeyStr_Display), setBtnStr,
165 setting_display_main_click_softkey_back_cb,
168 setting_enable_expandable_genlist(scroller, ad,
169 __setting_display_main_exp_cb, NULL);
171 Elm_Object_Item *item = NULL;;
174 elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
175 ELM_GENLIST_ITEM_NONE, NULL, NULL);
176 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
178 char *curmode = vconf_get_str(VCONFKEY_SETAPPL_SCREENMODE_SELNAME);
179 SETTING_TRACE(">>> CUR SCREEN MODE : %s ", curmode);
182 for (; i < sizeof(str_in_arr)/sizeof(str_in_arr[0]); i++) {
183 if (0 == safeStrCmp(str_in_arr[i], curmode)) {
184 ad->data_screen_mode = setting_create_Gendial_field_def(scroller, &(itc_2text_3),
185 setting_display_main_mouse_up_Gendial_list_cb,
186 ad, SWALLOW_Type_INVALID, NULL,
187 NULL, 0, Keystr_ScreenMode,
188 _(str_out_arr[i]), NULL);
189 if (ad->data_screen_mode) {
190 ad->data_screen_mode->userdata = ad;
192 SETTING_TRACE_ERROR("ad->data_screen_mode is NULL");
199 elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
200 ELM_GENLIST_ITEM_NONE, NULL, NULL);
201 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
203 #if !SUPPOR_SEPARATE_BRIGHTNESS
206 setting_create_Gendial_field_def(scroller, &(ad->itc_2text_2),
207 setting_display_main_mouse_up_Gendial_list_cb,
208 ad, SWALLOW_Type_INVALID, NULL,
209 NULL, 0, "IDS_COM_OPT_BRIGHTNESS",
210 get_brightness_mode_str(), NULL);
212 ad->data_br->userdata = ad;
214 SETTING_TRACE_ERROR("ad->data_br is NULL");
219 int ret = vconf_get_bool(VCONFKEY_SETAPPL_BOOL_AUTO_ADJUST_SCREEN_TONE, &value);
220 ad->data_auto_adjust_scrn_tone =
221 setting_create_Gendial_field_def(scroller, &(ad->itc_1text_1icon),
222 setting_display_main_mouse_up_Gendial_list_cb,
223 ad, SWALLOW_Type_1TOGGLE, NULL,
224 NULL, value, KeyStr_AdjustScreenTone,
226 setting_display_main_auto_adjust_chk_btn_cb);
227 if (ad->data_auto_adjust_scrn_tone) {
228 ad->data_auto_adjust_scrn_tone->userdata = ad;
230 SETTING_TRACE_ERROR("ad->data_battery is NULL");
233 setting_create_Gendial_field_def(scroller, &itc_multiline_text, NULL,
234 ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
235 NULL, NULL, 0, KeyStr_AdjustScreenTone_Dsc, NULL, NULL);
238 char* pa_backlight_time = get_pa_backlight_time_str();
240 setting_create_Gendial_exp_parent_field(scroller,
241 &(ad->itc_2text_3_parent),
243 SWALLOW_Type_INVALID,
244 "IDS_ST_LIGHTSETTINGS_BODY_BACKLIGHTTIME",
246 #if SUPPORT_LCD_TIMEOUT_KEEPING
248 ad->data_back->int_slp_setting_binded =
249 INT_SLP_SETTING_LCD_TIMEOUT_NORMAL_BACKUP;
251 SETTING_TRACE_ERROR("ad->data_back is NULL");
255 ad->data_back->int_slp_setting_binded =
256 INT_SLP_SETTING_LCD_TIMEOUT_NORMAL;
258 SETTING_TRACE_ERROR("ad->data_back is NULL");
261 G_FREE(pa_backlight_time);
265 elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
266 ELM_GENLIST_ITEM_NONE, NULL, NULL);
267 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
271 setting_create_Gendial_field_def(scroller, &(itc_1text),
272 setting_display_main_mouse_up_Gendial_list_cb,
273 ad, SWALLOW_Type_INVALID, NULL,
274 NULL, 0, Keystr_SmartScreen,
278 elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
279 ELM_GENLIST_ITEM_NONE, NULL, NULL);
280 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
282 /* setting_get_bool_slp_key(BOOL_SLP_SETTING_AUTOMATIC_BRIGHTNESS, &auto_value, &err); */
284 vconf_get_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, &value);
286 setting_create_Gendial_field_def(scroller, &(ad->itc_1text_1icon),
287 setting_display_main_mouse_up_Gendial_list_cb,
288 ad, SWALLOW_Type_1TOGGLE, NULL,
289 NULL, value, LAUNCH_BATTERY_STR,
291 setting_display_main_battery_chk_btn_cb);
292 if (ad->data_battery) {
293 ad->data_battery->userdata = ad;
295 SETTING_TRACE_ERROR("ad->data_battery is NULL");
298 setting_create_Gendial_field_def(scroller, &itc_multiline_text, NULL,
299 ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
300 NULL, NULL, 0, LAUNCH_BATTERY_DESC, NULL, NULL);
305 elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
306 ELM_GENLIST_ITEM_NONE, NULL, NULL);
307 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
309 /* Launch Effect - Opening Effect */
310 int launch_effect_value = 0;
311 Ecore_X_Window root = 0;
312 Ecore_X_Atom effect_enable_atom = 0;
314 root = setting_display_main_effect_get_root(ad->win_main_layout);
315 effect_enable_atom = ecore_x_atom_get("_NET_CM_EFFECT_ENABLE");
318 ecore_x_window_prop_card32_get(root, effect_enable_atom,
320 &launch_effect_value, 1);
322 ad->data_launch_effect =
323 setting_create_Gendial_field_def(scroller, &(ad->itc_1text_1icon),
324 setting_display_main_mouse_up_Gendial_list_cb,
325 ad, SWALLOW_Type_1TOGGLE, NULL,
326 NULL, launch_effect_value,
327 LAUNCH_EFFECT_STR, NULL,
328 setting_display_main_launch_effect_chk_btn_cb);
329 if (ad->data_launch_effect) {
330 ad->data_launch_effect->userdata = ad;
332 SETTING_TRACE_ERROR("ad->data_launch_effect is NULL");
335 /* Launch Image on/off */
336 ret = SETTING_RETURN_FAIL;
337 #ifdef UNUSED_VCONFKEY
338 int launch_image_value;
341 ret = setting_get_bool_slp_key(BOOL_SLP_SETTING_LAUNCH_IMAGE,
342 &launch_image_value, &err);
343 ad->data_launch_image =
344 setting_create_Gendial_field_def(scroller, &(ad->itc_1text_1icon),
345 setting_display_main_mouse_up_Gendial_list_cb,
346 ad, SWALLOW_Type_1TOGGLE, NULL,
347 NULL, launch_image_value,
348 LAUNCH_IMAGE_STR, NULL,
349 setting_display_main_launch_image_chk_btn_cb);
350 if (ad->data_launch_image) {
351 ad->data_launch_image->userdata = ad;
353 SETTING_TRACE_ERROR("ad->data_launch_image is NULL");
356 #if !SUPPOR_SEPARATE_BRIGHTNESS
359 vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &battery_value);
360 ad->low_bat = battery_value;
362 if ( battery_value < VCONFKEY_SYSMAN_BAT_WARNING_LOW )
364 elm_slider_value_set(ad->data_br->eo_check, 1);
365 setting_disable_genlist_item(ad->data_br->item);
369 setting_enable_genlist_item(ad->data_br->item);
373 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);
507 else if (!safeStrCmp(Keystr_SmartScreen, list_item->keyStr)) {
508 setting_view_change(&setting_view_display_main, &setting_view_display_smart_screen, ad);
513 setting_display_main_click_softkey_back_cb(void *data, Evas_Object *obj,
518 setting_retm_if(data == NULL,
519 "[Setting > Display] Data parameter is NULL");
521 SettingDisplayUG *ad = (SettingDisplayUG *) data;
523 /* Send destroy request */
524 ug_destroy_me(ad->ug);
529 static void setting_display_main_auto_adjust_chk_btn_cb(void *data, Evas_Object *obj, void *event_info)
533 retm_if(data == NULL, "Data parameter is NULL");
534 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
536 list_item->chk_status = elm_check_state_get(obj); /* for genlist update status */
537 vconf_set_bool(VCONFKEY_SETAPPL_BOOL_AUTO_ADJUST_SCREEN_TONE, list_item->chk_status);
542 setting_display_main_battery_chk_btn_cb(void *data, Evas_Object *obj,
547 retm_if(data == NULL, "Data parameter is NULL");
548 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
550 list_item->chk_status = elm_check_state_get(obj); /* for genlist update status */
551 vconf_set_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, list_item->chk_status);
556 setting_display_main_launch_effect_chk_btn_cb(void *data, Evas_Object *obj,
561 retm_if(data == NULL, "Data parameter is NULL");
562 Setting_GenGroupItem_Data *list_item =
563 (Setting_GenGroupItem_Data *) data;
565 list_item->chk_status = elm_check_state_get(obj); /* for genlist update status */
566 setting_display_main_effect_set_value(list_item);
571 /* setting_display_brightness_chk_btn_cb*/
572 #ifdef UNUSED_VCONFKEY
573 /* Fake image - launch effect*/
575 setting_display_main_launch_image_chk_btn_cb(void *data, Evas_Object *obj,
580 retm_if(data == NULL, "Data parameter is NULL");
581 Setting_GenGroupItem_Data *list_item =
582 (Setting_GenGroupItem_Data *) data;
584 list_item->chk_status = elm_check_state_get(obj); /* for genlist update status */
587 setting_set_bool_slp_key(BOOL_SLP_SETTING_LAUNCH_IMAGE,
588 list_item->chk_status, &err);
592 static Ecore_X_Window setting_display_main_effect_get_root(Evas_Object *
595 Ecore_X_Window xwin = 0;
596 Ecore_X_Window root = 0;
598 retv_if(!win_main, root);
600 xwin = elm_win_xwindow_get(win_main);
601 retv_if(!xwin, root);
603 root = ecore_x_window_root_get(xwin);
607 static void setting_display_main_effect_set_value(void *data)
609 Setting_GenGroupItem_Data *list_item =
610 (Setting_GenGroupItem_Data *) data;
611 SettingDisplayUG *ad = list_item->userdata;
612 Ecore_X_Window root = 0;
613 Ecore_X_Atom effect_enable_atom = 0;
614 unsigned int is_enable = 0; /* 0: effect disable, 1: effect enable */
616 root = setting_display_main_effect_get_root(ad->win_main_layout);
618 effect_enable_atom = ecore_x_atom_get("_NET_CM_EFFECT_ENABLE");
619 ret_if(!effect_enable_atom);
621 if (list_item->chk_status) {
625 ecore_x_window_prop_card32_set(root, effect_enable_atom, &is_enable, 1);