6eb6aeac3f9c171ad8fbd329da534068bc565c64
[apps/core/preloaded/settings.git] / setting-display / src / setting-display-brightness.c
1 /*
2  * setting
3  *
4  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
5  *
6  * Contact: MyoungJune Park <mj2004.park@samsung.com>
7  *
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
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
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.
19  *
20  */
21
22 #include <setting-display-brightness.h>
23 #define DISABLE_LOW_BATERY_CHANGE 0 //disable user to set the brightness when the Mobile is low battery.
24
25 #define Left_Bright_Icon IMG_BRIGTHNESS_LEFT
26 #define Right_Bright_Icon IMG_BRIGHTNESS_RIGHT
27 #define SUPPORT_DISPLAY_HOMESCREEN_IMAGE 0
28
29 static int setting_display_brightness_create(void *cb);
30 static int setting_display_brightness_destroy(void *cb);
31 static int setting_display_brightness_update(void *cb);
32 static int setting_display_brightness_cleanup(void *cb);
33
34 static void setting_display_set_slider_value(void* data, Evas_Object *obj, double value);
35
36 setting_view setting_view_display_brightness = {
37         .create = setting_display_brightness_create,
38         .destroy = setting_display_brightness_destroy,
39         .update = setting_display_brightness_update,
40         .cleanup = setting_display_brightness_cleanup,
41 };
42
43 static void __toggle_automatic_chk(void* data, int chk_status);
44
45 /* ***************************************************
46  *
47  *basic func
48  *
49  ***************************************************/
50 #define LOW_BATTERY_NOTIFY "Battery is too low, you cannot change brightness"
51 #define NORMAL_BATTERY_NOTIFY "Battery becomes normal, now you can change brightness.."
52
53 #if DISABLE_LOW_BATERY_CHANGE
54 static void
55 __low_battery_on_resp_cb(void *data, Evas_Object *obj, void *event_info)
56 {
57         SETTING_TRACE_BEGIN;
58         setting_retm_if(NULL == data, "NULL == data");
59         SettingDisplayUG *ad = (SettingDisplayUG *) data;
60         evas_object_del(ad->popup);
61         ad->popup = NULL;
62 }
63
64 static Eina_Bool __disable_on_idle(void *data)
65 {
66         SETTING_TRACE_BEGIN;
67         SettingDisplayUG *ad = (SettingDisplayUG *) data;
68
69         if (ad->popup)
70         {
71                 evas_object_del(ad->popup);
72                 ad->popup = NULL;
73         }
74         ad->popup = setting_create_popup_without_btn(ad, ad->win_get, NULL, _(LOW_BATTERY_NOTIFY),
75                                         __low_battery_on_resp_cb, POPUP_INTERVAL, FALSE, FALSE);
76         if (ad->data_br_sli) setting_disable_genlist_item(ad->data_br_sli->item);
77         if (ad->data_br_auto) setting_disable_genlist_item(ad->data_br_auto->item);
78         return FALSE;
79 }
80
81 // low battery
82 static void setting_display_brightness_lowbat_cb(keynode_t *key, void* data)
83 {
84 //      SETTING_TRACE_BEGIN;
85         ret_if(data == NULL);
86         SettingDisplayUG *ad = (SettingDisplayUG *) data;
87         SETTING_TRACE_BEGIN;
88
89         char* vconf_key = vconf_keynode_get_name(key);
90         SETTING_TRACE("the value of [ %s ] just changed", vconf_key);
91         ad->low_bat = vconf_keynode_get_int(key);
92         if (ad->low_bat <= VCONFKEY_SYSMAN_BAT_CRITICAL_LOW)
93         {
94                 SETTING_TRACE("Battery becomes ctitical low !");
95                 //popup was showed by system FW
96                 // disabled
97                 if (ad->data_br_sli) setting_disable_genlist_item(ad->data_br_sli->item);
98                 if (ad->data_br_auto) setting_disable_genlist_item(ad->data_br_auto->item);
99         } else {
100                 SETTING_TRACE("Battery becomes normal!");
101                 if (ad->data_br_sli) {
102                         int automatic_val, err;
103                         setting_get_int_slp_key(INT_SLP_SETTING_AUTOMATIC_BRIGHTNESS, &automatic_val, &err);
104                         if (ad->data_br_auto) setting_enable_genlist_item(ad->data_br_auto->item);
105                         if (automatic_val == SETTING_BRIGHTNESS_AUTOMATIC_OFF) // not automatic
106                         {
107                                 if (ad->data_br_sli) setting_enable_genlist_item(ad->data_br_sli->item);
108                         }
109                 }
110         }
111 }
112 #endif
113
114 static void __display_int_vconf_cb(keynode_t *key, void *data)
115 {
116         SettingDisplayUG *ad = data;
117         retm_if(!data, "Invalid argument: data is NULL");
118
119         int status = vconf_keynode_get_int(key);
120         char *vconf_name = vconf_keynode_get_name(key);
121         SETTING_TRACE("Enter %s(%s=%d)", __FUNCTION__, vconf_name, status);
122
123         if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_LCD_BRIGHTNESS)) {
124                 if (ad->data_br_sli)
125                 {
126                         elm_slider_value_set(ad->data_br_sli->eo_check, status);
127                 }
128         }
129         else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_BRIGHTNESS_AUTOMATIC_INT)) {
130                 if (status)
131                 {
132                         if (ad->data_br_auto)
133                                 elm_check_state_set(ad->data_br_auto->eo_check, 1);
134
135                         if (ad->data_br_sli)
136                                 setting_disable_genlist_item(ad->data_br_sli->item);
137                 }
138                 else
139                 {
140                         if (ad->data_br_auto)
141                                 elm_check_state_set(ad->data_br_auto->eo_check, 0);
142
143                         if (ad->data_br_sli)
144                                 setting_enable_genlist_item(ad->data_br_sli->item);
145                 }
146         }
147         return;
148 }
149
150 static int setting_display_brightness_create(void *cb)
151 {
152         SETTING_TRACE_BEGIN;
153         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
154
155         SettingDisplayUG *ad = (SettingDisplayUG *) cb;
156
157         Evas_Object *genlist = elm_genlist_add(ad->win_main_layout);
158         elm_object_style_set(genlist, "dialogue");
159         retvm_if(genlist == NULL, SETTING_RETURN_FAIL, "Cannot set scroller object as contento of layout");
160         elm_genlist_clear(genlist);     /* first to clear list */
161
162         /* add basic layout */
163         if (&setting_view_display_brightness == ad->view_to_load) {
164                 ad->ly_main =
165                     setting_create_layout_navi_bar(ad->win_main_layout,
166                                                    ad->win_get,
167                                                    _(KeyStr_Brightness),
168                                                    _("IDS_COM_BODY_BACK"),
169                                                    NULL, NULL,
170                                                    setting_display_brightness_click_softkey_cancel_cb,
171                                                    NULL, NULL, ad,
172                                                    genlist,
173                                                    &ad->navi_bar, NULL);
174         } else {
175                 setting_push_layout_navi_bar(_(KeyStr_Brightness),
176                                              _("IDS_COM_BODY_BACK"), NULL, NULL,
177                                              setting_display_brightness_click_softkey_cancel_cb,
178                                              NULL,
179                                              NULL, ad, genlist, ad->navi_bar, NULL);;
180         }
181
182
183         Elm_Object_Item *item = elm_genlist_item_append(genlist, &(ad->itc_seperator), NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
184         elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
185
186         // [control] AUTOMATIC - boolean - vconf
187         int auto_value = SETTING_BRIGHTNESS_AUTOMATIC_ON;
188         int err;
189         int ret = setting_get_int_slp_key(INT_SLP_SETTING_AUTOMATIC_BRIGHTNESS, &auto_value, &err);//if get failed,to hold value SETTING_BRIGHTNESS_AUTOMATIC_ON
190         SETTING_TRACE("auto_value:%d", auto_value);
191         if (0 != ret) //add error handle,due to different target env..
192                 SETTING_TRACE_ERROR("Failed to get value of [%s]", VCONFKEY_SETAPPL_BRIGHTNESS_AUTOMATIC_INT);
193
194         // [UI] AUTOMATIC - boolean
195         ad->data_br_auto =
196             setting_create_Gendial_field_def(genlist, &(ad->itc_1text_1icon),
197                                              setting_display_brightness_mouse_up_Gendial_list_cb,
198                                              ad, SWALLOW_Type_1TOGGLE, NULL,
199                                              NULL, auto_value,
200                                              "IDS_COM_BODY_AUTOMATIC", NULL,
201                                              setting_display_brightness_chk_btn_cb);
202         if (ad->data_br_auto) {
203                 ad->data_br_auto->userdata = ad;
204         } else {
205                 SETTING_TRACE_ERROR("ad->data_br_auto is NULL");
206         }
207
208
209         /* check manual */
210         int value = SETTING_BRIGHTNESS_LEVEL5;
211         ret = setting_get_int_slp_key(INT_SLP_SETTING_LCD_BRIGHTNESS, &value, &err);
212         SETTING_TRACE("******* value = %d ", value);
213         if (0 != ret) //add error handle,due to different target env..
214                 SETTING_TRACE_ERROR("Failed to get value of [%s]", VCONFKEY_SETAPPL_LCD_BRIGHTNESS);
215
216         // [UI] Slider control for Bightness
217         ad->data_br_sli =
218             setting_create_Gendial_field_def(genlist, &(itc_1icon), NULL,
219                                              NULL, SWALLOW_Type_LAYOUT_SLIDER,
220                                              Left_Bright_Icon,
221                                              Right_Bright_Icon, value, NULL,
222                                              NULL,
223                                              setting_display_birghtness_bright_slider_value_change_cb);
224
225         if (ad->data_br_sli) {
226                 ad->data_br_sli->win_main = ad->win_main_layout;
227                 ad->data_br_sli->evas = ad->evas;
228                 ad->data_br_sli->isIndicatorVisible = false;
229                 ad->data_br_sli->slider_min = 1;
230
231                 ad->data_br_sli->slider_max = 100;
232                 ad->data_br_sli->userdata = ad;
233
234                 if (auto_value) {
235                         setting_disable_genlist_item(ad->data_br_sli->item);
236                 }
237
238         } else {
239                 SETTING_TRACE_ERROR("ad->data_br_sli is NULL");
240         }
241         #if DISABLE_LOW_BATERY_CHANGE
242         ad->low_bat = VCONFKEY_SYSMAN_BAT_NORMAL;
243         vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &ad->low_bat);
244         if (0 != ret) //add error handle,due to different target env..
245                 SETTING_TRACE_ERROR("Failed to get value of [%s]", VCONFKEY_SYSMAN_BATTERY_STATUS_LOW);
246
247         if (ad->low_bat <= VCONFKEY_SYSMAN_BAT_CRITICAL_LOW) {
248                 SETTING_TRACE("battery is ctitical low");
249                 //have time delay to show all the item out,so user idler to disable
250                 //if (ad->data_br_sli) setting_disable_genlist_item(ad->data_br_sli->item);
251                 //if (ad->data_br_auto) setting_disable_genlist_item(ad->data_br_auto->item);
252                 ecore_idler_add(__disable_on_idle, ad);
253         }
254
255         // low battery handler - registration
256         vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, setting_display_brightness_lowbat_cb, ad);
257         #endif
258
259         vconf_notify_key_changed(VCONFKEY_SETAPPL_LCD_BRIGHTNESS, __display_int_vconf_cb, ad);
260         vconf_notify_key_changed(VCONFKEY_SETAPPL_BRIGHTNESS_AUTOMATIC_INT, __display_int_vconf_cb, ad);
261         setting_view_display_brightness.is_create = 1;
262         return SETTING_RETURN_SUCCESS;
263 }
264
265 static int setting_display_brightness_destroy(void *cb)
266 {
267         SETTING_TRACE_BEGIN;
268
269         /* error check */
270         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
271 #if DISABLE_LOW_BATERY_CHANGE
272         /* low battery handler - registration */
273         vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, setting_display_brightness_lowbat_cb);
274 #endif
275         vconf_ignore_key_changed(VCONFKEY_SETAPPL_LCD_BRIGHTNESS, __display_int_vconf_cb);
276         vconf_ignore_key_changed(VCONFKEY_SETAPPL_BRIGHTNESS_AUTOMATIC_INT, __display_int_vconf_cb);
277
278         SettingDisplayUG *ad = (SettingDisplayUG *) cb;
279         elm_naviframe_item_pop(ad->navi_bar);
280         if (ad->popup)
281         {
282                 evas_object_del(ad->popup);
283                 ad->popup = NULL;
284         }
285
286         setting_view_display_brightness.is_create = 0;
287         return SETTING_RETURN_SUCCESS;
288 }
289
290 static int setting_display_brightness_update(void *cb)
291 {
292         SETTING_TRACE_BEGIN;
293         return SETTING_RETURN_SUCCESS;
294
295 }
296
297 static int setting_display_brightness_cleanup(void *cb)
298 {
299         SETTING_TRACE_BEGIN;
300         /* error check */
301         retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
302         setting_display_brightness_destroy(cb);
303
304         return SETTING_RETURN_SUCCESS;
305 }
306
307 /* ***************************************************
308  *
309  *general func
310  *
311  ***************************************************/
312
313 /* ***************************************************
314  *
315  *call back func
316  *
317  ***************************************************/
318
319 static void
320 setting_display_brightness_click_softkey_cancel_cb(void *data,
321                                                    Evas_Object *obj,
322                                                    void *event_info)
323 {
324         SETTING_TRACE_BEGIN;
325         /* error check */
326         retm_if(data == NULL, "Data parameter is NULL");
327         SettingDisplayUG *ad = (SettingDisplayUG *) data;
328         if (&setting_view_display_brightness == ad->view_to_load) {
329                 /* Send destroy request */
330                 ug_destroy_me(ad->ug);
331                 return;
332         }
333
334         setting_view_change(&setting_view_display_brightness,
335                             &setting_view_display_main, ad);
336 }
337
338 /**
339  * toggle handler for 'Automatic'
340  */
341 static void __toggle_automatic_chk(void* data, int chk_status)
342 {
343         int err;
344         SettingDisplayUG *ad = (SettingDisplayUG *) data;
345         int ret = setting_set_int_slp_key(INT_SLP_SETTING_AUTOMATIC_BRIGHTNESS, chk_status, &err);
346         if (0 != ret) //add error handle,due to different target env..
347         {
348                 SETTING_TRACE("Operation failed");
349                 setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_COM_POP_FAILED"),
350                                         NULL, POPUP_INTERVAL, FALSE, FALSE);
351                 return;
352         }
353         if (chk_status) {
354                 // TOGGLE ON
355                 setting_disable_genlist_item(ad->data_br_sli->item);
356
357         } else {
358                 // TOGGLE OFF
359                 #if DISABLE_LOW_BATERY_CHANGE
360                 //to get value every time
361                 ad->low_bat = VCONFKEY_SYSMAN_BAT_NORMAL;
362
363                 // in case of LOW BATTERY
364                 ret = vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &ad->low_bat);
365                 if (0 != ret) //add error handle,due to different target env..
366                 {
367                         SETTING_TRACE("Operation failed");
368                         setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_COM_POP_FAILED"),
369                                                 NULL, POPUP_INTERVAL, FALSE, FALSE);
370                         return;
371                 }
372
373                 // in case of CRITICAL LOW BATTERY
374                 if (ad->low_bat <= VCONFKEY_SYSMAN_BAT_CRITICAL_LOW)
375                 {
376                         setting_disable_genlist_item(ad->data_br_sli->item);
377                         setting_disable_genlist_item(ad->data_br_auto->item);
378                 }
379                 else
380                 {       // in case of NORMAL OP
381                         // 1. set vconf
382                         // 2. call brightness set API
383                         int value = SETTING_BRIGHTNESS_LEVEL5;
384                         //device_get_brightness(BRIGHTNESS_DISPLAY, &value);
385                         if (ad->data_br_sli)
386                                 value = elm_slider_value_get(ad->data_br_sli->eo_check);
387                         SETTING_TRACE(" value of ad->data_br_sli->eo_check: %d ", value);
388                         setting_enable_genlist_item(ad->data_br_sli->item);
389
390                         ret = setting_set_int_slp_key(INT_SLP_SETTING_LCD_BRIGHTNESS, value, &err);
391                         if (0 != ret) //add error handle,due to different target env..
392                         {
393                                 SETTING_TRACE("Operation failed");
394                                 setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_COM_POP_FAILED"),
395                                                         NULL, POPUP_INTERVAL, FALSE, FALSE);
396                                 return;
397                         }
398
399                         /*  call brightness API */
400                         ret = device_set_brightness(BRIGHTNESS_DISPLAY, value);
401                         /* TODO error handling here */
402                 }
403                 #else
404                 int value = SETTING_BRIGHTNESS_LEVEL5;
405                 //device_get_brightness(BRIGHTNESS_DISPLAY, &value);
406                 if (ad->data_br_sli) value = elm_slider_value_get(ad->data_br_sli->eo_check);
407                 SETTING_TRACE(" value of ad->data_br_sli->eo_check: %d ", value);
408                 setting_enable_genlist_item(ad->data_br_sli->item);
409                 ret = setting_set_int_slp_key(INT_SLP_SETTING_LCD_BRIGHTNESS, value, &err);
410                 if (0 != ret) //add error handle,due to different target env..
411                 {
412                         SETTING_TRACE("Operation failed");
413                         setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_COM_POP_FAILED"),
414                                                 NULL, POPUP_INTERVAL, FALSE, FALSE);
415                         return;
416                 }
417                 #endif
418         }
419 }
420
421 static void
422 setting_display_brightness_chk_btn_cb(void *data, Evas_Object *obj,
423                                       void *event_info)
424 {
425         SETTING_TRACE_BEGIN;
426         /* error check */
427         retm_if(data == NULL, "Data parameter is NULL");
428         Setting_GenGroupItem_Data *list_item =
429             (Setting_GenGroupItem_Data *) data;
430         SettingDisplayUG *ad = list_item->userdata;
431         list_item->chk_status = elm_check_state_get(obj);       /*  for genlist update status */
432
433         // enable /disable toggle button
434         __toggle_automatic_chk(ad, list_item->chk_status);
435         return;
436 }
437
438 /**
439  * [UI] 'Automatic' toggle
440  */
441 static void setting_display_brightness_mouse_up_Gendial_list_cb(void *data,
442                                                                 Evas_Object * obj,
443                                                                 void *event_info)
444 {
445         /* error check */
446         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
447         retm_if(data == NULL, "Invalid argument: data is NULL");
448         SettingDisplayUG *ad = data;
449
450         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
451         elm_genlist_item_selected_set(item, 0);
452         Setting_GenGroupItem_Data *list_item =
453             (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
454
455         int old_status = elm_check_state_get(list_item->eo_check);
456         /* new status */
457         list_item->chk_status = !old_status;
458         elm_check_state_set(list_item->eo_check, list_item->chk_status);
459
460         // enable /disable toggle button
461         __toggle_automatic_chk(ad,list_item->chk_status);
462 }
463
464 static void setting_display_set_slider_value(void* data, Evas_Object *obj, double value)
465
466 {
467         SETTING_TRACE_BEGIN;
468         retm_if(data == NULL, "Invalid argument: data is NULL");
469
470         SettingDisplayUG *ad = data;
471         int ret, err;
472         ret = device_set_brightness(BRIGHTNESS_DISPLAY, value);
473         if (ret == DEVICE_ERROR_NONE) {
474                 ad->data_br_sli->chk_status = value;
475                 ret = setting_set_int_slp_key(INT_SLP_SETTING_LCD_BRIGHTNESS, value, &err);
476                 //add error handle..
477                 if (0 != ret) setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_COM_POP_FAILED"),
478                                                 NULL, POPUP_INTERVAL, FALSE, FALSE);
479         } else {
480                 SETTING_TRACE("device_set_brightness : failed[ret=%d]", ret);
481                 //rollback..
482                 int tmp = SETTING_BRIGHTNESS_LEVEL5;
483                 setting_get_int_slp_key(INT_SLP_SETTING_LCD_BRIGHTNESS, &tmp, &err);
484                 elm_slider_value_set(obj, tmp);
485                 setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_COM_POP_FAILED"),
486                                                                 NULL, POPUP_INTERVAL, FALSE, FALSE);
487         }
488 }
489
490 static Eina_Bool __set_brightness_on_idle(void *data)
491 {
492         SETTING_TRACE_BEGIN;
493         SettingDisplayUG *ad = (SettingDisplayUG *) data;
494         if (!ad || !ad->data_br_sli || !ad->data_br_sli->eo_check)
495         {
496                 SETTING_TRACE_ERROR("!ad || !ad->data_br_sli || !ad->data_br_sli->eo_check");
497                 ad->set_idler = NULL;
498                 return FALSE;
499         }
500         //Get the current real value of slider
501         Evas_Object *obj = ad->data_br_sli->eo_check;
502         double val = elm_slider_value_get(obj);
503         int value = (int)(val + 0.5);
504         SETTING_TRACE("val:%f", val);
505         SETTING_TRACE("value:%d", value);
506         setting_display_set_slider_value(ad, obj, value);
507         //After return False, the idler will be deleted directly,so here set ad->set_idler as NULL directly.
508         ad->set_idler = NULL;
509         return FALSE;
510 }
511
512 static void
513 setting_display_birghtness_bright_slider_value_change_cb(void *data,
514                                                          Evas_Object *obj,
515                                                          void *event_info)
516 {
517         SETTING_TRACE_BEGIN;
518         retm_if(data == NULL, "Data parameter is NULL");
519         int value = 0;
520         static int old_val = -1;
521         SettingDisplayUG *ad = NULL;
522         Setting_GenGroupItem_Data *list_item =
523             (Setting_GenGroupItem_Data *) data;
524         ad = list_item->userdata;
525
526         value = elm_check_state_get(ad->data_br_auto->eo_check);
527         if (value == 1) {       /* it is automatic setting mode, */
528                 /* do nothing */
529                 return;
530         }
531
532         double val = elm_slider_value_get(obj);
533         SETTING_TRACE("val:%f", val);
534         value = (int)(val + 0.5);
535         /* SETTING_TRACE("val:%f", val); */
536         SETTING_TRACE("value:%d", value);
537         if (value != old_val)
538         {
539                 //setting_display_set_slider_value(ad, obj, value);
540                 if(isEmulBin())
541                 {
542                         SETTING_TRACE("It is in Emulator, need special process to improve the performence");
543                         if (ad->set_idler) {
544                                 ecore_idler_del(ad->set_idler);
545                                 ad->set_idler = NULL;
546                         }
547                         ad->set_idler = ecore_idler_add((Ecore_Task_Cb) __set_brightness_on_idle, ad);
548                 }
549                 else
550                 {
551                         SETTING_TRACE("It is in Real Target, Set the brightness directly.");
552                         setting_display_set_slider_value(ad, obj, value);
553                 }
554                 old_val = value;
555         }
556 }
557
558