3 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 * Licensed under the Flora License, Version 1.1 (the License);
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://floralicense.org/license/
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an AS IS BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
17 #include <setting-display-main.h>
21 static int setting_display_main_create(void *cb);
22 static int setting_display_main_destroy(void *cb);
23 static int setting_display_main_update(void *cb);
24 static int setting_display_main_cleanup(void *cb);
26 setting_view setting_view_display_main = {
27 .create = setting_display_main_create,
28 .destroy = setting_display_main_destroy,
29 .update = setting_display_main_update,
30 .cleanup = setting_display_main_cleanup,
33 static char* str_in_arr[] = {"Dynamic", "Standard", "Natural", "Movie"};
34 static char* str_out_arr[] = {Keystr_Dynamic, Keystr_Standard, Keystr_Natural, Keystr_Movie};
37 /* ***************************************************
41 ***************************************************/
43 __setting_display_main_exp_cb(void *data, Evas_Object *obj, void *event_info)
45 ret_if(NULL == data || NULL == event_info);
47 SettingDisplayUG *ad = (SettingDisplayUG *) data;
48 Elm_Object_Item *parentItem = event_info; /* parent item */
49 Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem); /* parent data */
50 Evas_Object *scroller = elm_object_item_widget_get(parentItem);
53 if (data_parentItem == ad->data_back) {
54 rgd = elm_radio_add(scroller);
55 elm_radio_value_set(rgd, -1);
57 setting_create_Gendial_exp_sub_field(scroller,
58 &(ad->itc_1icon_1text_sub),
59 NULL, NULL, parentItem,
60 SWALLOW_Type_1RADIO, rgd,
62 SETTING_DISPLAY_TIME_15_SEC_STR, NULL);
64 setting_create_Gendial_exp_sub_field(scroller,
65 &(ad->itc_1icon_1text_sub),
66 NULL, NULL, parentItem,
67 SWALLOW_Type_1RADIO, rgd,
69 SETTING_DISPLAY_TIME_30_SEC_STR, NULL);
71 ad->data_backlight_1min = setting_create_Gendial_exp_sub_field(scroller,
72 &(ad->itc_1icon_1text_sub),
73 NULL, NULL, parentItem,
74 SWALLOW_Type_1RADIO, rgd,
76 SETTING_DISPLAY_TIME_1_MIN_STR, NULL);
78 ad->data_backlight_2min = setting_create_Gendial_exp_sub_field(scroller,
79 &(ad->itc_1icon_1text_sub),
80 NULL, NULL, parentItem,
81 SWALLOW_Type_1RADIO, rgd,
83 SETTING_DISPLAY_TIME_2_MIN_STR, NULL);
85 ad->data_backlight_5min = setting_create_Gendial_exp_sub_field(scroller,
86 &(ad->itc_1icon_1text_sub),
87 NULL, NULL, parentItem,
88 SWALLOW_Type_1RADIO, rgd,
90 SETTING_DISPLAY_TIME_5_MIN_STR, NULL);
92 ad->data_backlight_10min = setting_create_Gendial_exp_sub_field(scroller,
93 &(ad->itc_1icon_1text_sub),
94 NULL, NULL, parentItem,
95 SWALLOW_Type_1RADIO, rgd,
97 SETTING_DISPLAY_TIME_10_MIN_STR, NULL);
99 setting_update_chk_status(rgd,
100 data_parentItem->int_slp_setting_binded);
104 #if !SUPPOR_SEPARATE_BRIGHTNESS
106 static void setting_display_main_lowbat_cb(keynode_t *key, void* data)
108 ret_if(data == NULL);
109 SettingDisplayUG *ad = (SettingDisplayUG *) data;
111 ret_if(ad->data_br == NULL);
113 char* vconf_key = vconf_keynode_get_name(key);
114 SETTING_TRACE("the value of [ %s ] just changed", vconf_key);
115 // VCONFKEY_SYSMAN_BATTERY_STATUS_LOW
118 vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &battery_value);
119 ad->low_bat = battery_value;
121 if (battery_value < VCONFKEY_SYSMAN_BAT_WARNING_LOW)
123 elm_slider_value_set(ad->data_br->eo_check, 1);
125 setting_disable_genlist_item(ad->data_br->item);
127 setting_enable_genlist_item(ad->data_br->item);
133 static int setting_display_main_create(void *cb)
137 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
139 SettingDisplayUG *ad = (SettingDisplayUG *) cb;
141 Evas_Object *scroller = NULL;
143 /* add basic layout */
144 char setBtnStr[MAX_DISPLAY_NAME_LEN_ON_UI];
145 snprintf(setBtnStr, sizeof(setBtnStr), "%s",
146 (char *)dgettext("sys_string", "IDS_COM_BODY_BACK"));
149 setting_create_layout_navi_bar_genlist(ad->win_main_layout,
151 _(KeyStr_Display), setBtnStr,
153 setting_display_main_click_softkey_back_cb,
156 setting_enable_expandable_genlist(scroller, ad,
157 __setting_display_main_exp_cb, NULL);
159 Elm_Object_Item *item = NULL;;
162 elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
163 ELM_GENLIST_ITEM_NONE, NULL, NULL);
164 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
170 char *curmode = vconf_get_str(VCONFKEY_SETAPPL_SCREENMODE_SELNAME);
171 SETTING_TRACE(">>> CUR SCREEN MODE : %s ", curmode);
174 for (; i < sizeof(str_in_arr)/sizeof(str_in_arr[0]); i++) {
175 if (0 == safeStrCmp(str_in_arr[i], curmode)) {
176 ad->data_screen_mode = setting_create_Gendial_field_def(scroller, &(itc_2text_3),
177 setting_display_main_mouse_up_Gendial_list_cb,
178 ad, SWALLOW_Type_INVALID, NULL,
179 NULL, 0, Keystr_ScreenMode,
180 _(str_out_arr[i]), NULL);
181 if (ad->data_screen_mode) {
182 ad->data_screen_mode->userdata = ad;
184 SETTING_TRACE_ERROR("ad->data_screen_mode is NULL");
191 elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
192 ELM_GENLIST_ITEM_NONE, NULL, NULL);
193 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
195 #if !SUPPOR_SEPARATE_BRIGHTNESS
198 setting_create_Gendial_field_def(scroller, &(ad->itc_2text_2),
199 setting_display_main_mouse_up_Gendial_list_cb,
200 ad, SWALLOW_Type_INVALID, NULL,
201 NULL, 0, "IDS_COM_OPT_BRIGHTNESS",
202 get_brightness_mode_str(), NULL);
204 ad->data_br->userdata = ad;
206 SETTING_TRACE_ERROR("ad->data_br is NULL");
210 ret = vconf_get_bool(VCONFKEY_SETAPPL_BOOL_AUTO_ADJUST_SCREEN_TONE, &value);
211 ad->data_auto_adjust_scrn_tone =
212 setting_create_Gendial_field_def(scroller, &(ad->itc_1text_1icon),
213 setting_display_main_mouse_up_Gendial_list_cb,
214 ad, SWALLOW_Type_1TOGGLE, NULL,
215 NULL, value, KeyStr_AdjustScreenTone,
217 setting_display_main_auto_adjust_chk_btn_cb);
218 if (ad->data_auto_adjust_scrn_tone) {
219 ad->data_auto_adjust_scrn_tone->userdata = ad;
221 SETTING_TRACE_ERROR("ad->data_battery is NULL");
224 setting_create_Gendial_field_def(scroller, &itc_multiline_text, NULL,
225 ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
226 NULL, NULL, 0, KeyStr_AdjustScreenTone_Dsc, NULL, NULL);
228 elm_genlist_item_select_mode_set(elm_genlist_item_append(scroller, &(itc_seperator), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL),
229 ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
233 char* pa_backlight_time = get_pa_backlight_time_str();
235 setting_create_Gendial_exp_parent_field(scroller,
236 &(ad->itc_2text_3_parent),
238 SWALLOW_Type_INVALID,
239 KeyStr_BacklightTime,
242 #if SUPPORT_LCD_TIMEOUT_KEEPING
244 ad->data_back->int_slp_setting_binded =
245 INT_SLP_SETTING_LCD_TIMEOUT_NORMAL_BACKUP;
247 SETTING_TRACE_ERROR("ad->data_back is NULL");
251 ad->data_back->int_slp_setting_binded =
252 INT_SLP_SETTING_LCD_TIMEOUT_NORMAL;
254 SETTING_TRACE_ERROR("ad->data_back is NULL");
257 G_FREE(pa_backlight_time);
261 elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
262 ELM_GENLIST_ITEM_NONE, NULL, NULL);
263 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
265 /* setting_get_bool_slp_key(BOOL_SLP_SETTING_AUTOMATIC_BRIGHTNESS, &auto_value, &err); */
267 vconf_get_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, &value);
269 setting_create_Gendial_field_def(scroller, &(ad->itc_1text_1icon),
270 setting_display_main_mouse_up_Gendial_list_cb,
271 ad, SWALLOW_Type_1TOGGLE, NULL,
272 NULL, value, LAUNCH_BATTERY_STR,
274 setting_display_main_battery_chk_btn_cb);
275 if (ad->data_battery) {
276 ad->data_battery->userdata = ad;
278 SETTING_TRACE_ERROR("ad->data_battery is NULL");
281 setting_create_Gendial_field_def(scroller, &itc_multiline_text, NULL,
282 ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
283 NULL, NULL, 0, LAUNCH_BATTERY_DESC, NULL, NULL);
286 elm_genlist_item_select_mode_set(elm_genlist_item_append(scroller, &(itc_seperator), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL),
287 ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
291 elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL,
292 ELM_GENLIST_ITEM_NONE, NULL, NULL);
293 elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
295 /* Launch Effect - Opening Effect */
296 int launch_effect_value = 0;
297 Ecore_X_Window root = 0;
298 Ecore_X_Atom effect_enable_atom = 0;
300 root = setting_display_main_effect_get_root(ad->win_main_layout);
301 effect_enable_atom = ecore_x_atom_get("_NET_CM_EFFECT_ENABLE");
304 ecore_x_window_prop_card32_get(root, effect_enable_atom,
306 &launch_effect_value, 1);
308 ad->data_launch_effect =
309 setting_create_Gendial_field_def(scroller, &(ad->itc_1text_1icon),
310 setting_display_main_mouse_up_Gendial_list_cb,
311 ad, SWALLOW_Type_1TOGGLE, NULL,
312 NULL, launch_effect_value,
313 LAUNCH_EFFECT_STR, NULL,
314 setting_display_main_launch_effect_chk_btn_cb);
315 if (ad->data_launch_effect) {
316 ad->data_launch_effect->userdata = ad;
318 SETTING_TRACE_ERROR("ad->data_launch_effect is NULL");
321 /* Launch Image on/off */
322 ret = SETTING_RETURN_FAIL;
323 #ifdef UNUSED_VCONFKEY
324 int launch_image_value;
327 ret = setting_get_bool_slp_key(BOOL_SLP_SETTING_LAUNCH_IMAGE,
328 &launch_image_value, &err);
329 ad->data_launch_image =
330 setting_create_Gendial_field_def(scroller, &(ad->itc_1text_1icon),
331 setting_display_main_mouse_up_Gendial_list_cb,
332 ad, SWALLOW_Type_1TOGGLE, NULL,
333 NULL, launch_image_value,
334 LAUNCH_IMAGE_STR, NULL,
335 setting_display_main_launch_image_chk_btn_cb);
336 if (ad->data_launch_image) {
337 ad->data_launch_image->userdata = ad;
339 SETTING_TRACE_ERROR("ad->data_launch_image is NULL");
342 #if !SUPPOR_SEPARATE_BRIGHTNESS
345 vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &battery_value);
346 ad->low_bat = battery_value;
348 if ( battery_value < VCONFKEY_SYSMAN_BAT_WARNING_LOW )
350 elm_slider_value_set(ad->data_br->eo_check, 1);
351 setting_disable_genlist_item(ad->data_br->item);
355 setting_enable_genlist_item(ad->data_br->item);
359 vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, setting_display_main_lowbat_cb, ad);
362 setting_view_display_main.is_create = 1;
363 return SETTING_RETURN_SUCCESS;
366 static int setting_display_main_destroy(void *cb)
370 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
372 SettingDisplayUG *ad = (SettingDisplayUG *) cb;
373 #if !SUPPOR_SEPARATE_BRIGHTNESS
374 // low battery handler - registration
375 vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, setting_display_main_lowbat_cb);
377 if (ad->ly_main != NULL) {
378 evas_object_del(ad->ly_main);
379 /* if(ad->back_dialData) FREE(ad->back_dialData); */
380 setting_view_display_main.is_create = 0;
383 return SETTING_RETURN_SUCCESS;
386 static int setting_display_main_update(void *cb)
390 retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
392 SettingDisplayUG *ad = (SettingDisplayUG *) cb;
394 if (ad->ly_main != NULL) {
395 evas_object_show(ad->ly_main);
397 ad->data_br->sub_desc =
398 (char *)g_strdup(get_brightness_mode_str());
399 elm_object_item_data_set(ad->data_br->item, ad->data_br);
400 elm_genlist_item_update(ad->data_br->item);
404 if (ad->data_screen_mode) {
405 char *curmode = vconf_get_str(VCONFKEY_SETAPPL_SCREENMODE_SELNAME);
406 SETTING_TRACE(">>> CUR SCREEN MODE : %s ", curmode);
408 for (; i < sizeof(str_in_arr)/sizeof(str_in_arr[0]); i++) {
409 if (0 == safeStrCmp(str_in_arr[i], curmode)) {
410 ad->data_screen_mode->sub_desc = (char *)g_strdup(_(str_out_arr[i]));
414 elm_object_item_data_set(ad->data_screen_mode->item, ad->data_screen_mode);
415 elm_genlist_item_update(ad->data_screen_mode->item);
419 return SETTING_RETURN_SUCCESS;
422 static int setting_display_main_cleanup(void *cb)
425 return SETTING_RETURN_SUCCESS;
428 /* ***************************************************
432 ***************************************************/
435 setting_display_main_mouse_up_Gendial_list_cb(void *data, Evas_Object *obj,
439 setting_retm_if(data == NULL, "Data parameter is NULL");
441 retm_if(event_info == NULL, "Invalid argument: event info is NULL");
442 Elm_Object_Item *item = (Elm_Object_Item *) event_info;
443 elm_genlist_item_selected_set(item, 0);
444 Setting_GenGroupItem_Data *list_item =
445 (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
447 SettingDisplayUG *ad = (SettingDisplayUG *) data;
449 SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
451 if (!safeStrCmp("IDS_COM_OPT_BRIGHTNESS", list_item->keyStr)) {
452 setting_view_change(&setting_view_display_main,
453 &setting_view_display_brightness, ad);
455 else if (!safeStrCmp(KeyStr_AdjustScreenTone, list_item->keyStr)) {
456 int old_status = elm_check_state_get(list_item->eo_check);
458 list_item->chk_status = !old_status;
459 elm_check_state_set(list_item->eo_check, list_item->chk_status);
460 vconf_set_bool(VCONFKEY_SETAPPL_BOOL_AUTO_ADJUST_SCREEN_TONE, list_item->chk_status);
463 else if (!safeStrCmp(LAUNCH_EFFECT_STR, list_item->keyStr)) {
464 int old_status = elm_check_state_get(list_item->eo_check);
466 list_item->chk_status = !old_status;
467 elm_check_state_set(list_item->eo_check, list_item->chk_status);
469 setting_display_main_effect_set_value(list_item);
472 #ifdef UNUSED_VCONFKEY
473 else if (!safeStrCmp(LAUNCH_IMAGE_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);
480 setting_set_bool_slp_key(BOOL_SLP_SETTING_LAUNCH_IMAGE,
481 list_item->chk_status, &err);
484 else if (!safeStrCmp(LAUNCH_BATTERY_STR, list_item->keyStr)) {
485 int old_status = elm_check_state_get(list_item->eo_check);
487 list_item->chk_status = !old_status;
488 elm_check_state_set(list_item->eo_check, list_item->chk_status);
489 vconf_set_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, list_item->chk_status);
491 else if (!safeStrCmp(Keystr_ScreenMode, list_item->keyStr)) {
492 setting_view_change(&setting_view_display_main, &setting_view_display_screen_mode, ad);
497 setting_display_main_click_softkey_back_cb(void *data, Evas_Object *obj,
502 setting_retm_if(data == NULL,
503 "[Setting > Display] Data parameter is NULL");
505 SettingDisplayUG *ad = (SettingDisplayUG *) data;
507 /* Send destroy request */
508 ug_destroy_me(ad->ug);
513 static void setting_display_main_auto_adjust_chk_btn_cb(void *data, Evas_Object *obj, void *event_info)
517 retm_if(data == NULL, "Data parameter is NULL");
518 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
520 list_item->chk_status = elm_check_state_get(obj); /* for genlist update status */
521 vconf_set_bool(VCONFKEY_SETAPPL_BOOL_AUTO_ADJUST_SCREEN_TONE, list_item->chk_status);
526 setting_display_main_battery_chk_btn_cb(void *data, Evas_Object *obj,
531 retm_if(data == NULL, "Data parameter is NULL");
532 Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
534 list_item->chk_status = elm_check_state_get(obj); /* for genlist update status */
535 vconf_set_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, list_item->chk_status);
540 setting_display_main_launch_effect_chk_btn_cb(void *data, Evas_Object *obj,
545 retm_if(data == NULL, "Data parameter is NULL");
546 Setting_GenGroupItem_Data *list_item =
547 (Setting_GenGroupItem_Data *) data;
549 list_item->chk_status = elm_check_state_get(obj); /* for genlist update status */
550 setting_display_main_effect_set_value(list_item);
555 /* setting_display_brightness_chk_btn_cb*/
556 #ifdef UNUSED_VCONFKEY
557 /* Fake image - launch effect*/
559 setting_display_main_launch_image_chk_btn_cb(void *data, Evas_Object *obj,
564 retm_if(data == NULL, "Data parameter is NULL");
565 Setting_GenGroupItem_Data *list_item =
566 (Setting_GenGroupItem_Data *) data;
568 list_item->chk_status = elm_check_state_get(obj); /* for genlist update status */
571 setting_set_bool_slp_key(BOOL_SLP_SETTING_LAUNCH_IMAGE,
572 list_item->chk_status, &err);
576 static Ecore_X_Window setting_display_main_effect_get_root(Evas_Object *
579 Ecore_X_Window xwin = 0;
580 Ecore_X_Window root = 0;
582 retv_if(!win_main, root);
584 xwin = elm_win_xwindow_get(win_main);
585 retv_if(!xwin, root);
587 root = ecore_x_window_root_get(xwin);
591 static void setting_display_main_effect_set_value(void *data)
593 Setting_GenGroupItem_Data *list_item =
594 (Setting_GenGroupItem_Data *) data;
595 SettingDisplayUG *ad = list_item->userdata;
596 Ecore_X_Window root = 0;
597 Ecore_X_Atom effect_enable_atom = 0;
598 unsigned int is_enable = 0; /* 0: effect disable, 1: effect enable */
600 root = setting_display_main_effect_get_root(ad->win_main_layout);
602 effect_enable_atom = ecore_x_atom_get("_NET_CM_EFFECT_ENABLE");
603 ret_if(!effect_enable_atom);
605 if (list_item->chk_status) {
609 ecore_x_window_prop_card32_set(root, effect_enable_atom, &is_enable, 1);