diff options
Diffstat (limited to 'setting-display')
-rwxr-xr-x | setting-display/CMakeLists.txt | 37 | ||||
-rwxr-xr-x | setting-display/include/setting-display-brightness.h | 38 | ||||
-rwxr-xr-x | setting-display/include/setting-display-main.h | 67 | ||||
-rwxr-xr-x | setting-display/include/setting-display-screen-mode.h | 27 | ||||
-rwxr-xr-x | setting-display/include/setting-display-wallpaper.h | 30 | ||||
-rwxr-xr-x | setting-display/include/setting-display.h | 133 | ||||
-rwxr-xr-x | setting-display/src/setting-display-brightness.c | 558 | ||||
-rwxr-xr-x | setting-display/src/setting-display-main.c | 612 | ||||
-rwxr-xr-x | setting-display/src/setting-display-screen-mode.c | 263 | ||||
-rwxr-xr-x | setting-display/src/setting-display-wallpaper.c | 476 | ||||
-rwxr-xr-x | setting-display/src/setting-display.c | 457 |
11 files changed, 2698 insertions, 0 deletions
diff --git a/setting-display/CMakeLists.txt b/setting-display/CMakeLists.txt new file mode 100755 index 0000000..4477be3 --- /dev/null +++ b/setting-display/CMakeLists.txt @@ -0,0 +1,37 @@ +INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/${SETTING_COMMON}/include) + +INCLUDE(FindPkgConfig) +pkg_check_modules(pkgs_display REQUIRED elementary ecore ecore-x edje evas appcore-common appcore-efl ui-gadget-1 capi-appfw-application dlog capi-system-device devman) + +FOREACH(flag ${pkgs_display_CFLAGS}) + SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") +ENDFOREACH(flag) + +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIC") +SET(CMAKE_C_FLAGS_DEBUG "-O0 -g") + +IF("${ARCH}" STREQUAL "arm") + ADD_DEFINITIONS("-DTARGET") + MESSAGE("add -DTARGET") +ENDIF("${ARCH}" STREQUAL "arm") + +ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"") +ADD_DEFINITIONS("-DSLP_DEBUG") +ADD_DEFINITIONS("-fpie") + +SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -Wl,--rpath=/usr/lib") + +ADD_LIBRARY(${SETTING_DISPLAY_UG} SHARED + ./src/setting-display.c + ./src/setting-display-main.c + ##./src/setting-display-backlight.c + ./src/setting-display-brightness.c + ./src/setting-display-wallpaper.c + ./src/setting-display-screen-mode.c + ) + +TARGET_LINK_LIBRARIES(${SETTING_DISPLAY_UG} -L${CMAKE_BINARY_DIR}/${SETTING_COMMON} -lsetting-common) +TARGET_LINK_LIBRARIES(${SETTING_DISPLAY_UG} ${pkgs_display_LDFLAGS}) + +INSTALL(TARGETS ${SETTING_DISPLAY_UG} DESTINATION /usr/ug/lib) diff --git a/setting-display/include/setting-display-brightness.h b/setting-display/include/setting-display-brightness.h new file mode 100755 index 0000000..cec3aa5 --- /dev/null +++ b/setting-display/include/setting-display-brightness.h @@ -0,0 +1,38 @@ +/* + * setting + * Copyright (c) 2012 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef __SETTING_DISPLAY_BRIGHTNESS_H__ +#define __SETTING_DISPLAY_BRIGHTNESS_H__ + +#include <setting-display.h> + + +static void setting_display_brightness_click_softkey_cancel_cb(void *data, + Evas_Object * + obj, void + *event_info); +static void setting_display_brightness_chk_btn_cb(void *data, Evas_Object *obj, + void *event_info); +static void setting_display_brightness_mouse_up_Gendial_list_cb(void *data, + Evas_Object * + obj, void + *event_info); +static void setting_display_birghtness_bright_slider_value_change_cb(void *data, + Evas_Object + *obj, void + *event_info); + +#endif /* __SETTING_DISPLAY_BRIGHTNESS_H__ */ diff --git a/setting-display/include/setting-display-main.h b/setting-display/include/setting-display-main.h new file mode 100755 index 0000000..8d69871 --- /dev/null +++ b/setting-display/include/setting-display-main.h @@ -0,0 +1,67 @@ +/* + * setting + * Copyright (c) 2012 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef __SETTING_DISPLAY_MAIN_H__ +#define __SETTING_DISPLAY_MAIN_H__ + +#include <setting-display.h> + +/** @todo need to i18n string registration */ +#define LAUNCH_EFFECT_STR "IDS_ST_BODY_APP_OPENING_EFFECT" +#define LAUNCH_IMAGE_STR "IDS_ST_BODY_APP_OPENING_IMAGE" +#define LAUNCH_BATTERY_STR "IDS_ST_BODY_BATTERY_PERCENTAGE_ABB" + +#define KeyStr_AdjustScreenTone "IDS_ST_MBODY_AUTO_ADJUST_SCREEN_TONE" +#define KeyStr_AdjustScreenTone_Dsc "IDS_ST_BODY_SAVE_POWER_BY_ADJUSTING_SCREEN_TONE_ACCORDING_TO_ANALYSIS_OF_IMAGES" + +#define LAUNCH_BATTERY_DESC "IDS_ST_BODY_SHOWS_BATTERY_PERCENTAGE_ON_INDICATOR" + +#define SETTING_DISPLAY_TIME_15_SEC_STR "IDS_ST_BODY_15SEC" +#define SETTING_DISPLAY_TIME_30_SEC_STR "IDS_ST_BODY_30SEC" +#define SETTING_DISPLAY_TIME_1_MIN_STR "IDS_COM_BODY_1_MINUTE" + +#define SETTING_DISPLAY_TIME_2_MIN_STR "IDS_ST_BODY_2_MINUTES" +#define SETTING_DISPLAY_TIME_5_MIN_STR "IDS_ST_BODY_5_MINUTES" +#define SETTING_DISPLAY_TIME_10_MIN_STR "IDS_ST_BODY_10_MINUTES" + +static void setting_display_main_battery_chk_btn_cb(void *data, + Evas_Object *obj, + void *event_info); +static void setting_display_main_auto_adjust_chk_btn_cb(void *data, Evas_Object *obj, void *event_info); +static void setting_display_main_mouse_up_Gendial_list_cb(void *data, + Evas_Object *obj, + void *event_info); +static void setting_display_main_click_softkey_back_cb(void *data, + Evas_Object *obj, + void *event_info); +#if OPENING_EFFECT +static void setting_display_main_launch_effect_chk_btn_cb(void *data, + Evas_Object *obj, + void *event_info); +#endif +#ifdef UNUSED_VCONFKEY +static void setting_display_main_launch_image_chk_btn_cb(void *data, + Evas_Object *obj, + void *event_info); +#endif +#if OPENING_EFFECT +static Ecore_X_Window setting_display_main_effect_get_root(Evas_Object * + win_main); + +static void setting_display_main_effect_set_value(void *data); +#endif + +#endif /* __SETTING_DISPLAY_MAIN_H__ */ diff --git a/setting-display/include/setting-display-screen-mode.h b/setting-display/include/setting-display-screen-mode.h new file mode 100755 index 0000000..b85555c --- /dev/null +++ b/setting-display/include/setting-display-screen-mode.h @@ -0,0 +1,27 @@ +/* + * setting + * Copyright (c) 2012 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef __SETTING_DISPLAY_SCREEN_MODE_H__ +#define __SETTING_DISPLAY_SCREEN_MODE_H__ + +#include <setting-display.h> + + +static void +setting_display_screen_mode_click_softkey_back_cb(void *data, Evas_Object *obj, + void *event_info); + +#endif /* __SETTING_DISPLAY_MAIN_H__ */ diff --git a/setting-display/include/setting-display-wallpaper.h b/setting-display/include/setting-display-wallpaper.h new file mode 100755 index 0000000..26d3c4c --- /dev/null +++ b/setting-display/include/setting-display-wallpaper.h @@ -0,0 +1,30 @@ +/* + * setting + * Copyright (c) 2012 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef __SETTING_DISPLAY_WALLPAPER_H__ +#define __SETTING_DISPLAY_WALLPAPER_H__ + +#include <setting-display.h> + +#define SETTING_WALLPAPER_HOME_AND_LOCK_SCREEN "IDS_ST_BODY_HOME_AND_LOCK_SCREEN_WALLPAPER" +#define SETTING_WALLPAPER_HOME_SCREEN_CHANGED "Home screen changed" +#define SETTING_WALLPAPER_LOCK_SCREEN_CHANGED "Lock screen changed" +#define SETTING_WALLPAPER_HOME_AND_LOCK_SCREEN_CHANGED "Home screen and Lock screen changed" + +static void setting_display_wallpaper_click_softkey_cancel_cb(void *data, + Evas_Object *obj, + void *event_info); +#endif /* __SETTING_DISPLAY_WALLPAPER_H__ */ diff --git a/setting-display/include/setting-display.h b/setting-display/include/setting-display.h new file mode 100755 index 0000000..df05e6e --- /dev/null +++ b/setting-display/include/setting-display.h @@ -0,0 +1,133 @@ +/* + * setting + * Copyright (c) 2012 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#ifndef __SETTING_DISPLAY_H__ +#define __SETTING_DISPLAY_H__ + +#include <stdio.h> +#include <string.h> + +#include <Elementary.h> + + +#include <glib-object.h> + +#include <setting-common-draw-widget.h> +#include <setting-common-view.h> + +#include <device.h> +#include <devman_image.h> + +#define Keystr_SmartScreen "IDS_ST_MBODY_SMART_SCREEN" +#define Keystr_ScreenMode "IDS_ST_BODY_SCREEN_MODE" +#define Keystr_Dynamic "IDS_ST_BODY_DYNAMIC_T_DISPLAY_EFFECT" +#define Keystr_Standard "IDS_ST_BODY_STANDARD_T_DISPLAY_EFFECT" +#define Keystr_Natural "IDS_ST_BODY_NATURAL_T_DISPLAY_EFFECT" +#define Keystr_Movie "IDS_ST_BODY_MOVIE_T_DISPLAY_EFFECT" + +typedef enum { + WALLPAPER_CUR_SEL_NONE = 0, + WALLPAPER_CUR_SEL_HOME_SCREEN, + WALLPAPER_CUR_SEL_LOCK_SCREEN, + WALLPAPER_CUR_SEL_HOME_AND_LOCK_SCREEN +} Wallpaper_Cur_Sel; + +typedef struct _SettingDisplayUG SettingDisplayUG; + +#define OPENING_EFFECT 0 +#define BRIGHTNESS_DISPLAY 0 + +/** + * Setting Display UG context + * all UG function has void* as an agument. this is casted back to SettingDisplayUG + * and the functions access app context. + */ +struct _SettingDisplayUG { + ui_gadget_h ug; + + /* add more variables here (move your appdata to here) */ + Evas *evas; + Evas_Object *win_main_layout; + Evas_Object *win_get; + + ui_gadget_h ug_loading; + + Evas_Object *ly_main; + Evas_Object *ly_wall; + + Evas_Object *navi_bar; /* for navigation effect */ + + Setting_GenGroupItem_Data *data_screen_mode; + Setting_GenGroupItem_Data *data_br; + Setting_GenGroupItem_Data *data_back; + Setting_GenGroupItem_Data *data_br_auto; + Setting_GenGroupItem_Data *data_br_sli; + +#if OPENING_EFFECT + Setting_GenGroupItem_Data *data_launch_effect; +#endif + + Setting_GenGroupItem_Data *data_launch_image; + Setting_GenGroupItem_Data *data_battery; + + Setting_GenGroupItem_Data *data_auto_adjust_scrn_tone; + + // for wallpaper + Wallpaper_Cur_Sel cur_sel; + Evas_Object *view_layout; + Evas_Object *selInfoPop; + Evas_Object *selInfoPop_layout; + Setting_GenGroupItem_Data *data_home_screen; + Setting_GenGroupItem_Data *data_lock_screen; + Setting_GenGroupItem_Data *data_home_lock_screen; + + //int bright_value; + int low_bat; + + setting_view *view_to_load; + + Evas_Object *popup_chk; + Evas_Object *popup; + + Elm_Genlist_Item_Class itc_2text_2; + Elm_Genlist_Item_Class itc_1text_1icon; + Elm_Genlist_Item_Class itc_seperator; + Elm_Genlist_Item_Class itc_2text_3_parent; + Elm_Genlist_Item_Class itc_1icon_1text_sub; + Elm_Genlist_Item_Class itc_1text; + Elm_Genlist_Item_Class itc_screen_mode; + + ui_gadget_h ug_gallery; + ui_gadget_h ug_imageviewer; + Eina_Bool wallpaper_changed; + + Setting_GenGroupItem_Data *data_backlight_1min; + Setting_GenGroupItem_Data *data_backlight_2min; + Setting_GenGroupItem_Data *data_backlight_5min; + Setting_GenGroupItem_Data *data_backlight_10min; + //Improve response speed + Ecore_Idler *set_idler; +}; + +extern setting_view setting_view_display_main; +extern setting_view setting_view_display_brightness; +extern setting_view setting_view_display_wallpaper; +extern setting_view setting_view_display_screen_mode; + +void setting_display_layout_ug_cb(ui_gadget_h ug, enum ug_mode mode, + void *priv); + +#endif /* __SETTING_DISPLAY_H__ */ diff --git a/setting-display/src/setting-display-brightness.c b/setting-display/src/setting-display-brightness.c new file mode 100755 index 0000000..91bef92 --- /dev/null +++ b/setting-display/src/setting-display-brightness.c @@ -0,0 +1,558 @@ +/* + * setting + * Copyright (c) 2012 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <setting-display-brightness.h> +#define DISABLE_LOW_BATERY_CHANGE 0 //disable user to set the brightness when the Mobile is low battery. + +#define Left_Bright_Icon IMG_BRIGTHNESS_LEFT +#define Right_Bright_Icon IMG_BRIGHTNESS_RIGHT +#define SUPPORT_DISPLAY_HOMESCREEN_IMAGE 0 + +static int setting_display_brightness_create(void *cb); +static int setting_display_brightness_destroy(void *cb); +static int setting_display_brightness_update(void *cb); +static int setting_display_brightness_cleanup(void *cb); + +static void setting_display_set_slider_value(void* data, Evas_Object *obj, double value); + +setting_view setting_view_display_brightness = { + .create = setting_display_brightness_create, + .destroy = setting_display_brightness_destroy, + .update = setting_display_brightness_update, + .cleanup = setting_display_brightness_cleanup, +}; + +static void __toggle_automatic_chk(void* data, int chk_status); + +/* *************************************************** + * + *basic func + * + ***************************************************/ +#define LOW_BATTERY_NOTIFY "Battery is too low, you cannot change brightness" +#define NORMAL_BATTERY_NOTIFY "Battery becomes normal, now you can change brightness.." + +#if DISABLE_LOW_BATERY_CHANGE +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; + + 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; +} + +// low battery +static void setting_display_brightness_lowbat_cb(keynode_t *key, void* data) +{ +// SETTING_TRACE_BEGIN; + ret_if(data == NULL); + SettingDisplayUG *ad = (SettingDisplayUG *) data; + SETTING_TRACE_BEGIN; + + char* vconf_key = vconf_keynode_get_name(key); + SETTING_TRACE("the value of [ %s ] just changed", vconf_key); + 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); + 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 + { + if (ad->data_br_sli) setting_enable_genlist_item(ad->data_br_sli->item); + } + } + } +} +#endif + +static void __display_int_vconf_cb(keynode_t *key, void *data) +{ + SettingDisplayUG *ad = data; + retm_if(!data, "Invalid argument: data is NULL"); + + int status = vconf_keynode_get_int(key); + char *vconf_name = vconf_keynode_get_name(key); + SETTING_TRACE("Enter %s(%s=%d)", __FUNCTION__, vconf_name, status); + + if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_LCD_BRIGHTNESS)) { + if (ad->data_br_sli) + { + elm_slider_value_set(ad->data_br_sli->eo_check, status); + } + } + else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_BRIGHTNESS_AUTOMATIC_INT)) { + if (status) + { + if (ad->data_br_auto) + elm_check_state_set(ad->data_br_auto->eo_check, 1); + + if (ad->data_br_sli) + setting_disable_genlist_item(ad->data_br_sli->item); + } + else + { + if (ad->data_br_auto) + elm_check_state_set(ad->data_br_auto->eo_check, 0); + + if (ad->data_br_sli) + setting_enable_genlist_item(ad->data_br_sli->item); + } + } + return; +} + +static int setting_display_brightness_create(void *cb) +{ + SETTING_TRACE_BEGIN; + retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER); + + SettingDisplayUG *ad = (SettingDisplayUG *) cb; + + Evas_Object *genlist = elm_genlist_add(ad->win_main_layout); + elm_object_style_set(genlist, "dialogue"); + retvm_if(genlist == NULL, SETTING_RETURN_FAIL, "Cannot set scroller object as contento of layout"); + elm_genlist_clear(genlist); /* first to clear list */ + + /* add basic layout */ + if (&setting_view_display_brightness == ad->view_to_load) { + ad->ly_main = + setting_create_layout_navi_bar(ad->win_main_layout, + ad->win_get, + _(KeyStr_Brightness), + _("IDS_COM_BODY_BACK"), + NULL, NULL, + setting_display_brightness_click_softkey_cancel_cb, + NULL, NULL, ad, + genlist, + &ad->navi_bar, NULL); + } else { + setting_push_layout_navi_bar(_(KeyStr_Brightness), + _("IDS_COM_BODY_BACK"), NULL, NULL, + setting_display_brightness_click_softkey_cancel_cb, + NULL, + NULL, ad, genlist, ad->navi_bar, 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 + 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 (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 = + setting_create_Gendial_field_def(genlist, &(ad->itc_1text_1icon), + setting_display_brightness_mouse_up_Gendial_list_cb, + ad, SWALLOW_Type_1TOGGLE, NULL, + NULL, auto_value, + "IDS_COM_BODY_AUTOMATIC", NULL, + setting_display_brightness_chk_btn_cb); + if (ad->data_br_auto) { + ad->data_br_auto->userdata = ad; + } else { + SETTING_TRACE_ERROR("ad->data_br_auto is NULL"); + } + + + /* check manual */ + 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 = + setting_create_Gendial_field_def(genlist, &(itc_1icon), NULL, + NULL, SWALLOW_Type_LAYOUT_SLIDER, + Left_Bright_Icon, + Right_Bright_Icon, value, NULL, + NULL, + setting_display_birghtness_bright_slider_value_change_cb); + + if (ad->data_br_sli) { + ad->data_br_sli->win_main = ad->win_main_layout; + 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 = 100; + ad->data_br_sli->userdata = ad; + + if (auto_value) { + setting_disable_genlist_item(ad->data_br_sli->item); + } + + } else { + SETTING_TRACE_ERROR("ad->data_br_sli is NULL"); + } + #if DISABLE_LOW_BATERY_CHANGE + 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); + #endif + + vconf_notify_key_changed(VCONFKEY_SETAPPL_LCD_BRIGHTNESS, __display_int_vconf_cb, ad); + vconf_notify_key_changed(VCONFKEY_SETAPPL_BRIGHTNESS_AUTOMATIC_INT, __display_int_vconf_cb, ad); + setting_view_display_brightness.is_create = 1; + return SETTING_RETURN_SUCCESS; +} + +static int setting_display_brightness_destroy(void *cb) +{ + SETTING_TRACE_BEGIN; + + /* error check */ + retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER); +#if DISABLE_LOW_BATERY_CHANGE + /* low battery handler - registration */ + vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, setting_display_brightness_lowbat_cb); +#endif + vconf_ignore_key_changed(VCONFKEY_SETAPPL_LCD_BRIGHTNESS, __display_int_vconf_cb); + vconf_ignore_key_changed(VCONFKEY_SETAPPL_BRIGHTNESS_AUTOMATIC_INT, __display_int_vconf_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; +} + +static int setting_display_brightness_update(void *cb) +{ + SETTING_TRACE_BEGIN; + return SETTING_RETURN_SUCCESS; + +} + +static int setting_display_brightness_cleanup(void *cb) +{ + SETTING_TRACE_BEGIN; + /* error check */ + retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER); + setting_display_brightness_destroy(cb); + + return SETTING_RETURN_SUCCESS; +} + +/* *************************************************** + * + *general func + * + ***************************************************/ + +/* *************************************************** + * + *call back func + * + ***************************************************/ + +static void +setting_display_brightness_click_softkey_cancel_cb(void *data, + Evas_Object *obj, + void *event_info) +{ + SETTING_TRACE_BEGIN; + /* error check */ + retm_if(data == NULL, "Data parameter is NULL"); + SettingDisplayUG *ad = (SettingDisplayUG *) data; + if (&setting_view_display_brightness == ad->view_to_load) { + /* Send destroy request */ + ug_destroy_me(ad->ug); + return; + } + + setting_view_change(&setting_view_display_brightness, + &setting_view_display_main, ad); +} + +/** + * toggle handler for 'Automatic' + */ +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 + #if DISABLE_LOW_BATERY_CHANGE + //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; + } + + // in case of CRITICAL 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); + } + 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; + } + + /* call brightness API */ + ret = device_set_brightness_to_settings(BRIGHTNESS_DISPLAY, value); + /* TODO error handling here */ + } + #else + 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; + } + #endif + } +} + +static void +setting_display_brightness_chk_btn_cb(void *data, Evas_Object *obj, + void *event_info) +{ + SETTING_TRACE_BEGIN; + /* error check */ + retm_if(data == NULL, "Data parameter is NULL"); + Setting_GenGroupItem_Data *list_item = + (Setting_GenGroupItem_Data *) data; + SettingDisplayUG *ad = list_item->userdata; + list_item->chk_status = elm_check_state_get(obj); /* for genlist update status */ + + // enable /disable toggle button + __toggle_automatic_chk(ad, list_item->chk_status); + return; +} + +/** + * [UI] 'Automatic' toggle + */ +static void setting_display_brightness_mouse_up_Gendial_list_cb(void *data, + Evas_Object * obj, + void *event_info) +{ + /* error check */ + retm_if(event_info == NULL, "Invalid argument: event info is NULL"); + retm_if(data == NULL, "Invalid argument: data is NULL"); + SettingDisplayUG *ad = data; + + Elm_Object_Item *item = (Elm_Object_Item *) event_info; + elm_genlist_item_selected_set(item, 0); + Setting_GenGroupItem_Data *list_item = + (Setting_GenGroupItem_Data *) elm_object_item_data_get(item); + + int old_status = elm_check_state_get(list_item->eo_check); + /* new status */ + list_item->chk_status = !old_status; + elm_check_state_set(list_item->eo_check, list_item->chk_status); + + // enable /disable toggle button + __toggle_automatic_chk(ad,list_item->chk_status); +} + +static void setting_display_set_slider_value(void* data, Evas_Object *obj, double value) + +{ + SETTING_TRACE_BEGIN; + retm_if(data == NULL, "Invalid argument: data is NULL"); + + SettingDisplayUG *ad = data; + int ret, err; + ret = device_set_brightness_to_settings(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_to_settings : failed[ret=%d]", ret); + //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); + } +} + +static Eina_Bool __set_brightness_on_idle(void *data) +{ + SETTING_TRACE_BEGIN; + SettingDisplayUG *ad = (SettingDisplayUG *) data; + if (!ad || !ad->data_br_sli || !ad->data_br_sli->eo_check) + { + SETTING_TRACE_ERROR("!ad || !ad->data_br_sli || !ad->data_br_sli->eo_check"); + if (ad) + ad->set_idler = NULL; + return FALSE; + } + //Get the current real value of slider + Evas_Object *obj = ad->data_br_sli->eo_check; + double val = elm_slider_value_get(obj); + int value = (int)(val + 0.5); + SETTING_TRACE("val:%f", val); + SETTING_TRACE("value:%d", value); + setting_display_set_slider_value(ad, obj, value); + //After return False, the idler will be deleted directly,so here set ad->set_idler as NULL directly. + ad->set_idler = NULL; + return FALSE; +} + +static void +setting_display_birghtness_bright_slider_value_change_cb(void *data, + Evas_Object *obj, + void *event_info) +{ + SETTING_TRACE_BEGIN; + retm_if(data == NULL, "Data parameter is NULL"); + int value = 0; + static int old_val = -1; + SettingDisplayUG *ad = NULL; + Setting_GenGroupItem_Data *list_item = + (Setting_GenGroupItem_Data *) data; + ad = list_item->userdata; + + value = elm_check_state_get(ad->data_br_auto->eo_check); + if (value == 1) { /* it is automatic setting mode, */ + /* do nothing */ + return; + } + + 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); + if (value != old_val) + { + //setting_display_set_slider_value(ad, obj, value); + if(isEmulBin()) + { + SETTING_TRACE("It is in Emulator, need special process to improve the performence"); + if (ad->set_idler) { + ecore_idler_del(ad->set_idler); + ad->set_idler = NULL; + } + ad->set_idler = ecore_idler_add((Ecore_Task_Cb) __set_brightness_on_idle, ad); + } + else + { + SETTING_TRACE("It is in Real Target, Set the brightness directly."); + setting_display_set_slider_value(ad, obj, value); + } + old_val = value; + } +} + + diff --git a/setting-display/src/setting-display-main.c b/setting-display/src/setting-display-main.c new file mode 100755 index 0000000..b3cb2ed --- /dev/null +++ b/setting-display/src/setting-display-main.c @@ -0,0 +1,612 @@ +/* + * setting + * Copyright (c) 2012 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include <setting-display-main.h> +#include <Ecore_X.h> + + +static int setting_display_main_create(void *cb); +static int setting_display_main_destroy(void *cb); +static int setting_display_main_update(void *cb); +static int setting_display_main_cleanup(void *cb); + +setting_view setting_view_display_main = { + .create = setting_display_main_create, + .destroy = setting_display_main_destroy, + .update = setting_display_main_update, + .cleanup = setting_display_main_cleanup, +}; + +static char* str_in_arr[] = {"Dynamic", "Standard", "Natural", "Movie"}; +static char* str_out_arr[] = {Keystr_Dynamic, Keystr_Standard, Keystr_Natural, Keystr_Movie}; + + +/* *************************************************** + * + *basic func + * + ***************************************************/ +static void +__setting_display_main_exp_cb(void *data, Evas_Object *obj, void *event_info) +{ + ret_if(NULL == data || NULL == event_info); + SETTING_TRACE_BEGIN; + SettingDisplayUG *ad = (SettingDisplayUG *) data; + Elm_Object_Item *parentItem = event_info; /* parent item */ + Setting_GenGroupItem_Data *data_parentItem = elm_object_item_data_get(parentItem); /* parent data */ + Evas_Object *scroller = elm_object_item_widget_get(parentItem); + + Evas_Object *rgd; + if (data_parentItem == ad->data_back) { + rgd = elm_radio_add(scroller); + elm_radio_value_set(rgd, -1); + + setting_create_Gendial_exp_sub_field(scroller, + &(ad->itc_1icon_1text_sub), + NULL, NULL, parentItem, + SWALLOW_Type_1RADIO, rgd, + 15, /* 15 sec */ + SETTING_DISPLAY_TIME_15_SEC_STR, NULL); + + setting_create_Gendial_exp_sub_field(scroller, + &(ad->itc_1icon_1text_sub), + NULL, NULL, parentItem, + SWALLOW_Type_1RADIO, rgd, + 30, /* 30 sec */ + SETTING_DISPLAY_TIME_30_SEC_STR, NULL); + + ad->data_backlight_1min = setting_create_Gendial_exp_sub_field(scroller, + &(ad->itc_1icon_1text_sub), + NULL, NULL, parentItem, + SWALLOW_Type_1RADIO, rgd, + 60, /* 60 sec */ + SETTING_DISPLAY_TIME_1_MIN_STR, NULL); + + ad->data_backlight_2min = setting_create_Gendial_exp_sub_field(scroller, + &(ad->itc_1icon_1text_sub), + NULL, NULL, parentItem, + SWALLOW_Type_1RADIO, rgd, + 120, /* 2min */ + SETTING_DISPLAY_TIME_2_MIN_STR, NULL); + + ad->data_backlight_5min = setting_create_Gendial_exp_sub_field(scroller, + &(ad->itc_1icon_1text_sub), + NULL, NULL, parentItem, + SWALLOW_Type_1RADIO, rgd, + 300, /* 5min */ + SETTING_DISPLAY_TIME_5_MIN_STR, NULL); + + ad->data_backlight_10min = setting_create_Gendial_exp_sub_field(scroller, + &(ad->itc_1icon_1text_sub), + NULL, NULL, parentItem, + SWALLOW_Type_1RADIO, rgd, + 600, /* 10min */ + SETTING_DISPLAY_TIME_10_MIN_STR, NULL); + + setting_update_chk_status(rgd, + data_parentItem->int_slp_setting_binded); + + } +} +#if !SUPPOR_SEPARATE_BRIGHTNESS +// low battery +static void setting_display_main_lowbat_cb(keynode_t *key, void* data) +{ + ret_if(data == NULL); + SettingDisplayUG *ad = (SettingDisplayUG *) data; + SETTING_TRACE_BEGIN; + ret_if(ad->data_br == NULL); + + 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; + + if (battery_value < VCONFKEY_SYSMAN_BAT_WARNING_LOW) + { + elm_slider_value_set(ad->data_br->eo_check, 1); + // disabled + setting_disable_genlist_item(ad->data_br->item); + } else { + setting_enable_genlist_item(ad->data_br->item); + } + return; +} +#endif + +static int setting_display_main_create(void *cb) +{ + SETTING_TRACE_BEGIN; + /* error check */ + retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER); + + SettingDisplayUG *ad = (SettingDisplayUG *) cb; + + Evas_Object *scroller = NULL; + + /* add basic layout */ + char setBtnStr[MAX_DISPLAY_NAME_LEN_ON_UI]; + snprintf(setBtnStr, sizeof(setBtnStr), "%s", + (char *)dgettext("sys_string", "IDS_COM_BODY_BACK")); + + ad->ly_main = + setting_create_layout_navi_bar_genlist(ad->win_main_layout, + ad->win_get, + _(KeyStr_Display), setBtnStr, + NULL, + setting_display_main_click_softkey_back_cb, + NULL, ad, &scroller, + &(ad->navi_bar)); + setting_enable_expandable_genlist(scroller, ad, + __setting_display_main_exp_cb, NULL); + + Elm_Object_Item *item = NULL;; + + item = + elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL, + ELM_GENLIST_ITEM_NONE, NULL, NULL); + elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); + + int value = 0; + int ret = 0; + + if (!isEmulBin()) { + char *curmode = vconf_get_str(VCONFKEY_SETAPPL_SCREENMODE_SELNAME); + SETTING_TRACE(">>> CUR SCREEN MODE : %s ", curmode); + + int i = 0; + for (; i < sizeof(str_in_arr)/sizeof(str_in_arr[0]); i++) { + if (0 == safeStrCmp(str_in_arr[i], curmode)) { + ad->data_screen_mode = setting_create_Gendial_field_def(scroller, &(itc_2text_3), + setting_display_main_mouse_up_Gendial_list_cb, + ad, SWALLOW_Type_INVALID, NULL, + NULL, 0, Keystr_ScreenMode, + _(str_out_arr[i]), NULL); + if (ad->data_screen_mode) { + ad->data_screen_mode->userdata = ad; + } else { + SETTING_TRACE_ERROR("ad->data_screen_mode is NULL"); + } + break; + } + } + + item = + elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL, + ELM_GENLIST_ITEM_NONE, NULL, NULL); + elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); + + #if !SUPPOR_SEPARATE_BRIGHTNESS + /* BRIGHTNESS */ + ad->data_br = + setting_create_Gendial_field_def(scroller, &(ad->itc_2text_2), + setting_display_main_mouse_up_Gendial_list_cb, + ad, SWALLOW_Type_INVALID, NULL, + NULL, 0, "IDS_COM_OPT_BRIGHTNESS", + get_brightness_mode_str(), NULL); + if (ad->data_br) { + ad->data_br->userdata = ad; + } else { + SETTING_TRACE_ERROR("ad->data_br is NULL"); + } + #endif + + ret = vconf_get_bool(VCONFKEY_SETAPPL_BOOL_AUTO_ADJUST_SCREEN_TONE, &value); + ad->data_auto_adjust_scrn_tone = + setting_create_Gendial_field_def(scroller, &(ad->itc_1text_1icon), + setting_display_main_mouse_up_Gendial_list_cb, + ad, SWALLOW_Type_1TOGGLE, NULL, + NULL, value, KeyStr_AdjustScreenTone, + NULL, + setting_display_main_auto_adjust_chk_btn_cb); + if (ad->data_auto_adjust_scrn_tone) { + ad->data_auto_adjust_scrn_tone->userdata = ad; + } else { + SETTING_TRACE_ERROR("ad->data_battery is NULL"); + } + + setting_create_Gendial_field_def(scroller, &itc_multiline_text, NULL, + ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X, + NULL, NULL, 0, KeyStr_AdjustScreenTone_Dsc, NULL, NULL); + + elm_genlist_item_select_mode_set(elm_genlist_item_append(scroller, &(itc_seperator), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL), + ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); + } + + /* BACKLIGHTTIME */ + char* pa_backlight_time = get_pa_backlight_time_str(); + ad->data_back = + setting_create_Gendial_exp_parent_field(scroller, + &(ad->itc_2text_3_parent), + NULL, NULL, + SWALLOW_Type_INVALID, + KeyStr_BacklightTime, + pa_backlight_time); + +#if SUPPORT_LCD_TIMEOUT_KEEPING + if (ad->data_back) { + ad->data_back->int_slp_setting_binded = + INT_SLP_SETTING_LCD_TIMEOUT_NORMAL_BACKUP; + } else { + SETTING_TRACE_ERROR("ad->data_back is NULL"); + } +#else + if (ad->data_back) { + ad->data_back->int_slp_setting_binded = + INT_SLP_SETTING_LCD_TIMEOUT_NORMAL; + } else { + SETTING_TRACE_ERROR("ad->data_back is NULL"); + } +#endif + G_FREE(pa_backlight_time); + + /* add separator */ + item = + elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL, + ELM_GENLIST_ITEM_NONE, NULL, NULL); + elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); + + /* setting_get_bool_slp_key(BOOL_SLP_SETTING_AUTOMATIC_BRIGHTNESS, &auto_value, &err); */ + value = 0; + vconf_get_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, &value); + ad->data_battery = + setting_create_Gendial_field_def(scroller, &(ad->itc_1text_1icon), + setting_display_main_mouse_up_Gendial_list_cb, + ad, SWALLOW_Type_1TOGGLE, NULL, + NULL, value, LAUNCH_BATTERY_STR, + NULL, + setting_display_main_battery_chk_btn_cb); + if (ad->data_battery) { + ad->data_battery->userdata = ad; + } else { + SETTING_TRACE_ERROR("ad->data_battery is NULL"); + } + + setting_create_Gendial_field_def(scroller, &itc_multiline_text, NULL, + ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X, + NULL, NULL, 0, LAUNCH_BATTERY_DESC, NULL, NULL); + +#if OPENING_EFFECT + elm_genlist_item_select_mode_set(elm_genlist_item_append(scroller, &(itc_seperator), NULL, NULL,ELM_GENLIST_ITEM_NONE, NULL, NULL), + ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); + + /* add separator */ + item = + elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL, + ELM_GENLIST_ITEM_NONE, NULL, NULL); + elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); + + /* Launch Effect - Opening Effect */ + int launch_effect_value = 0; + Ecore_X_Window root = 0; + Ecore_X_Atom effect_enable_atom = 0; + + root = setting_display_main_effect_get_root(ad->win_main_layout); + effect_enable_atom = ecore_x_atom_get("_NET_CM_EFFECT_ENABLE"); + + if (root) { + ecore_x_window_prop_card32_get(root, effect_enable_atom, + (unsigned int *) + &launch_effect_value, 1); + } + ad->data_launch_effect = + setting_create_Gendial_field_def(scroller, &(ad->itc_1text_1icon), + setting_display_main_mouse_up_Gendial_list_cb, + ad, SWALLOW_Type_1TOGGLE, NULL, + NULL, launch_effect_value, + LAUNCH_EFFECT_STR, NULL, + setting_display_main_launch_effect_chk_btn_cb); + if (ad->data_launch_effect) { + ad->data_launch_effect->userdata = ad; + } else { + SETTING_TRACE_ERROR("ad->data_launch_effect is NULL"); + } +#endif + /* Launch Image on/off */ + ret = SETTING_RETURN_FAIL; +#ifdef UNUSED_VCONFKEY + int launch_image_value; + int err; + /* value set */ + ret = setting_get_bool_slp_key(BOOL_SLP_SETTING_LAUNCH_IMAGE, + &launch_image_value, &err); + ad->data_launch_image = + setting_create_Gendial_field_def(scroller, &(ad->itc_1text_1icon), + setting_display_main_mouse_up_Gendial_list_cb, + ad, SWALLOW_Type_1TOGGLE, NULL, + NULL, launch_image_value, + LAUNCH_IMAGE_STR, NULL, + setting_display_main_launch_image_chk_btn_cb); + if (ad->data_launch_image) { + ad->data_launch_image->userdata = ad; + } else { + SETTING_TRACE_ERROR("ad->data_launch_image is NULL"); + } +#endif +#if !SUPPOR_SEPARATE_BRIGHTNESS + if (ad->data_br) { + int battery_value; + vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &battery_value); + ad->low_bat = battery_value; + + if ( battery_value < VCONFKEY_SYSMAN_BAT_WARNING_LOW ) + { + elm_slider_value_set(ad->data_br->eo_check, 1); + setting_disable_genlist_item(ad->data_br->item); + } + else + { + setting_enable_genlist_item(ad->data_br->item); + } + } + + vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, setting_display_main_lowbat_cb, ad); +#endif + + setting_view_display_main.is_create = 1; + return SETTING_RETURN_SUCCESS; +} + +static int setting_display_main_destroy(void *cb) +{ + SETTING_TRACE_BEGIN; + /* error check */ + retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER); + + SettingDisplayUG *ad = (SettingDisplayUG *) cb; +#if !SUPPOR_SEPARATE_BRIGHTNESS + // low battery handler - registration + vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, setting_display_main_lowbat_cb); +#endif + if (ad->ly_main != NULL) { + evas_object_del(ad->ly_main); + /* if(ad->back_dialData) FREE(ad->back_dialData); */ + setting_view_display_main.is_create = 0; + } + + return SETTING_RETURN_SUCCESS; +} + +static int setting_display_main_update(void *cb) +{ + SETTING_TRACE_BEGIN; + /* error check */ + retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER); + + SettingDisplayUG *ad = (SettingDisplayUG *) cb; + + if (ad->ly_main != NULL) { + evas_object_show(ad->ly_main); + if (ad->data_br) { + ad->data_br->sub_desc = + (char *)g_strdup(get_brightness_mode_str()); + elm_object_item_data_set(ad->data_br->item, ad->data_br); + elm_genlist_item_update(ad->data_br->item); + + } + + if (ad->data_screen_mode) { + char *curmode = vconf_get_str(VCONFKEY_SETAPPL_SCREENMODE_SELNAME); + SETTING_TRACE(">>> CUR SCREEN MODE : %s ", curmode); + int i = 0; + for (; i < sizeof(str_in_arr)/sizeof(str_in_arr[0]); i++) { + if (0 == safeStrCmp(str_in_arr[i], curmode)) { + ad->data_screen_mode->sub_desc = (char *)g_strdup(_(str_out_arr[i])); + break; + } + } + elm_object_item_data_set(ad->data_screen_mode->item, ad->data_screen_mode); + elm_genlist_item_update(ad->data_screen_mode->item); + } + } + + return SETTING_RETURN_SUCCESS; +} + +static int setting_display_main_cleanup(void *cb) +{ + SETTING_TRACE_BEGIN; + return SETTING_RETURN_SUCCESS; +} + +/* *************************************************** + * + *general func + * + ***************************************************/ + +static void +setting_display_main_mouse_up_Gendial_list_cb(void *data, Evas_Object *obj, + void *event_info) +{ + /* error check */ + setting_retm_if(data == NULL, "Data parameter is NULL"); + + retm_if(event_info == NULL, "Invalid argument: event info is NULL"); + Elm_Object_Item *item = (Elm_Object_Item *) event_info; + elm_genlist_item_selected_set(item, 0); + Setting_GenGroupItem_Data *list_item = + (Setting_GenGroupItem_Data *) elm_object_item_data_get(item); + + SettingDisplayUG *ad = (SettingDisplayUG *) data; + + SETTING_TRACE("clicking item[%s]", _(list_item->keyStr)); + + if (!safeStrCmp("IDS_COM_OPT_BRIGHTNESS", list_item->keyStr)) { + setting_view_change(&setting_view_display_main, + &setting_view_display_brightness, ad); + } + else if (!safeStrCmp(KeyStr_AdjustScreenTone, list_item->keyStr)) { + int old_status = elm_check_state_get(list_item->eo_check); + /* new status */ + list_item->chk_status = !old_status; + elm_check_state_set(list_item->eo_check, list_item->chk_status); + vconf_set_bool(VCONFKEY_SETAPPL_BOOL_AUTO_ADJUST_SCREEN_TONE, list_item->chk_status); + } +#if OPENING_EFFECT + else if (!safeStrCmp(LAUNCH_EFFECT_STR, list_item->keyStr)) { + int old_status = elm_check_state_get(list_item->eo_check); + /* new status */ + list_item->chk_status = !old_status; + elm_check_state_set(list_item->eo_check, list_item->chk_status); + + setting_display_main_effect_set_value(list_item); + } +#endif +#ifdef UNUSED_VCONFKEY + else if (!safeStrCmp(LAUNCH_IMAGE_STR, list_item->keyStr)) { + int old_status = elm_check_state_get(list_item->eo_check); + /* new status */ + list_item->chk_status = !old_status; + elm_check_state_set(list_item->eo_check, list_item->chk_status); + + int err; + setting_set_bool_slp_key(BOOL_SLP_SETTING_LAUNCH_IMAGE, + list_item->chk_status, &err); + } +#endif + else if (!safeStrCmp(LAUNCH_BATTERY_STR, list_item->keyStr)) { + int old_status = elm_check_state_get(list_item->eo_check); + /* new status */ + list_item->chk_status = !old_status; + elm_check_state_set(list_item->eo_check, list_item->chk_status); + vconf_set_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, list_item->chk_status); + } + else if (!safeStrCmp(Keystr_ScreenMode, list_item->keyStr)) { + setting_view_change(&setting_view_display_main, &setting_view_display_screen_mode, ad); + } +} + +static void +setting_display_main_click_softkey_back_cb(void *data, Evas_Object *obj, + void *event_info) +{ + SETTING_TRACE_BEGIN; + /* error check */ + setting_retm_if(data == NULL, + "[Setting > Display] Data parameter is NULL"); + + SettingDisplayUG *ad = (SettingDisplayUG *) data; + + /* Send destroy request */ + ug_destroy_me(ad->ug); + SETTING_TRACE_END; + +} + +static void setting_display_main_auto_adjust_chk_btn_cb(void *data, Evas_Object *obj, void *event_info) +{ + SETTING_TRACE_BEGIN; + /* error check */ + retm_if(data == NULL, "Data parameter is NULL"); + Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data; + + list_item->chk_status = elm_check_state_get(obj); /* for genlist update status */ + vconf_set_bool(VCONFKEY_SETAPPL_BOOL_AUTO_ADJUST_SCREEN_TONE, list_item->chk_status); +} + + +static void +setting_display_main_battery_chk_btn_cb(void *data, Evas_Object *obj, + void *event_info) +{ + SETTING_TRACE_BEGIN; + /* error check */ + retm_if(data == NULL, "Data parameter is NULL"); + Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data; + + list_item->chk_status = elm_check_state_get(obj); /* for genlist update status */ + vconf_set_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, list_item->chk_status); +} + +#if OPENING_EFFECT +static void +setting_display_main_launch_effect_chk_btn_cb(void *data, Evas_Object *obj, + void *event_info) +{ + SETTING_TRACE_BEGIN; + /* error check */ + retm_if(data == NULL, "Data parameter is NULL"); + Setting_GenGroupItem_Data *list_item = + (Setting_GenGroupItem_Data *) data; + + list_item->chk_status = elm_check_state_get(obj); /* for genlist update status */ + setting_display_main_effect_set_value(list_item); + return; +} +#endif + +/* setting_display_brightness_chk_btn_cb*/ +#ifdef UNUSED_VCONFKEY +/* Fake image - launch effect*/ +static void +setting_display_main_launch_image_chk_btn_cb(void *data, Evas_Object *obj, + void *event_info) +{ + SETTING_TRACE_BEGIN; + /* error check */ + retm_if(data == NULL, "Data parameter is NULL"); + Setting_GenGroupItem_Data *list_item = + (Setting_GenGroupItem_Data *) data; + + list_item->chk_status = elm_check_state_get(obj); /* for genlist update status */ + + int err; + setting_set_bool_slp_key(BOOL_SLP_SETTING_LAUNCH_IMAGE, + list_item->chk_status, &err); +} +#endif +#if OPENING_EFFECT +static Ecore_X_Window setting_display_main_effect_get_root(Evas_Object * + win_main) +{ + Ecore_X_Window xwin = 0; + Ecore_X_Window root = 0; + + retv_if(!win_main, root); + + xwin = elm_win_xwindow_get(win_main); + retv_if(!xwin, root); + + root = ecore_x_window_root_get(xwin); + return root; +} + +static void setting_display_main_effect_set_value(void *data) +{ + Setting_GenGroupItem_Data *list_item = + (Setting_GenGroupItem_Data *) data; + SettingDisplayUG *ad = list_item->userdata; + Ecore_X_Window root = 0; + Ecore_X_Atom effect_enable_atom = 0; + unsigned int is_enable = 0; /* 0: effect disable, 1: effect enable */ + + root = setting_display_main_effect_get_root(ad->win_main_layout); + ret_if(!root); + effect_enable_atom = ecore_x_atom_get("_NET_CM_EFFECT_ENABLE"); + ret_if(!effect_enable_atom); + + if (list_item->chk_status) { + is_enable = 1; + } + + ecore_x_window_prop_card32_set(root, effect_enable_atom, &is_enable, 1); + return; +} +#endif diff --git a/setting-display/src/setting-display-screen-mode.c b/setting-display/src/setting-display-screen-mode.c new file mode 100755 index 0000000..505fe12 --- /dev/null +++ b/setting-display/src/setting-display-screen-mode.c @@ -0,0 +1,263 @@ +/* + * setting + * Copyright (c) 2012 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include <setting-display-screen-mode.h> +#include <Ecore_X.h> + +static int setting_display_screen_mode_create(void *cb); +static int setting_display_screen_mode_destroy(void *cb); +static int setting_display_screen_mode_update(void *cb); +static int setting_display_screen_mode_cleanup(void *cb); + +static char* str_in_arr[] = {"Dynamic", "Standard", "Natural", "Movie"}; +static char* str_out_arr[] = {Keystr_Dynamic, Keystr_Standard, Keystr_Natural, Keystr_Movie}; + +static void setting_display_screen_mode_mouse_up_Gendial_list_radio_cb(void *data, Evas_Object *obj, void *event_info); + +setting_view setting_view_display_screen_mode = { + .create = setting_display_screen_mode_create, + .destroy = setting_display_screen_mode_destroy, + .update = setting_display_screen_mode_update, + .cleanup = setting_display_screen_mode_cleanup, +}; + + +static Evas_Object *__gl_content_get(void *data, Evas_Object *obj, const char *part) +{ + if (!strcmp(part, "elm.icon")) { + #if 0 + Evas_Object *sub_layout = elm_layout_add(obj); + elm_layout_file_set(sub_layout, SETTING_THEME_EDJ_NAME, "screen_mode"); + evas_object_size_hint_weight_set(sub_layout, EVAS_HINT_EXPAND, 0.0); + evas_object_show(sub_layout); + + Evas_Object *image = elm_image_add(obj); + elm_image_file_set(image, IMG_SCREEN_MODE, NULL); + elm_image_resizable_set(image, EINA_TRUE, EINA_TRUE); + evas_object_show(image); + + int w = 0; + int h = 0; + elm_image_object_size_get(image, &w, &h); + setting_resize_object(image, w * WIDGET_SCALE_FACTOR, h * WIDGET_SCALE_FACTOR); + + elm_object_part_content_set(sub_layout, "content", image); + return sub_layout; + #endif + Evas_Object *image; + image = elm_image_add(obj); + elm_image_file_set(image, IMG_SCREEN_MODE, NULL); + + int w = 668; /* left padding and right padding is 26, so the width = 720 - 26 -26 */ + int h = 0; + elm_image_object_size_get(image, NULL, &h); + evas_object_size_hint_min_set(image, w * WIDGET_SCALE_FACTOR, h * WIDGET_SCALE_FACTOR); + evas_object_size_hint_max_set(image, w * WIDGET_SCALE_FACTOR, h * WIDGET_SCALE_FACTOR); + evas_object_resize(image, w * WIDGET_SCALE_FACTOR, h * WIDGET_SCALE_FACTOR); + + return image; + } + + return NULL; +} + +static void __gl_item_del(void *data, Evas_Object *obj) +{ + setting_retm_if(data == NULL, "Data parameter is NULL"); + Setting_GenGroupItem_Data *item_data = (Setting_GenGroupItem_Data *) data; + if (item_data) { + G_FREE(item_data->keyStr); + G_FREE(item_data->sub_desc); + FREE(item_data); + } +} + +/* *************************************************** + * + *basic func + * + ***************************************************/ +static int setting_display_screen_mode_create(void *cb) +{ + SETTING_TRACE_BEGIN; + /* error check */ + retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER); + + SettingDisplayUG *ad = (SettingDisplayUG *) cb; + + setting_call_back_func gl_sel_cb = NULL; + Evas_Object *genlist = NULL; + Setting_GenGroupItem_Data *item_data = NULL; + + genlist = elm_genlist_add(ad->navi_bar); + retvm_if(genlist == NULL, SETTING_RETURN_FAIL, "scroller == NULL"); + elm_object_style_set(genlist, "dialogue"); + elm_genlist_clear(genlist); /* first to clear list */ + + setting_push_layout_navi_bar(_(Keystr_ScreenMode), _("IDS_COM_BODY_BACK"), + NULL, NULL, + setting_display_screen_mode_click_softkey_back_cb, + NULL, NULL, ad, genlist, ad->navi_bar, NULL); + + Elm_Object_Item *item = elm_genlist_item_append(genlist, + &(itc_sep_line), + NULL, NULL, + ELM_GENLIST_ITEM_NONE, + NULL, NULL); + elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); + + ad->itc_screen_mode.item_style = "1icon/with_no_line"; + ad->itc_screen_mode.func.text_get = NULL; + ad->itc_screen_mode.func.content_get = __gl_content_get; + ad->itc_screen_mode.func.state_get = NULL; + ad->itc_screen_mode.func.del = __gl_item_del; + + Setting_GenGroupItem_Data *screen_mode = (Setting_GenGroupItem_Data *) calloc(1, sizeof(Setting_GenGroupItem_Data)); + setting_retvm_if(!screen_mode, SETTING_RETURN_FAIL, "calloc failed"); + + if (screen_mode) { + screen_mode->userdata = ad; + screen_mode->item = elm_genlist_item_append(genlist, &(ad->itc_screen_mode), screen_mode, NULL, + ELM_GENLIST_ITEM_NONE, NULL, NULL); + elm_genlist_item_select_mode_set(screen_mode->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); + } else { + SETTING_TRACE_ERROR("screen_mode is NULL"); + return SETTING_RETURN_FAIL; + } + + gl_sel_cb = setting_display_screen_mode_mouse_up_Gendial_list_radio_cb; + + Evas_Object *radio = elm_radio_add(genlist); + elm_radio_state_value_set(radio, -1); + + char* curmode = vconf_get_str(VCONFKEY_SETAPPL_SCREENMODE_SELNAME); + SETTING_TRACE(">>> CUR SCREEN MODE : %s ", curmode); + + int i = 0; + + for (i=0; i< sizeof(str_in_arr)/sizeof(str_in_arr[0]) ;i++) + { + item_data = setting_create_Gendial_field_1radio(genlist, + &(itc_1text_1icon_2), + gl_sel_cb, + radio, /* sel data */ + SWALLOW_Type_1RADIO, + radio, i, + str_out_arr[i], NULL); + if (item_data) { + item_data->userdata = ad; + } else { + SETTING_TRACE_ERROR("item_data is NULL"); + } + } + + // set toggle + int j; + for (j=0; j< sizeof(str_in_arr)/sizeof(str_in_arr[0]) ;j++) { + if (0 == strcmp(str_in_arr[j], curmode)) { + elm_radio_value_set(radio, j); + break; + } + } + + item = elm_genlist_item_append(genlist, &itc_bottom_seperator, NULL, NULL, + ELM_GENLIST_ITEM_NONE, NULL, NULL); + elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); + + setting_view_display_screen_mode.is_create = 1; + return SETTING_RETURN_SUCCESS; +} + +static int setting_display_screen_mode_destroy(void *cb) +{ + SETTING_TRACE_BEGIN; + /* error check */ + retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER); + + SettingDisplayUG *ad = (SettingDisplayUG *) cb; + + elm_naviframe_item_pop(ad->navi_bar); + + setting_view_display_screen_mode.is_create = 0; + + return SETTING_RETURN_SUCCESS; +} + +static int setting_display_screen_mode_update(void *cb) +{ + SETTING_TRACE_BEGIN; + /* error check */ + retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER); + + return SETTING_RETURN_SUCCESS; +} + +static int setting_display_screen_mode_cleanup(void *cb) +{ + SETTING_TRACE_BEGIN; + retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER); + + SettingDisplayUG *ad = (SettingDisplayUG *) cb; + + setting_display_screen_mode_destroy(ad); + + return SETTING_RETURN_SUCCESS; +} + +/* *************************************************** + * + *general func + * + ***************************************************/ + +static void +setting_display_screen_mode_click_softkey_back_cb(void *data, Evas_Object *obj, void *event_info) +{ + SETTING_TRACE_BEGIN; + /* error check */ + setting_retm_if(data == NULL, + "[Setting > Display] Data parameter is NULL"); + + SettingDisplayUG *ad = (SettingDisplayUG *) data; + + setting_view_change(&setting_view_display_screen_mode, &setting_view_display_main, ad); + SETTING_TRACE_END; +} + + +static void +setting_display_screen_mode_mouse_up_Gendial_list_radio_cb(void *data, Evas_Object *obj, void *event_info) +{ + SETTING_TRACE_BEGIN; + /* error check */ + setting_retm_if(data == NULL, "Data parameter is NULL"); + setting_retm_if(event_info == NULL, + "Invalid argument: event info is NULL"); + + Evas_Object *radio = (Evas_Object *) data; + Elm_Object_Item *item = (Elm_Object_Item *) event_info; + elm_genlist_item_selected_set(item, 0); + + Setting_GenGroupItem_Data *list_item = + (Setting_GenGroupItem_Data *) elm_object_item_data_get(item); + //SettingDisplayUG *ad = (SettingDisplayUG *) list_item->userdata; + + elm_radio_value_set(radio, list_item->chk_status); + vconf_set_str(VCONFKEY_SETAPPL_SCREENMODE_SELNAME, str_in_arr[list_item->chk_status]); + /* Set status to device manager */ + device_set_image_enhance_mode(list_item->chk_status); + SETTING_TRACE(">>> AFTER VCONF SET : %s ", str_in_arr[list_item->chk_status]); +} diff --git a/setting-display/src/setting-display-wallpaper.c b/setting-display/src/setting-display-wallpaper.c new file mode 100755 index 0000000..d9ca019 --- /dev/null +++ b/setting-display/src/setting-display-wallpaper.c @@ -0,0 +1,476 @@ +/* + * setting + * Copyright (c) 2012 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include <setting-display-wallpaper.h> +#include <Ecore_X.h> + +static int setting_display_wallpaper_create(void *cb); +static int setting_display_wallpaper_destroy(void *cb); +static int setting_display_wallpaper_update(void *cb); +static int setting_display_wallpaper_cleanup(void *cb); + +setting_view setting_view_display_wallpaper = { + .create = setting_display_wallpaper_create, + .destroy = setting_display_wallpaper_destroy, + .update = setting_display_wallpaper_update, + .cleanup = setting_display_wallpaper_cleanup, +}; + +#define SETTING_WALLPAPER_HOME_SCREEN "Wallpaper" // ug-image-viewer parameter +#define SETTING_WALLPAPER_LOCK_SCREEN "Lockscreen" // ug-image-viewer parameter +#define SETTING_WALLPAPER_HOME_AND_LOCK "Wallpaper & Lockscreen" // ug-image-viewer parameter +#define SETTING_WALLPAPER_POPUP_TIMER 3 +/* *************************************************** + * + *basic func + * + ***************************************************/ +#if DISABLED_CODE +static void __setting_display_wallpaper_vconf_change_cb(keynode_t *key, void *data) +{ + SETTING_TRACE_BEGIN; + setting_retm_if(data == NULL, "Data parameter is NULL"); + SettingDisplayUG *ad = (SettingDisplayUG *)data; + + char *vconf_name = vconf_keynode_get_name(key); + + if (!safeStrCmp(vconf_name, VCONFKEY_BGSET)) { + if (ad->cur_sel == WALLPAPER_CUR_SEL_LOCK_SCREEN) { + ad->cur_sel = WALLPAPER_CUR_SEL_HOME_AND_LOCK_SCREEN; + } else if (ad->cur_sel == WALLPAPER_CUR_SEL_NONE) { + ad->cur_sel = WALLPAPER_CUR_SEL_HOME_SCREEN; + } else { + /* do nothing */ + } + } else if (!safeStrCmp(vconf_name, VCONFKEY_IDLE_LOCK_BGSET)) { + if (ad->cur_sel == WALLPAPER_CUR_SEL_HOME_SCREEN) { + ad->cur_sel = WALLPAPER_CUR_SEL_HOME_AND_LOCK_SCREEN; + } else if (ad->cur_sel == WALLPAPER_CUR_SEL_NONE) { + ad->cur_sel = WALLPAPER_CUR_SEL_LOCK_SCREEN; + } else { + /* do nothing */ + } + } +} + +static int __setting_display_wallpaper_listen_vconf_change(void *data) +{ + SETTING_TRACE_BEGIN; + int ret = 0; + ret = vconf_notify_key_changed(VCONFKEY_BGSET, + __setting_display_wallpaper_vconf_change_cb, data); + setting_retvm_if(ret < 0, ret, "%s notifications Failed(%d)", (char *)VCONFKEY_BGSET, ret); + + ret = vconf_notify_key_changed(VCONFKEY_IDLE_LOCK_BGSET, + __setting_display_wallpaper_vconf_change_cb, data); + setting_retvm_if(ret < 0, ret, "%s notifications Failed(%d)", (char *)VCONFKEY_IDLE_LOCK_BGSET, ret); + return ret; +} + +static int __setting_display_wallpaper_unlisten_vconf_change() +{ + SETTING_TRACE_BEGIN; + (void)vconf_ignore_key_changed(VCONFKEY_BGSET, + __setting_display_wallpaper_vconf_change_cb); + (void)vconf_ignore_key_changed(VCONFKEY_IDLE_LOCK_BGSET, + __setting_display_wallpaper_vconf_change_cb); + return 0; +} +#endif + +static void __setting_display_wallpaper_imageviewer_ug_result_cb(ui_gadget_h ug, service_h result, void *priv) +{ + SETTING_TRACE_BEGIN; + /* error check */ + retm_if(priv == NULL, "Data parameter is NULL"); + + SettingDisplayUG *ad = (SettingDisplayUG *) priv; + + if (result) { + char *path = NULL; + switch(ad->cur_sel) { + case WALLPAPER_CUR_SEL_HOME_SCREEN: + { + service_get_extra_data(result, "homescreen_path", &path); + if (path == NULL) { + ad->wallpaper_changed = EINA_FALSE; + return; + } + break; + } + case WALLPAPER_CUR_SEL_LOCK_SCREEN: + { + service_get_extra_data(result, "lockscreen_path", &path); + if (path == NULL) { + ad->wallpaper_changed = EINA_FALSE; + return; + } + break; + } + case WALLPAPER_CUR_SEL_HOME_AND_LOCK_SCREEN: + { + service_get_extra_data(result, "homescreen_path", &path); + if (path == NULL) { + ad->wallpaper_changed = EINA_FALSE; + return; + } + service_get_extra_data(result, "lockscreen_path", &path); + if (path == NULL) { + ad->wallpaper_changed = EINA_FALSE; + return; + } + break; + } + default: + ad->wallpaper_changed = EINA_FALSE; + return; + } + + ad->wallpaper_changed = EINA_TRUE; + } +} + +static void __setting_display_wallpaper_imageviewer_ug_destroy_cb(ui_gadget_h ug, void *priv) +{ + SETTING_TRACE_BEGIN; + setting_retm_if(priv == NULL, "Data parameter is NULL"); + SettingDisplayUG *ad = (SettingDisplayUG *) priv; /* ad is point to priv */ + + if (ug) { + ug_destroy(ug); + ad->ug_imageviewer = NULL; + } + + if (ad->wallpaper_changed) { + if (ad->ug_gallery) { + ug_destroy(ad->ug_gallery); + ad->ug_gallery = NULL; + } + + char text[MAX_DISPLAY_NAME_LEN_ON_UI +1] = {0, }; + SETTING_TRACE("cur_sel = %d", ad->cur_sel); + + switch(ad->cur_sel) { + case WALLPAPER_CUR_SEL_HOME_SCREEN: + snprintf(text, MAX_DISPLAY_NAME_LEN_ON_UI, "%s", SETTING_WALLPAPER_HOME_SCREEN_CHANGED); + break; + case WALLPAPER_CUR_SEL_LOCK_SCREEN: + snprintf(text, MAX_DISPLAY_NAME_LEN_ON_UI, "%s", SETTING_WALLPAPER_LOCK_SCREEN_CHANGED); + break; + case WALLPAPER_CUR_SEL_HOME_AND_LOCK_SCREEN: + snprintf(text, MAX_DISPLAY_NAME_LEN_ON_UI, "%s", SETTING_WALLPAPER_HOME_AND_LOCK_SCREEN_CHANGED); + break; + default: + ad->cur_sel = WALLPAPER_CUR_SEL_NONE; + return; + } + + setting_create_sel_info_popup(ad->view_layout, + &(ad->selInfoPop_layout), + &(ad->selInfoPop)); + elm_notify_timeout_set(ad->selInfoPop, SETTING_WALLPAPER_POPUP_TIMER); + + edje_object_part_text_set(_EDJ(ad->selInfoPop_layout), "elm.text", text); + ad->cur_sel = WALLPAPER_CUR_SEL_NONE; + ad->wallpaper_changed = EINA_FALSE; + } else { + SETTING_TRACE("wallpaper not changed"); + } +} + +static void __setting_display_wallpaper_gallery_ug_result_cb(ui_gadget_h ug, service_h result, void *priv) +{ + SETTING_TRACE_BEGIN; + /* error check */ + retm_if(priv == NULL, "Data parameter is NULL"); + + SettingDisplayUG *ad = (SettingDisplayUG *) priv; + + if (result) { + char *path = NULL; + service_get_extra_data(result, "path", &path); + setting_retm_if(path == NULL, "path is NULL"); + + service_h service; + if (service_create(&service)) { + return; + } + + service_add_extra_data(service, "Path", path); + service_add_extra_data(service, "View Mode", "SETAS"); + + SETTING_TRACE("Path = %s", path); + + switch(ad->cur_sel) { + case WALLPAPER_CUR_SEL_HOME_SCREEN: + service_add_extra_data(service, "Setas type", SETTING_WALLPAPER_HOME_SCREEN); + break; + case WALLPAPER_CUR_SEL_LOCK_SCREEN: + service_add_extra_data(service, "Setas type", SETTING_WALLPAPER_LOCK_SCREEN); + break; + case WALLPAPER_CUR_SEL_HOME_AND_LOCK_SCREEN: + service_add_extra_data(service, "Setas type", SETTING_WALLPAPER_HOME_AND_LOCK); + break; + default: + service_destroy(service); + SETTING_TRACE_ERROR("ad->cur_sel is error"); + return; + } + + struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs)); + if (!cbs) { + service_destroy(service); + return; + } + + cbs->layout_cb = setting_display_layout_ug_cb; + cbs->result_cb = __setting_display_wallpaper_imageviewer_ug_result_cb; + cbs->destroy_cb = __setting_display_wallpaper_imageviewer_ug_destroy_cb; + cbs->priv = (void *)ad; + + ad->ug_imageviewer = ug_create(ad->ug, "image-viewer-efl", UG_MODE_FULLVIEW, service, cbs); + + if (NULL == ad->ug_imageviewer) { /* error handling */ + SETTING_TRACE_ERROR("NULL == ad->ug_imageviewer"); + setting_create_simple_popup(ad, ad->win_get, NULL, _(UNSUPPORTED_FUNCTION)); + } + + service_destroy(service); + FREE(cbs); + } +} + +static void __setting_display_wallpaper_gallery_ug_destroy_cb(ui_gadget_h ug, void *priv) +{ + SETTING_TRACE_BEGIN; + setting_retm_if(priv == NULL, "Data parameter is NULL"); + SettingDisplayUG *ad = (SettingDisplayUG *) priv; /* ad is point to priv */ + + if (ad->ug_imageviewer == NULL) { + ug_destroy(ug); + ad->ug_gallery = NULL; + } else { + return; + } + + Elm_Object_Item *navi_it = elm_naviframe_top_item_get(ad->navi_bar); + retm_if(navi_it == NULL, "navi_it is NULL"); + Evas_Object *back_btn = elm_object_item_part_content_get(navi_it, "prev_btn"); + + if (back_btn != NULL) { + elm_object_style_set(back_btn, NAVI_BACK_BUTTON_STYLE); /* take into effect */ + } +} + +static void __setting_display_wallpaper_ug_launch(void *data) +{ + SETTING_TRACE_BEGIN; + setting_retm_if(data == NULL, "Data parameter is NULL"); + SettingDisplayUG *ad = (SettingDisplayUG *) data; + + service_h svc; + if (service_create(&svc)) { + return; + } + + service_add_extra_data(svc, "launch-type", "select-one"); + service_add_extra_data(svc, "file-type", "image"); + + struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs)); + if (!cbs) { + service_destroy(svc); + return; + } + + cbs->layout_cb = setting_display_layout_ug_cb; + cbs->result_cb = __setting_display_wallpaper_gallery_ug_result_cb; + cbs->destroy_cb = __setting_display_wallpaper_gallery_ug_destroy_cb; + cbs->priv = (void *)ad; + + ad->ug_gallery = ug_create(ad->ug, "gallery-efl", UG_MODE_FULLVIEW, svc, cbs); + SETTING_TRACE("ad->ug_gallery = %p", ad->ug_gallery); + + if (NULL == ad->ug_gallery) { /* error handling */ + SETTING_TRACE_ERROR("NULL == ad->ug_gallery"); + setting_create_simple_popup(ad, ad->win_get, NULL, _(UNSUPPORTED_FUNCTION)); + } + + service_destroy(svc); + FREE(cbs); +} + +static void __setting_display_wallpaper_mouse_up_Gendial_list_cb(void *data, Evas_Object * obj, void *event_info) +{ + //error check + setting_retm_if(data == NULL, "Data parameter is NULL"); + setting_retm_if(event_info == NULL, "Invalid argument: event info is NULL"); + + Elm_Object_Item *item = (Elm_Object_Item *) event_info; + elm_genlist_item_selected_set(item, 0); + Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) elm_object_item_data_get(item); + + SettingDisplayUG *ad = (SettingDisplayUG *) data; + + if (!safeStrCmp("IDS_ST_MBODY_HOME_SCREEN_WALLPAPER", list_item->keyStr)) { + ad->cur_sel = WALLPAPER_CUR_SEL_HOME_SCREEN; + __setting_display_wallpaper_ug_launch(ad); + } else if (!safeStrCmp("IDS_ST_MBODY_LOCK_SCREEN_WALLPAPER_M_NOUN", list_item->keyStr)) { + ad->cur_sel = WALLPAPER_CUR_SEL_LOCK_SCREEN; + __setting_display_wallpaper_ug_launch(ad); + } else if (!safeStrCmp(SETTING_WALLPAPER_HOME_AND_LOCK_SCREEN, list_item->keyStr)) { + ad->cur_sel = WALLPAPER_CUR_SEL_HOME_AND_LOCK_SCREEN; + __setting_display_wallpaper_ug_launch(ad); + } else { + /* do nothing */ + } + +} + +static int setting_display_wallpaper_create(void *cb) +{ + SETTING_TRACE_BEGIN; + retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER); + + SettingDisplayUG *ad = (SettingDisplayUG *) cb; /* ad is point to cb */ + ad->cur_sel = WALLPAPER_CUR_SEL_NONE; + + Evas_Object *controllbar = NULL; + Evas_Object *scroller = NULL; + scroller = elm_genlist_add(ad->win_main_layout); + elm_object_style_set(scroller, "dialogue"); + retvm_if(scroller == NULL, SETTING_RETURN_FAIL, "Cannot set scroller object as contento of layout"); + elm_genlist_clear(scroller); /* first to clear list */ + + ad->ly_wall = setting_create_layout_navi_bar(ad->win_main_layout, ad->win_get, + _(KeyStr_Wallpaper), + _("IDS_COM_BODY_BACK"), NULL, NULL, + setting_display_wallpaper_click_softkey_cancel_cb, + NULL, NULL, ad, scroller, + &ad->navi_bar, &controllbar); + + Elm_Object_Item *item = NULL; + item = elm_genlist_item_append(scroller, &(ad->itc_seperator), NULL, NULL, + ELM_GENLIST_ITEM_NONE, NULL, NULL); + elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); + + ad->data_home_screen = + setting_create_Gendial_field_def(scroller, &(ad->itc_1text), + __setting_display_wallpaper_mouse_up_Gendial_list_cb, + ad, SWALLOW_Type_INVALID, NULL, + NULL, 0, "IDS_ST_MBODY_HOME_SCREEN_WALLPAPER", + NULL, NULL); + if (ad->data_home_screen) { + ad->data_home_screen->userdata = ad; + } else { + SETTING_TRACE_ERROR("ad->screen_reader is NULL"); + return SETTING_RETURN_FAIL; + } + + ad->data_lock_screen = + setting_create_Gendial_field_def(scroller, &(ad->itc_1text), + __setting_display_wallpaper_mouse_up_Gendial_list_cb, + ad, SWALLOW_Type_INVALID, NULL, + NULL, 0, "IDS_ST_MBODY_LOCK_SCREEN_WALLPAPER_M_NOUN", + NULL, NULL); + if (ad->data_lock_screen) { + ad->data_lock_screen->userdata = ad; + } else { + SETTING_TRACE_ERROR("ad->screen_reader is NULL"); + return SETTING_RETURN_FAIL; + } + + ad->data_home_lock_screen = + setting_create_Gendial_field_def(scroller, &(ad->itc_1text), + __setting_display_wallpaper_mouse_up_Gendial_list_cb, + ad, SWALLOW_Type_INVALID, NULL, + NULL, 0, SETTING_WALLPAPER_HOME_AND_LOCK_SCREEN, + NULL, NULL); + if (ad->data_home_lock_screen) { + ad->data_home_lock_screen->userdata = ad; + } else { + SETTING_TRACE_ERROR("ad->screen_reader is NULL"); + return SETTING_RETURN_FAIL; + } + + ad->wallpaper_changed = EINA_FALSE; + setting_view_display_wallpaper.is_create = 1; +#if DISABLED_CODE + __setting_display_wallpaper_listen_vconf_change(ad); +#endif + return SETTING_RETURN_SUCCESS; +} + +static int setting_display_wallpaper_destroy(void *cb) +{ + SETTING_TRACE_BEGIN; + /* error check */ + retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER); + + SettingDisplayUG *ad = (SettingDisplayUG *) cb; /* ad is point to cb */ +#if DISABLED_CODE + __setting_display_wallpaper_unlisten_vconf_change(); +#endif + + if (ad->selInfoPop) { + evas_object_del(ad->selInfoPop); + ad->selInfoPop = NULL; + } + + if (ad->ly_wall != NULL) { + evas_object_del(ad->ly_wall); + ad->ly_wall = NULL; + } + setting_view_display_wallpaper.is_create = 0; + + return SETTING_RETURN_SUCCESS; +} + +static int setting_display_wallpaper_update(void *cb) +{ + return SETTING_RETURN_SUCCESS; +} + +static int setting_display_wallpaper_cleanup(void *cb) +{ + SETTING_TRACE_BEGIN; + return SETTING_RETURN_SUCCESS; +} + +/* *************************************************** + * + *general func + * + ***************************************************/ + +/* *************************************************** + * + *call back func + * + ***************************************************/ + +static void +setting_display_wallpaper_click_softkey_cancel_cb(void *data, Evas_Object *obj, + void *event_info) +{ + SETTING_TRACE_BEGIN; + /* error check */ + retm_if(data == NULL, "Data parameter is NULL"); + SettingDisplayUG *ad = (SettingDisplayUG *) data; /* ad is point to cb */ + + /* called when this shared gadget is terminated. similar with app_exit */ + /* Send destroy request */ + ug_destroy_me(ad->ug); +} diff --git a/setting-display/src/setting-display.c b/setting-display/src/setting-display.c new file mode 100755 index 0000000..4caf22e --- /dev/null +++ b/setting-display/src/setting-display.c @@ -0,0 +1,457 @@ +/* + * setting + * Copyright (c) 2012 Samsung Electronics Co., Ltd. + * + * Licensed under the Flora License, Version 1.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://floralicense.org/license/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + *@defgroup setting-display + *UG creation code for setting-display + * + * - Screen Mode + * - Backlight time + * - Smart Screen + * - Battery percentage + */ + +#include <setting-display.h> +#include <Ecore_X.h> + +#define SETTING_BRIGHTNESS_DEFAULT_LEVEL 60 + +#ifndef UG_MODULE_API +#define UG_MODULE_API __attribute__ ((visibility("default"))) +#endif + +setting_view *__get_display_view_to_load(service_h service) +{ + SETTING_TRACE_BEGIN; + + char *viewtype = NULL; + + service_get_extra_data(service, "viewtype", &viewtype); + if(!viewtype) + return NULL; + + SETTING_TRACE("viewtype:%s", viewtype); + + if (!safeStrCmp(viewtype, "brightness")) { + setting_view_node_table_register(&setting_view_display_brightness, + NULL); + return &setting_view_display_brightness; + } else if (!safeStrCmp(viewtype, "wallpaper")) { + setting_view_node_table_register(&setting_view_display_wallpaper, NULL); + return &setting_view_display_wallpaper; + } else { + setting_view_node_table_register(&setting_view_display_main, NULL); + setting_view_node_table_register(&setting_view_display_screen_mode, + &setting_view_display_main); + setting_view_node_table_register(&setting_view_display_brightness, + &setting_view_display_main); + return &setting_view_display_main; + } + +} + +Evas_Object *__get_display_layout_to_return(service_h service, void *priv) +{ + SETTING_TRACE_BEGIN; + SettingDisplayUG *displayUG = priv; + char *viewtype = NULL; + + service_get_extra_data(service, "viewtype", &viewtype); + if(!viewtype) + return NULL; + + SETTING_TRACE("viewtype:%s", viewtype); + + if (!safeStrCmp(viewtype, "wallpaper")) { + return displayUG->ly_wall; + } else { + return displayUG->ly_main; + } + +} + +static void setting_display_ug_cb_resize(void *data, Evas *e, + Evas_Object *obj, void *event_info) +{ + SettingDisplayUG *ad = (SettingDisplayUG *) data; + setting_view_update(ad->view_to_load, ad); +} + +static void *setting_display_ug_on_create(ui_gadget_h ug, + enum ug_mode mode, service_h service, + void *priv) +{ + setting_retvm_if((!priv), NULL, "!priv"); + + SettingDisplayUG *displayUG = priv; + displayUG->ug = ug; + setting_set_i18n(SETTING_PACKAGE, SETTING_LOCALEDIR); + + displayUG->win_main_layout = (Evas_Object *) ug_get_parent_layout(ug); + displayUG->win_get = (Evas_Object *) ug_get_window(); + + evas_object_show(displayUG->win_main_layout); + displayUG->evas = evas_object_evas_get(displayUG->win_main_layout); + + setting_retvm_if(displayUG->win_main_layout == NULL, NULL, + "cannot get main window "); + + + /* register view node table */ + setting_view_node_table_intialize(); + + setting_create_Gendial_itc("dialogue/2text.3", + &(displayUG->itc_2text_2)); + setting_create_Gendial_itc("dialogue/1text.1icon", + &(displayUG->itc_1text_1icon)); + setting_create_Gendial_itc("dialogue/2text.3/expandable", + &(displayUG->itc_2text_3_parent)); + setting_create_Gendial_itc("dialogue/1text.1icon/expandable2", + &(displayUG->itc_1icon_1text_sub)); + setting_create_Gendial_itc("dialogue/1text", &(displayUG->itc_1text)); + + displayUG->itc_seperator.item_style = "dialogue/separator"; + displayUG->itc_seperator.func.text_get = NULL; + displayUG->itc_seperator.func.content_get = NULL; + displayUG->itc_seperator.func.state_get = NULL; + displayUG->itc_seperator.func.del = NULL; + + /* creating a view. */ + displayUG->view_to_load = __get_display_view_to_load(service); + setting_retvm_if(NULL == displayUG->view_to_load, NULL, + "NULL == displayUG->view_to_load"); + setting_view_node_set_cur_view(displayUG->view_to_load); + setting_view_create(displayUG->view_to_load, (void *)displayUG); + evas_object_event_callback_add(displayUG->win_main_layout, + EVAS_CALLBACK_RESIZE, + setting_display_ug_cb_resize, displayUG); + return __get_display_layout_to_return(service, displayUG); +} + +static void setting_display_ug_on_start(ui_gadget_h ug, service_h service, + void *priv) +{ +} + +static void setting_display_ug_on_pause(ui_gadget_h ug, service_h service, + void *priv) +{ +} + +static void setting_display_ug_on_resume(ui_gadget_h ug, service_h service, + void *priv) +{ +} + +static void setting_display_ug_on_destroy(ui_gadget_h ug, service_h service, + void *priv) +{ + SETTING_TRACE_BEGIN; + setting_retm_if((!priv), "!priv"); + SettingDisplayUG *displayUG = priv; + + /* fix flash issue for gallery */ + evas_object_event_callback_del(displayUG->win_main_layout, EVAS_CALLBACK_RESIZE, setting_display_ug_cb_resize); + displayUG->ug = ug; + + /* called when this shared gadget is terminated. similar with app_exit */ + if (&setting_view_display_main == displayUG->view_to_load) { + setting_view_destroy(&setting_view_display_brightness, + displayUG); + setting_view_destroy(&setting_view_display_screen_mode, displayUG); + setting_view_destroy(&setting_view_display_main, displayUG); + } else if (&setting_view_display_wallpaper == displayUG->view_to_load) { + setting_view_destroy(&setting_view_display_wallpaper, + displayUG); + } else if (&setting_view_display_brightness == displayUG->view_to_load) { + setting_view_destroy(&setting_view_display_brightness, + displayUG); + } + + if (NULL != ug_get_layout(displayUG->ug)) { + evas_object_hide((Evas_Object *) ug_get_layout(displayUG->ug)); + evas_object_del((Evas_Object *) ug_get_layout(displayUG->ug)); + } + + SETTING_TRACE_END; +} + +static void setting_display_ug_on_message(ui_gadget_h ug, service_h msg, + service_h service, void *priv) +{ + SETTING_TRACE_BEGIN; +} + +static void setting_display_ug_on_event(ui_gadget_h ug, + enum ug_event event, service_h service, + void *priv) +{ + SETTING_TRACE_BEGIN; + switch (event) { + case UG_EVENT_LOW_MEMORY: + break; + case UG_EVENT_LOW_BATTERY: + break; + case UG_EVENT_LANG_CHANGE: + break; + case UG_EVENT_ROTATE_PORTRAIT: + break; + case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN: + break; + case UG_EVENT_ROTATE_LANDSCAPE: + break; + case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN: + break; + case UG_EVENT_REGION_CHANGE: + break; + default: + break; + } +} + +static void setting_display_ug_on_key_event(ui_gadget_h ug, + enum ug_key_event event, + service_h service, void *priv) +{ + SETTING_TRACE_BEGIN; + SettingDisplayUG *ad = (SettingDisplayUG *) priv; + + switch (event) { + case UG_KEY_EVENT_END: + { + if (elm_naviframe_top_item_get(ad->navi_bar) == + elm_naviframe_bottom_item_get(ad->navi_bar)) { + ug_destroy_me(ug); + } else { + if (&setting_view_display_brightness == + setting_view_node_get_cur_view()) { + } + setting_view_cb_at_endKey(ad); + } + } + break; + default: + break; + } +} + +UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops) +{ + SETTING_TRACE_BEGIN; + SettingDisplayUG *displayUG = calloc(1, sizeof(SettingDisplayUG)); + setting_retvm_if(!displayUG, -1, "Create SettingDisplayUG obj failed"); + + ops->create = setting_display_ug_on_create; + ops->start = setting_display_ug_on_start; + ops->pause = setting_display_ug_on_pause; + ops->resume = setting_display_ug_on_resume; + ops->destroy = setting_display_ug_on_destroy; + ops->message = setting_display_ug_on_message; + ops->event = setting_display_ug_on_event; + ops->key_event = setting_display_ug_on_key_event; + ops->priv = displayUG; + ops->opt = UG_OPT_INDICATOR_ENABLE; + + return 0; +} + +UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops) +{ + SETTING_TRACE_BEGIN; + struct SettingDisplayUG *displayUG; + setting_retm_if(!ops, "ops == NULL"); + + displayUG = ops->priv; + if (displayUG) { + FREE(displayUG); + } +} + +/* *************************************************** + * + *general func + * + ***************************************************/ + +void setting_display_layout_ug_cb(ui_gadget_h ug, enum ug_mode mode, + void *priv) +{ + SettingDisplayUG *ad = (SettingDisplayUG *) priv; + Evas_Object *base; + + if (!priv) + return; + SETTING_TRACE_BEGIN; + + base = (Evas_Object *) ug_get_layout(ug); + if (!base) + return; + + switch (mode) { + case UG_MODE_FULLVIEW: + evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, + EVAS_HINT_EXPAND); + //elm_win_resize_object_add(ad->win_get, base); + evas_object_show(base); + break; + default: + break; + } + + SETTING_TRACE_END; +} + +/* NESTED*/ +static int setting_reset_display_brightness(void) +{ + SETTING_TRACE_BEGIN; + int ret = 0; + + ret += vconf_set_int(VCONFKEY_SETAPPL_BRIGHTNESS_AUTOMATIC_INT, SETTING_BRIGHTNESS_AUTOMATIC_OFF); + + if(isEmulBin()) + { + ret += vconf_set_int(VCONFKEY_SETAPPL_LCD_BRIGHTNESS, SETTING_BRIGHTNESS_DEFAULT_LEVEL); +#if USE_DEVICE_SET_DISPLAY_BRT + ret += device_set_brightness_to_settings(BRIGHTNESS_DISPLAY, SETTING_BRIGHTNESS_DEFAULT_LEVEL); +#endif + } + else + { + ret += vconf_set_int(VCONFKEY_SETAPPL_LCD_BRIGHTNESS, SETTING_BRIGHTNESS_DEFAULT_LEVEL); +#if USE_DEVICE_SET_DISPLAY_BRT + ret += device_set_brightness_to_settings(BRIGHTNESS_DISPLAY, SETTING_BRIGHTNESS_DEFAULT_LEVEL); +#endif + } + SETTING_TRACE_END; + return ret; +} + +/* NESTED*/ +static int setting_reset_display_backlight(void) +{ + SETTING_TRACE_BEGIN; + int ret = 0; +#if SUPPORT_LCD_TIMEOUT_KEEPING + ret += vconf_set_int(VCONFKEY_LCD_TIMEOUT_NORMAL_BACKUP, 0); +#else + if(isEmulBin()) + ret += vconf_set_int(VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL, 600); + else + ret += vconf_set_int(VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL, 30); +#endif + SETTING_TRACE_END; + return ret; +} + +/* NESTED*/ +static int setting_reset_home_wallpaper(void) +{ + SETTING_TRACE_BEGIN; + int ret = 0; + ret += vconf_set_str(VCONFKEY_BGSET, IMG_DEFAULT_HOME_SCREEN); + SETTING_TRACE_END; + return ret; +} + +/* NESTED*/ +static int setting_reset_display_lc_screen(void) +{ + SETTING_TRACE_BEGIN; + int ret = 0; + ret += vconf_set_str(VCONFKEY_IDLE_LOCK_BGSET, IMG_DEFAULT_HOME_SCREEN); + ret += setting_invoke_reset_function("setting-lock", 0, NULL); + return ret; +} + +static void setting_reset_launch_effect() +{ + SETTING_TRACE_BEGIN; + Evas_Object *win_main = ug_get_window(); + Ecore_X_Window xwin = elm_win_xwindow_get(win_main); + Ecore_X_Window root = 0; + if (0 != xwin) + { + root = ecore_x_window_root_get(xwin); + } + if (0 != root) + { + Ecore_X_Atom effect_enable_atom = ecore_x_atom_get("_NET_CM_EFFECT_ENABLE"); + ret_if(!effect_enable_atom); + unsigned int is_enable = 0; + ecore_x_window_prop_card32_set(root, effect_enable_atom, &is_enable, 1); + } + +} + +/* NESTED*/ +/** @todo setting_display_main_effect_set_value work? */ +static int setting_reset_display_main(void) +{ + SETTING_TRACE_BEGIN; + int ret = 0; + ret += setting_reset_display_backlight(); + //ret += setting_reset_display_brightness(); + + ret += vconf_set_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, FALSE);//battery percent + setting_reset_launch_effect(); + + ret += vconf_set_bool(VCONFKEY_SETAPPL_BOOL_AUTO_ADJUST_SCREEN_TONE, TRUE); + + // screen mode + ret += vconf_set_str(VCONFKEY_SETAPPL_SCREENMODE_SELNAME, "Dynamic"); + device_set_image_enhance_mode(0); // 0 => Dynamic + return ret; +} + + + +/*****/ +UG_MODULE_API int setting_plugin_reset(service_h service, void *priv) +{ + SETTING_TRACE_BEGIN; + + int ret = 0; + char *ug_type = NULL; + + service_get_extra_data(service, "viewtype", &ug_type); + SETTING_TRACE("ug_type:%s", ug_type); + if (0 == safeStrCmp(ug_type, "wallpaper")) { + /*ret += setting_reset_home_wallpaper(); + ret += setting_reset_display_lc_screen();*/ +#if SUPPORT_RUN_SYSTEM_COMMAND + ret += excuteCmd(SETTING_POSTINST_FILE, 1, "wallpaper"); + ret += setting_invoke_reset_function("setting-lock", service, NULL); +#else + ret += setting_reset_home_wallpaper(); + ret += setting_reset_display_lc_screen(); +#endif + + } else if (0 == safeStrCmp(ug_type, "main")) { +#if SUPPORT_RUN_SYSTEM_COMMAND + ret += excuteCmd(SETTING_POSTINST_FILE, 1, "display"); + setting_reset_launch_effect(); +#else + ret += setting_reset_display_main(); +#endif + } else if (0 == safeStrCmp(ug_type, "brightness")) { + ret += setting_reset_display_brightness(); + } + return ret; +} + +/*****/ |