X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=setting-display%2Fsrc%2Fsetting-display-brightness.c;h=c0469a1401d2d4ec84d9579fa76ba9c0e2f56dd7;hb=5915acf51ee32bf71fb08c8da04c1dc064ac1db6;hp=83401f376bc9ebea12877f79dd6f0aed55eef0e1;hpb=857e2cde21bdc124792abb38e6214e5b560dff63;p=apps%2Fcore%2Fpreloaded%2Fsettings.git diff --git a/setting-display/src/setting-display-brightness.c b/setting-display/src/setting-display-brightness.c index 83401f3..c0469a1 100755 --- a/setting-display/src/setting-display-brightness.c +++ b/setting-display/src/setting-display-brightness.c @@ -46,19 +46,35 @@ static void __toggle_automatic_chk(void* data, int chk_status); *basic func * ***************************************************/ -#if DISABLED_CODE -static Eina_Bool setting_display_brightness_on_idle(void *data) +#define LOW_BATTERY_NOTIFY "Battery is too low, you cannot change brightness" +#define NORMAL_BATTERY_NOTIFY "Battery becomes normal, now you can change brightness.." + +static void +__low_battery_on_resp_cb(void *data, Evas_Object *obj, void *event_info) +{ + SETTING_TRACE_BEGIN; + setting_retm_if(NULL == data, "NULL == data"); + SettingDisplayUG *ad = (SettingDisplayUG *) data; + evas_object_del(ad->popup); + ad->popup = NULL; +} + +static Eina_Bool __disable_on_idle(void *data) { SETTING_TRACE_BEGIN; SettingDisplayUG *ad = (SettingDisplayUG *) data; - int auto_value, err; - setting_get_int_slp_key(INT_SLP_SETTING_AUTOMATIC_BRIGHTNESS, - &auto_value, &err); - __toggle_automatic_chk(ad, auto_value); + if (ad->popup) + { + evas_object_del(ad->popup); + ad->popup = NULL; + } + ad->popup = setting_create_popup_without_btn(ad, ad->win_get, NULL, _(LOW_BATTERY_NOTIFY), + __low_battery_on_resp_cb, POPUP_INTERVAL, FALSE, FALSE); + if (ad->data_br_sli) setting_disable_genlist_item(ad->data_br_sli->item); + if (ad->data_br_auto) setting_disable_genlist_item(ad->data_br_auto->item); return FALSE; } -#endif // low battery static void setting_display_brightness_lowbat_cb(keynode_t *key, void* data) @@ -70,35 +86,26 @@ static void setting_display_brightness_lowbat_cb(keynode_t *key, void* data) char* vconf_key = vconf_keynode_get_name(key); SETTING_TRACE("the value of [ %s ] just changed", vconf_key); - // VCONFKEY_SYSMAN_BATTERY_STATUS_LOW - - int battery_value; - vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &battery_value); - ad->low_bat = battery_value; - - int automatic_val, err; - setting_get_int_slp_key(INT_SLP_SETTING_AUTOMATIC_BRIGHTNESS, &automatic_val, &err); - - if (battery_value < VCONFKEY_SYSMAN_BAT_WARNING_LOW) + ad->low_bat = vconf_keynode_get_int(key); + if (ad->low_bat <= VCONFKEY_SYSMAN_BAT_CRITICAL_LOW) { + SETTING_TRACE("Battery becomes ctitical low !"); + //popup was showed by system FW // disabled - if (ad->data_br_sli) { - setting_disable_genlist_item(ad->data_br_sli->item); - setting_disable_genlist_item(ad->data_br_auto->item); - } + if (ad->data_br_sli) setting_disable_genlist_item(ad->data_br_sli->item); + if (ad->data_br_auto) setting_disable_genlist_item(ad->data_br_auto->item); } else { + SETTING_TRACE("Battery becomes normal!"); if (ad->data_br_sli) { + int automatic_val, err; + setting_get_int_slp_key(INT_SLP_SETTING_AUTOMATIC_BRIGHTNESS, &automatic_val, &err); + if (ad->data_br_auto) setting_enable_genlist_item(ad->data_br_auto->item); if (automatic_val == SETTING_BRIGHTNESS_AUTOMATIC_OFF) // not automatic { - setting_enable_genlist_item(ad->data_br_auto->item); - setting_enable_genlist_item(ad->data_br_sli->item); - } else { // automatic - setting_enable_genlist_item(ad->data_br_auto->item); - //setting_enable_genlist_item(ad->data_br_sli->item); + if (ad->data_br_sli) setting_enable_genlist_item(ad->data_br_sli->item); } } } - return; } static int setting_display_brightness_create(void *cb) @@ -149,20 +156,16 @@ static int setting_display_brightness_create(void *cb) elm_object_part_content_set(sub_layout, "search_list2", genlist); - int auto_value; - int err; - Elm_Object_Item *item = NULL;; - - item = elm_genlist_item_append(genlist, &(ad->itc_seperator), NULL, NULL, - ELM_GENLIST_ITEM_NONE, NULL, NULL); + Elm_Object_Item *item = elm_genlist_item_append(genlist, &(ad->itc_seperator), NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); // [control] AUTOMATIC - boolean - vconf - setting_get_int_slp_key(INT_SLP_SETTING_AUTOMATIC_BRIGHTNESS, &auto_value, &err); + int auto_value = SETTING_BRIGHTNESS_AUTOMATIC_ON; + int err; + 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 SETTING_TRACE("auto_value:%d", auto_value); - - if(auto_value == SETTING_BRIGHTNESS_AUTOMATIC_PAUSE) - auto_value = SETTING_BRIGHTNESS_AUTOMATIC_ON; + if (0 != ret) //add error handle,due to different target env.. + SETTING_TRACE_ERROR("Failed to get value of [%s]", VCONFKEY_SETAPPL_BRIGHTNESS_AUTOMATIC_INT); // [UI] AUTOMATIC - boolean ad->data_br_auto = @@ -179,29 +182,12 @@ static int setting_display_brightness_create(void *cb) } - int battery_value; - vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &battery_value); - ad->low_bat = battery_value; - - if (ad->low_bat < VCONFKEY_SYSMAN_BAT_WARNING_LOW) { - } - /* check manual */ - int max_brt; - if (DEVICE_ERROR_NONE != device_get_max_brightness(BRIGHTNESS_DISPLAY, &max_brt)) { - SETTING_TRACE("Fail to get the max brightness of the display.\n"); - max_brt = 10; - } else { - SETTING_TRACE("Max brightness of the display is %d\n", max_brt); - } - - // get initial value from vconf - int value = SETTING_BRIGHTNESS_LEVEL7; - int ret = setting_get_int_slp_key(INT_SLP_SETTING_LCD_BRIGHTNESS, &value, &err); - if (ret == SETTING_RETURN_FAIL) { - value = SETTING_BRIGHTNESS_LEVEL5; - SETTING_TRACE("******* value = %d ", value); - } + int value = SETTING_BRIGHTNESS_LEVEL5; + ret = setting_get_int_slp_key(INT_SLP_SETTING_LCD_BRIGHTNESS, &value, &err); + SETTING_TRACE("******* value = %d ", value); + if (0 != ret) //add error handle,due to different target env.. + SETTING_TRACE_ERROR("Failed to get value of [%s]", VCONFKEY_SETAPPL_LCD_BRIGHTNESS); // [UI] Slider control for Bightness ad->data_br_sli = @@ -217,7 +203,8 @@ static int setting_display_brightness_create(void *cb) ad->data_br_sli->evas = ad->evas; ad->data_br_sli->isIndicatorVisible = false; ad->data_br_sli->slider_min = 1; - ad->data_br_sli->slider_max = max_brt; + ad->data_br_sli->slider_max = 100; + ad->data_br_sli->userdata = ad; if (auto_value) { @@ -228,21 +215,22 @@ static int setting_display_brightness_create(void *cb) SETTING_TRACE_ERROR("ad->data_br_sli is NULL"); } - vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &battery_value); - ad->low_bat = battery_value; - - if (ad->low_bat < VCONFKEY_SYSMAN_BAT_WARNING_LOW) { - if (ad->data_br_sli) { - setting_disable_genlist_item(ad->data_br_sli->item); - setting_disable_genlist_item(ad->data_br_auto->item); - } + ad->low_bat = VCONFKEY_SYSMAN_BAT_NORMAL; + vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &ad->low_bat); + if (0 != ret) //add error handle,due to different target env.. + SETTING_TRACE_ERROR("Failed to get value of [%s]", VCONFKEY_SYSMAN_BATTERY_STATUS_LOW); + + if (ad->low_bat <= VCONFKEY_SYSMAN_BAT_CRITICAL_LOW) { + SETTING_TRACE("battery is ctitical low"); + //have time delay to show all the item out,so user idler to disable + //if (ad->data_br_sli) setting_disable_genlist_item(ad->data_br_sli->item); + //if (ad->data_br_auto) setting_disable_genlist_item(ad->data_br_auto->item); + ecore_idler_add(__disable_on_idle, ad); } // low battery handler - registration vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, setting_display_brightness_lowbat_cb, ad); - setting_view_display_brightness.is_create = 1; - //ecore_idler_add(setting_display_brightness_on_idle, ad); return SETTING_RETURN_SUCCESS; } @@ -258,6 +246,11 @@ static int setting_display_brightness_destroy(void *cb) SettingDisplayUG *ad = (SettingDisplayUG *) cb; elm_naviframe_item_pop(ad->navi_bar); + if (ad->popup) + { + evas_object_del(ad->popup); + ad->popup = NULL; + } setting_view_display_brightness.is_create = 0; return SETTING_RETURN_SUCCESS; @@ -315,35 +308,64 @@ static void __toggle_automatic_chk(void* data, int chk_status) { int err; SettingDisplayUG *ad = (SettingDisplayUG *) data; + int ret = setting_set_int_slp_key(INT_SLP_SETTING_AUTOMATIC_BRIGHTNESS, chk_status, &err); + if (0 != ret) //add error handle,due to different target env.. + { + SETTING_TRACE("Operation failed"); + setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_COM_POP_FAILED"), + NULL, POPUP_INTERVAL, FALSE, FALSE); + return; + } if (chk_status) { // TOGGLE ON setting_disable_genlist_item(ad->data_br_sli->item); } else { // TOGGLE OFF - int value = SETTING_BRIGHTNESS_LEVEL7; - //device_get_brightness(BRIGHTNESS_DISPLAY, &value); - value = elm_slider_value_get(ad->data_br_sli->eo_check); - - SETTING_TRACE(" SENOSR :: %d ", value); - - setting_set_int_slp_key(INT_SLP_SETTING_LCD_BRIGHTNESS, value, &err); + //to get value every time + ad->low_bat = VCONFKEY_SYSMAN_BAT_NORMAL; + + // in case of LOW BATTERY + ret = vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &ad->low_bat); + if (0 != ret) //add error handle,due to different target env.. + { + SETTING_TRACE("Operation failed"); + setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_COM_POP_FAILED"), + NULL, POPUP_INTERVAL, FALSE, FALSE); + return; + } - if (ad->low_bat < VCONFKEY_SYSMAN_BAT_WARNING_LOW) { + // in case of CIRITICAL LOW BATTERY + if (ad->low_bat <= VCONFKEY_SYSMAN_BAT_CRITICAL_LOW) + { setting_disable_genlist_item(ad->data_br_sli->item); setting_disable_genlist_item(ad->data_br_auto->item); - setting_set_int_slp_key(INT_SLP_SETTING_AUTOMATIC_BRIGHTNESS, chk_status, &err); - return; } + else + { + // in case of NORMAL OP + // 1. set vconf + // 2. call brightness set API + int value = SETTING_BRIGHTNESS_LEVEL5; + //device_get_brightness(BRIGHTNESS_DISPLAY, &value); + if (ad->data_br_sli) + value = elm_slider_value_get(ad->data_br_sli->eo_check); + SETTING_TRACE(" value of ad->data_br_sli->eo_check: %d ", value); + setting_enable_genlist_item(ad->data_br_sli->item); + ret = setting_set_int_slp_key(INT_SLP_SETTING_LCD_BRIGHTNESS, value, &err); + if (0 != ret) //add error handle,due to different target env.. + { + SETTING_TRACE("Operation failed"); + setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_COM_POP_FAILED"), + NULL, POPUP_INTERVAL, FALSE, FALSE); + return; + } - ad->data_br_sli->chk_status = value; - setting_set_int_slp_key(INT_SLP_SETTING_LCD_BRIGHTNESS, value, &err); - elm_slider_value_set(ad->data_br_sli->eo_check, value); - - setting_enable_genlist_item(ad->data_br_sli->item); + /* call brightness API */ + ret = device_set_brightness(BRIGHTNESS_DISPLAY, value); + /* TODO error handling here */ + } } - - setting_set_int_slp_key(INT_SLP_SETTING_AUTOMATIC_BRIGHTNESS, chk_status, &err); } static void @@ -397,16 +419,22 @@ static void setting_display_set_slider_value(void* data, Evas_Object *obj, doubl SettingDisplayUG *ad = data; int ret, err; - -#ifdef USE_DEVICE_SET_DISPLAY_BRT ret = device_set_brightness(BRIGHTNESS_DISPLAY, value); if (ret == DEVICE_ERROR_NONE) { ad->data_br_sli->chk_status = value; ret = setting_set_int_slp_key(INT_SLP_SETTING_LCD_BRIGHTNESS, value, &err); + //add error handle.. + if (0 != ret) setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_COM_POP_FAILED"), + NULL, POPUP_INTERVAL, FALSE, FALSE); } else { /* SETTING_TRACE("device_set_brightness : failed"); */ + //rollback.. + int tmp = SETTING_BRIGHTNESS_LEVEL5; + setting_get_int_slp_key(INT_SLP_SETTING_LCD_BRIGHTNESS, &tmp, &err); + elm_slider_value_set(obj, tmp); + setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_COM_POP_FAILED"), + NULL, POPUP_INTERVAL, FALSE, FALSE); } -#endif } @@ -431,6 +459,7 @@ setting_display_birghtness_bright_slider_value_change_cb(void *data, } double val = elm_slider_value_get(obj); + SETTING_TRACE("val:%f", val); value = (int)(val + 0.5); /* SETTING_TRACE("val:%f", val); */ SETTING_TRACE("value:%d", value);