summaryrefslogtreecommitdiff
path: root/setting-display
diff options
context:
space:
mode:
authorHyungKyu Song <hk76.song@samsung.com>2013-02-16 00:00:54 +0900
committerHyungKyu Song <hk76.song@samsung.com>2013-02-16 00:00:54 +0900
commit38fa070437a220df7736ad36d5dab2a27e415b96 (patch)
treef60bbb1284c00d576c427a806f55da7a83ec330b /setting-display
parent0d9aac50df4b567e19740b8e072e94680c6c4ea0 (diff)
downloadsettings-38fa070437a220df7736ad36d5dab2a27e415b96.tar.gz
settings-38fa070437a220df7736ad36d5dab2a27e415b96.tar.bz2
settings-38fa070437a220df7736ad36d5dab2a27e415b96.zip
Diffstat (limited to 'setting-display')
-rwxr-xr-xsetting-display/CMakeLists.txt37
-rwxr-xr-xsetting-display/include/setting-display-brightness.h38
-rwxr-xr-xsetting-display/include/setting-display-main.h67
-rwxr-xr-xsetting-display/include/setting-display-screen-mode.h27
-rwxr-xr-xsetting-display/include/setting-display-wallpaper.h30
-rwxr-xr-xsetting-display/include/setting-display.h133
-rwxr-xr-xsetting-display/src/setting-display-brightness.c558
-rwxr-xr-xsetting-display/src/setting-display-main.c612
-rwxr-xr-xsetting-display/src/setting-display-screen-mode.c263
-rwxr-xr-xsetting-display/src/setting-display-wallpaper.c476
-rwxr-xr-xsetting-display/src/setting-display.c457
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;
+}
+
+/*****/