diff options
Diffstat (limited to 'setting-display/src/setting-display.c')
-rwxr-xr-x | setting-display/src/setting-display.c | 457 |
1 files changed, 457 insertions, 0 deletions
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; +} + +/*****/ |