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);
182 char *curmode = vconf_get_str(VCONFKEY_SETAPPL_SCREENMODE_SELNAME);
183 SETTING_TRACE(">>> CUR SCREEN MODE : %s ", curmode);
186 for (; i < sizeof(str_in_arr)/sizeof(str_in_arr[0]); i++) {
187 if (0 == safeStrCmp(str_in_arr[i], curmode)) {
188 ad->data_screen_mode = setting_create_Gendial_field_def(scroller, &(itc_2text_3),
189 setting_display_main_mouse_up_Gendial_list_cb,
190 ad, SWALLOW_Type_INVALID, NULL,
191 NULL, 0, Keystr_ScreenMode,
192 _(str_out_arr[i]), NULL);
193 if (ad->data_screen_mode) {
194 ad->data_screen_mode->userdata = ad;
196 SETTING_TRACE_ERROR("ad->data_screen_mode is NULL");
203 elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
204 ELM_GENLIST_ITEM_NONE, NULL, NULL);
205 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
207 #if !SUPPOR_SEPARATE_BRIGHTNESS
210 setting_create_Gendial_field_def(scroller, &(ad->itc_2text_2),
211 setting_display_main_mouse_up_Gendial_list_cb,
212 ad, SWALLOW_Type_INVALID, NULL,
213 NULL, 0, "IDS_COM_OPT_BRIGHTNESS",
214 get_brightness_mode_str(), NULL);
216 ad->data_br->userdata = ad;
218 SETTING_TRACE_ERROR("ad->data_br is NULL");
222 ret = vconf_get_bool(VCONFKEY_SETAPPL_BOOL_AUTO_ADJUST_SCREEN_TONE, &value);
223 ad->data_auto_adjust_scrn_tone =
224 setting_create_Gendial_field_def(scroller, &(ad->itc_1text_1icon),
225 setting_display_main_mouse_up_Gendial_list_cb,
226 ad, SWALLOW_Type_1TOGGLE, NULL,
227 NULL, value, KeyStr_AdjustScreenTone,
229 setting_display_main_auto_adjust_chk_btn_cb);
230 if (ad->data_auto_adjust_scrn_tone) {
231 ad->data_auto_adjust_scrn_tone->userdata = ad;
233 SETTING_TRACE_ERROR("ad->data_battery is NULL");
236 setting_create_Gendial_field_def(scroller, &itc_multiline_text, NULL,
237 ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
238 NULL, NULL, 0, KeyStr_AdjustScreenTone_Dsc, NULL, NULL);
240 elm_genlist_item_select_mode_set(elm_genlist_item_append(scroller, &(itc_seperator), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL),
241 ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
245 char* pa_backlight_time = get_pa_backlight_time_str();
247 setting_create_Gendial_exp_parent_field(scroller,
248 &(ad->itc_2text_3_parent),
250 SWALLOW_Type_INVALID,
251 "IDS_ST_LIGHTSETTINGS_BODY_BACKLIGHTTIME",
253 #if SUPPORT_LCD_TIMEOUT_KEEPING
255 ad->data_back->int_slp_setting_binded =
256 INT_SLP_SETTING_LCD_TIMEOUT_NORMAL_BACKUP;
258 SETTING_TRACE_ERROR("ad->data_back is NULL");
262 ad->data_back->int_slp_setting_binded =
263 INT_SLP_SETTING_LCD_TIMEOUT_NORMAL;
265 SETTING_TRACE_ERROR("ad->data_back is NULL");
268 G_FREE(pa_backlight_time);
272 elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
273 ELM_GENLIST_ITEM_NONE, NULL, NULL);
274 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
276 /* setting_get_bool_slp_key(BOOL_SLP_SETTING_AUTOMATIC_BRIGHTNESS, &auto_value, &err); */
278 vconf_get_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, &value);
280 setting_create_Gendial_field_def(scroller, &(ad->itc_1text_1icon),
281 setting_display_main_mouse_up_Gendial_list_cb,
282 ad, SWALLOW_Type_1TOGGLE, NULL,
283 NULL, value, LAUNCH_BATTERY_STR,
285 setting_display_main_battery_chk_btn_cb);
286 if (ad->data_battery) {
287 ad->data_battery->userdata = ad;
289 SETTING_TRACE_ERROR("ad->data_battery is NULL");
292 setting_create_Gendial_field_def(scroller, &itc_multiline_text, NULL,
293 ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
294 NULL, NULL, 0, LAUNCH_BATTERY_DESC, NULL, NULL);
297 elm_genlist_item_select_mode_set(elm_genlist_item_append(scroller, &(itc_seperator), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL),
298 ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
302 elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
303 ELM_GENLIST_ITEM_NONE, NULL, NULL);
304 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
306 /* Launch Effect - Opening Effect */
307 int launch_effect_value = 0;
308 Ecore_X_Window root = 0;
309 Ecore_X_Atom effect_enable_atom = 0;
311 root = setting_display_main_effect_get_root(ad->win_main_layout);
312 effect_enable_atom = ecore_x_atom_get("_NET_CM_EFFECT_ENABLE");
315 ecore_x_window_prop_card32_get(root, effect_enable_atom,
317 &launch_effect_value, 1);
319 ad->data_launch_effect =
320 setting_create_Gendial_field_def(scroller, &(ad->itc_1text_1icon),
321 setting_display_main_mouse_up_Gendial_list_cb,
322 ad, SWALLOW_Type_1TOGGLE, NULL,
323 NULL, launch_effect_value,
324 LAUNCH_EFFECT_STR, NULL,
325 setting_display_main_launch_effect_chk_btn_cb);
326 if (ad->data_launch_effect) {
327 ad->data_launch_effect->userdata = ad;
329 SETTING_TRACE_ERROR("ad->data_launch_effect is NULL");
332 /* Launch Image on/off */
333 ret = SETTING_RETURN_FAIL;
334 #ifdef UNUSED_VCONFKEY
335 int launch_image_value;
338 ret = setting_get_bool_slp_key(BOOL_SLP_SETTING_LAUNCH_IMAGE,
339 &launch_image_value, &err);
340 ad->data_launch_image =
341 setting_create_Gendial_field_def(scroller, &(ad->itc_1text_1icon),
342 setting_display_main_mouse_up_Gendial_list_cb,
343 ad, SWALLOW_Type_1TOGGLE, NULL,
344 NULL, launch_image_value,
345 LAUNCH_IMAGE_STR, NULL,
346 setting_display_main_launch_image_chk_btn_cb);
347 if (ad->data_launch_image) {
348 ad->data_launch_image->userdata = ad;
350 SETTING_TRACE_ERROR("ad->data_launch_image is NULL");
353 #if !SUPPOR_SEPARATE_BRIGHTNESS
356 vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &battery_value);
357 ad->low_bat = battery_value;
359 if ( battery_value < VCONFKEY_SYSMAN_BAT_WARNING_LOW )
361 elm_slider_value_set(ad->data_br->eo_check, 1);
362 setting_disable_genlist_item(ad->data_br->item);
366 setting_enable_genlist_item(ad->data_br->item);
370 vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, setting_display_main_lowbat_cb, ad);
372 setting_view_display_main.is_create = 1;
373 return SETTING_RETURN_SUCCESS;
376 static int setting_display_main_destroy(void *cb)
380 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
382 SettingDisplayUG *ad = (SettingDisplayUG *) cb;
383 #if !SUPPOR_SEPARATE_BRIGHTNESS
384 // low battery handler - registration
385 vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, setting_display_main_lowbat_cb);
387 if (ad->ly_main != NULL) {
388 evas_object_del(ad->ly_main);
389 /* if(ad->back_dialData) FREE(ad->back_dialData); */
390 setting_view_display_main.is_create = 0;
393 return SETTING_RETURN_SUCCESS;
396 static int setting_display_main_update(void *cb)
400 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
402 SettingDisplayUG *ad = (SettingDisplayUG *) cb;
404 if (ad->ly_main != NULL) {
405 evas_object_show(ad->ly_main);
407 ad->data_br->sub_desc =
408 (char *)g_strdup(get_brightness_mode_str());
409 elm_object_item_data_set(ad->data_br->item, ad->data_br);
410 elm_genlist_item_update(ad->data_br->item);
414 if (ad->data_screen_mode) {
415 char *curmode = vconf_get_str(VCONFKEY_SETAPPL_SCREENMODE_SELNAME);
416 SETTING_TRACE(">>> CUR SCREEN MODE : %s ", curmode);
418 for (; i < sizeof(str_in_arr)/sizeof(str_in_arr[0]); i++) {
419 if (0 == safeStrCmp(str_in_arr[i], curmode)) {
420 ad->data_screen_mode->sub_desc = (char *)g_strdup(_(str_out_arr[i]));
424 elm_object_item_data_set(ad->data_screen_mode->item, ad->data_screen_mode);
425 elm_genlist_item_update(ad->data_screen_mode->item);
429 return SETTING_RETURN_SUCCESS;
432 static int setting_display_main_cleanup(void *cb)
435 return SETTING_RETURN_SUCCESS;
438 /* ***************************************************
442 ***************************************************/
445 setting_display_main_mouse_up_Gendial_list_cb(void *data, Evas_Object *obj,
449 setting_retm_if(data == NULL, "Data parameter is NULL");
451 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
452 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
453 elm_genlist_item_selected_set(item, 0);
454 Setting_GenGroupItem_Data *list_item =
455 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
457 SettingDisplayUG *ad = (SettingDisplayUG *) data;
459 SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
461 if (!safeStrCmp("IDS_COM_OPT_BRIGHTNESS", list_item->keyStr)) {
462 setting_view_change(&setting_view_display_main,
463 &setting_view_display_brightness, ad);
465 else if (!safeStrCmp(KeyStr_AdjustScreenTone, list_item->keyStr)) {
466 int old_status = elm_check_state_get(list_item->eo_check);
468 list_item->chk_status = !old_status;
469 elm_check_state_set(list_item->eo_check, list_item->chk_status);
470 vconf_set_bool(VCONFKEY_SETAPPL_BOOL_AUTO_ADJUST_SCREEN_TONE, list_item->chk_status);
473 else if (!safeStrCmp(LAUNCH_EFFECT_STR, list_item->keyStr)) {
474 int old_status = elm_check_state_get(list_item->eo_check);
476 list_item->chk_status = !old_status;
477 elm_check_state_set(list_item->eo_check, list_item->chk_status);
479 setting_display_main_effect_set_value(list_item);
482 #ifdef UNUSED_VCONFKEY
483 else if (!safeStrCmp(LAUNCH_IMAGE_STR, list_item->keyStr)) {
484 int old_status = elm_check_state_get(list_item->eo_check);
486 list_item->chk_status = !old_status;
487 elm_check_state_set(list_item->eo_check, list_item->chk_status);
490 setting_set_bool_slp_key(BOOL_SLP_SETTING_LAUNCH_IMAGE,
491 list_item->chk_status, &err);
494 else if (!safeStrCmp(LAUNCH_BATTERY_STR, list_item->keyStr)) {
495 int old_status = elm_check_state_get(list_item->eo_check);
497 list_item->chk_status = !old_status;
498 elm_check_state_set(list_item->eo_check, list_item->chk_status);
499 vconf_set_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, list_item->chk_status);
501 else if (!safeStrCmp(Keystr_ScreenMode, list_item->keyStr)) {
502 setting_view_change(&setting_view_display_main, &setting_view_display_screen_mode, ad);
507 setting_display_main_click_softkey_back_cb(void *data, Evas_Object *obj,
512 setting_retm_if(data == NULL,
513 "[Setting > Display] Data parameter is NULL");
515 SettingDisplayUG *ad = (SettingDisplayUG *) data;
517 /* Send destroy request */
518 ug_destroy_me(ad->ug);
523 static void setting_display_main_auto_adjust_chk_btn_cb(void *data, Evas_Object *obj, void *event_info)
527 retm_if(data == NULL, "Data parameter is NULL");
528 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
530 list_item->chk_status = elm_check_state_get(obj); /* for genlist update status */
531 vconf_set_bool(VCONFKEY_SETAPPL_BOOL_AUTO_ADJUST_SCREEN_TONE, list_item->chk_status);
536 setting_display_main_battery_chk_btn_cb(void *data, Evas_Object *obj,
541 retm_if(data == NULL, "Data parameter is NULL");
542 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
544 list_item->chk_status = elm_check_state_get(obj); /* for genlist update status */
545 vconf_set_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, list_item->chk_status);
550 setting_display_main_launch_effect_chk_btn_cb(void *data, Evas_Object *obj,
555 retm_if(data == NULL, "Data parameter is NULL");
556 Setting_GenGroupItem_Data *list_item =
557 (Setting_GenGroupItem_Data *) data;
559 list_item->chk_status = elm_check_state_get(obj); /* for genlist update status */
560 setting_display_main_effect_set_value(list_item);
565 /* setting_display_brightness_chk_btn_cb*/
566 #ifdef UNUSED_VCONFKEY
567 /* Fake image - launch effect*/
569 setting_display_main_launch_image_chk_btn_cb(void *data, Evas_Object *obj,
574 retm_if(data == NULL, "Data parameter is NULL");
575 Setting_GenGroupItem_Data *list_item =
576 (Setting_GenGroupItem_Data *) data;
578 list_item->chk_status = elm_check_state_get(obj); /* for genlist update status */
581 setting_set_bool_slp_key(BOOL_SLP_SETTING_LAUNCH_IMAGE,
582 list_item->chk_status, &err);
586 static Ecore_X_Window setting_display_main_effect_get_root(Evas_Object *
589 Ecore_X_Window xwin = 0;
590 Ecore_X_Window root = 0;
592 retv_if(!win_main, root);
594 xwin = elm_win_xwindow_get(win_main);
595 retv_if(!xwin, root);
597 root = ecore_x_window_root_get(xwin);
601 static void setting_display_main_effect_set_value(void *data)
603 Setting_GenGroupItem_Data *list_item =
604 (Setting_GenGroupItem_Data *) data;
605 SettingDisplayUG *ad = list_item->userdata;
606 Ecore_X_Window root = 0;
607 Ecore_X_Atom effect_enable_atom = 0;
608 unsigned int is_enable = 0; /* 0: effect disable, 1: effect enable */
610 root = setting_display_main_effect_get_root(ad->win_main_layout);
612 effect_enable_atom = ecore_x_atom_get("_NET_CM_EFFECT_ENABLE");
613 ret_if(!effect_enable_atom);
615 if (list_item->chk_status) {
619 ecore_x_window_prop_card32_set(root, effect_enable_atom, &is_enable, 1);