fix N_SE-20873
[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
391                         ret = setting_set_int_slp_key(INT_SLP_SETTING_LCD_BRIGHTNESS, value, &err);
392                         if (0 != ret) //add error handle,due to different target env..
393                         {
394                                 SETTING_TRACE("Operation failed");
395                                 setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_COM_POP_FAILED"),
396                                                         NULL, POPUP_INTERVAL, FALSE, FALSE);
397                                 return;
398                         }
399
400                         /*  call brightness API */
401                         ret = device_set_brightness_to_settings(BRIGHTNESS_DISPLAY, value);
402                         /* TODO error handling here */
403                 }
404                 #else
405                 int value = SETTING_BRIGHTNESS_LEVEL5;
406                 //device_get_brightness(BRIGHTNESS_DISPLAY, &value);
407                 if (ad->data_br_sli) {
408                         value = elm_slider_value_get(ad->data_br_sli->eo_check);
409                         SETTING_TRACE(" value of ad->data_br_sli->eo_check: %d ", value);
410                         setting_enable_genlist_item(ad->data_br_sli->item);
411                 }
412                 ret = setting_set_int_slp_key(INT_SLP_SETTING_LCD_BRIGHTNESS, value, &err);
413                 if (0 != ret) //add error handle,due to different target env..
414                 {
415                         SETTING_TRACE("Operation failed");
416                         setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_COM_POP_FAILED"),
417                                                 NULL, POPUP_INTERVAL, FALSE, FALSE);
418                         return;
419                 }
420                 #endif
421         }
422 }
423
424 static void
425 setting_display_brightness_chk_btn_cb(void *data, Evas_Object *obj,
426                                       void *event_info)
427 {
428         SETTING_TRACE_BEGIN;
429         /* error check */
430         retm_if(data == NULL, "Data parameter is NULL");
431         Setting_GenGroupItem_Data *list_item =
432             (Setting_GenGroupItem_Data *) data;
433         SettingDisplayUG *ad = list_item->userdata;
434         list_item->chk_status = elm_check_state_get(obj);       /*  for genlist update status */
435
436         // enable /disable toggle button
437         __toggle_automatic_chk(ad, list_item->chk_status);
438         return;
439 }
440
441 /**
442  * [UI] 'Automatic' toggle
443  */
444 static void setting_display_brightness_mouse_up_Gendial_list_cb(void *data,
445                                                                 Evas_Object * obj,
446                                                                 void *event_info)
447 {
448         /* error check */
449         retm_if(event_info == NULL, "Invalid argument: event info is NULL");
450         retm_if(data == NULL, "Invalid argument: data is NULL");
451         SettingDisplayUG *ad = data;
452
453         Elm_Object_Item *item = (Elm_Object_Item *) event_info;
454         elm_genlist_item_selected_set(item, 0);
455         Setting_GenGroupItem_Data *list_item =
456             (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
457
458         int old_status = elm_check_state_get(list_item->eo_check);
459         /* new status */
460         list_item->chk_status = !old_status;
461         elm_check_state_set(list_item->eo_check, list_item->chk_status);
462
463         // enable /disable toggle button
464         __toggle_automatic_chk(ad,list_item->chk_status);
465 }
466
467 static void setting_display_set_slider_value(void* data, Evas_Object *obj, double value)
468
469 {
470         SETTING_TRACE_BEGIN;
471         retm_if(data == NULL, "Invalid argument: data is NULL");
472
473         SettingDisplayUG *ad = data;
474         int ret, err;
475         ret = device_set_brightness_to_settings(BRIGHTNESS_DISPLAY, value);
476         if (ret == DEVICE_ERROR_NONE) {
477                 ad->data_br_sli->chk_status = value;
478                 ret = setting_set_int_slp_key(INT_SLP_SETTING_LCD_BRIGHTNESS, value, &err);
479                 //add error handle..
480                 if (0 != ret) setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_COM_POP_FAILED"),
481                                                 NULL, POPUP_INTERVAL, FALSE, FALSE);
482         } else {
483                 SETTING_TRACE("device_set_brightness_to_settings : failed[ret=%d]", ret);
484                 //rollback..
485                 int tmp = SETTING_BRIGHTNESS_LEVEL5;
486                 setting_get_int_slp_key(INT_SLP_SETTING_LCD_BRIGHTNESS, &tmp, &err);
487                 elm_slider_value_set(obj, tmp);
488                 setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_COM_POP_FAILED"),
489                                                                 NULL, POPUP_INTERVAL, FALSE, FALSE);
490         }
491 }
492
493 static Eina_Bool __set_brightness_on_idle(void *data)
494 {
495         SETTING_TRACE_BEGIN;
496         SettingDisplayUG *ad = (SettingDisplayUG *) data;
497         if (!ad || !ad->data_br_sli || !ad->data_br_sli->eo_check)
498         {
499                 SETTING_TRACE_ERROR("!ad || !ad->data_br_sli || !ad->data_br_sli->eo_check");
500                 if (ad) 
501                         ad->set_idler = NULL;
502                 return FALSE;
503         }
504         //Get the current real value of slider
505         Evas_Object *obj = ad->data_br_sli->eo_check;
506         double val = elm_slider_value_get(obj);
507         int value = (int)(val + 0.5);
508         SETTING_TRACE("val:%f", val);
509         SETTING_TRACE("value:%d", value);
510         setting_display_set_slider_value(ad, obj, value);
511         //After return False, the idler will be deleted directly,so here set ad->set_idler as NULL directly.
512         ad->set_idler = NULL;
513         return FALSE;
514 }
515
516 static void
517 setting_display_birghtness_bright_slider_value_change_cb(void *data,
518                                                          Evas_Object *obj,
519                                                          void *event_info)
520 {
521         SETTING_TRACE_BEGIN;
522         retm_if(data == NULL, "Data parameter is NULL");
523         int value = 0;
524         static int old_val = -1;
525         SettingDisplayUG *ad = NULL;
526         Setting_GenGroupItem_Data *list_item =
527             (Setting_GenGroupItem_Data *) data;
528         ad = list_item->userdata;
529
530         value = elm_check_state_get(ad->data_br_auto->eo_check);
531         if (value == 1) {       /* it is automatic setting mode, */
532                 /* do nothing */
533                 return;
534         }
535
536         double val = elm_slider_value_get(obj);
537         SETTING_TRACE("val:%f", val);
538         value = (int)(val + 0.5);
539         /* SETTING_TRACE("val:%f", val); */
540         SETTING_TRACE("value:%d", value);
541         if (value != old_val)
542         {
543                 //setting_display_set_slider_value(ad, obj, value);
544                 if(isEmulBin())
545                 {
546                         SETTING_TRACE("It is in Emulator, need special process to improve the performence");
547                         if (ad->set_idler) {
548                                 ecore_idler_del(ad->set_idler);
549                                 ad->set_idler = NULL;
550                         }
551                         ad->set_idler = ecore_idler_add((Ecore_Task_Cb) __set_brightness_on_idle, ad);
552                 }
553                 else
554                 {
555                         SETTING_TRACE("It is in Real Target, Set the brightness directly.");
556                         setting_display_set_slider_value(ad, obj, value);
557                 }
558                 old_val = value;
559         }
560 }
561
562