summaryrefslogtreecommitdiff
path: root/setting-display/src/setting-display.c
diff options
context:
space:
mode:
Diffstat (limited to 'setting-display/src/setting-display.c')
-rwxr-xr-xsetting-display/src/setting-display.c457
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;
+}
+
+/*****/