3 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 * Licensed under the Flora License, Version 1.0 (the License);
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://floralicense.org/license/
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an AS IS BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
19 *@defgroup setting-display
20 *UG creation code for setting-display
25 * - Battery percentage
28 #include <setting-display.h>
31 #define SETTING_BRIGHTNESS_DEFAULT_LEVEL 60
34 #define UG_MODULE_API __attribute__ ((visibility("default")))
37 setting_view *__get_display_view_to_load(service_h service)
41 char *viewtype = NULL;
43 service_get_extra_data(service, "viewtype", &viewtype);
47 SETTING_TRACE("viewtype:%s", viewtype);
49 if (!safeStrCmp(viewtype, "brightness")) {
50 setting_view_node_table_register(&setting_view_display_brightness,
52 return &setting_view_display_brightness;
53 } else if (!safeStrCmp(viewtype, "wallpaper")) {
54 setting_view_node_table_register(&setting_view_display_wallpaper, NULL);
55 return &setting_view_display_wallpaper;
57 setting_view_node_table_register(&setting_view_display_main, NULL);
58 setting_view_node_table_register(&setting_view_display_screen_mode,
59 &setting_view_display_main);
60 setting_view_node_table_register(&setting_view_display_brightness,
61 &setting_view_display_main);
62 return &setting_view_display_main;
67 Evas_Object *__get_display_layout_to_return(service_h service, void *priv)
70 SettingDisplayUG *displayUG = priv;
71 char *viewtype = NULL;
73 service_get_extra_data(service, "viewtype", &viewtype);
77 SETTING_TRACE("viewtype:%s", viewtype);
79 if (!safeStrCmp(viewtype, "wallpaper")) {
80 return displayUG->ly_wall;
82 return displayUG->ly_main;
87 static void setting_display_ug_cb_resize(void *data, Evas *e,
88 Evas_Object *obj, void *event_info)
90 SettingDisplayUG *ad = (SettingDisplayUG *) data;
91 setting_view_update(ad->view_to_load, ad);
94 static void *setting_display_ug_on_create(ui_gadget_h ug,
95 enum ug_mode mode, service_h service,
98 setting_retvm_if((!priv), NULL, "!priv");
100 SettingDisplayUG *displayUG = priv;
102 setting_set_i18n(SETTING_PACKAGE, SETTING_LOCALEDIR);
104 displayUG->win_main_layout = (Evas_Object *) ug_get_parent_layout(ug);
105 displayUG->win_get = (Evas_Object *) ug_get_window();
107 evas_object_show(displayUG->win_main_layout);
108 displayUG->evas = evas_object_evas_get(displayUG->win_main_layout);
110 setting_retvm_if(displayUG->win_main_layout == NULL, NULL,
111 "cannot get main window ");
114 /* register view node table */
115 setting_view_node_table_intialize();
117 setting_create_Gendial_itc("dialogue/2text.3",
118 &(displayUG->itc_2text_2));
119 setting_create_Gendial_itc("dialogue/1text.1icon",
120 &(displayUG->itc_1text_1icon));
121 setting_create_Gendial_itc("dialogue/2text.3/expandable",
122 &(displayUG->itc_2text_3_parent));
123 setting_create_Gendial_itc("dialogue/1text.1icon/expandable2",
124 &(displayUG->itc_1icon_1text_sub));
125 setting_create_Gendial_itc("dialogue/1text", &(displayUG->itc_1text));
127 displayUG->itc_seperator.item_style = "dialogue/separator";
128 displayUG->itc_seperator.func.text_get = NULL;
129 displayUG->itc_seperator.func.content_get = NULL;
130 displayUG->itc_seperator.func.state_get = NULL;
131 displayUG->itc_seperator.func.del = NULL;
133 /* creating a view. */
134 displayUG->view_to_load = __get_display_view_to_load(service);
135 setting_retvm_if(NULL == displayUG->view_to_load, NULL,
136 "NULL == displayUG->view_to_load");
137 setting_view_node_set_cur_view(displayUG->view_to_load);
138 setting_view_create(displayUG->view_to_load, (void *)displayUG);
139 evas_object_event_callback_add(displayUG->win_main_layout,
140 EVAS_CALLBACK_RESIZE,
141 setting_display_ug_cb_resize, displayUG);
142 return __get_display_layout_to_return(service, displayUG);
145 static void setting_display_ug_on_start(ui_gadget_h ug, service_h service,
150 static void setting_display_ug_on_pause(ui_gadget_h ug, service_h service,
155 static void setting_display_ug_on_resume(ui_gadget_h ug, service_h service,
160 static void setting_display_ug_on_destroy(ui_gadget_h ug, service_h service,
164 setting_retm_if((!priv), "!priv");
165 SettingDisplayUG *displayUG = priv;
167 /* fix flash issue for gallery */
168 evas_object_event_callback_del(displayUG->win_main_layout, EVAS_CALLBACK_RESIZE, setting_display_ug_cb_resize);
171 /* called when this shared gadget is terminated. similar with app_exit */
172 if (&setting_view_display_main == displayUG->view_to_load) {
173 setting_view_destroy(&setting_view_display_brightness,
175 setting_view_destroy(&setting_view_display_screen_mode, displayUG);
176 setting_view_destroy(&setting_view_display_main, displayUG);
177 } else if (&setting_view_display_wallpaper == displayUG->view_to_load) {
178 setting_view_destroy(&setting_view_display_wallpaper,
180 } else if (&setting_view_display_brightness == displayUG->view_to_load) {
181 setting_view_destroy(&setting_view_display_brightness,
185 if (NULL != ug_get_layout(displayUG->ug)) {
186 evas_object_hide((Evas_Object *) ug_get_layout(displayUG->ug));
187 evas_object_del((Evas_Object *) ug_get_layout(displayUG->ug));
193 static void setting_display_ug_on_message(ui_gadget_h ug, service_h msg,
194 service_h service, void *priv)
199 static void setting_display_ug_on_event(ui_gadget_h ug,
200 enum ug_event event, service_h service,
205 case UG_EVENT_LOW_MEMORY:
207 case UG_EVENT_LOW_BATTERY:
209 case UG_EVENT_LANG_CHANGE:
211 case UG_EVENT_ROTATE_PORTRAIT:
213 case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
215 case UG_EVENT_ROTATE_LANDSCAPE:
217 case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
219 case UG_EVENT_REGION_CHANGE:
226 static void setting_display_ug_on_key_event(ui_gadget_h ug,
227 enum ug_key_event event,
228 service_h service, void *priv)
231 SettingDisplayUG *ad = (SettingDisplayUG *) priv;
234 case UG_KEY_EVENT_END:
236 if (elm_naviframe_top_item_get(ad->navi_bar) ==
237 elm_naviframe_bottom_item_get(ad->navi_bar)) {
240 if (&setting_view_display_brightness ==
241 setting_view_node_get_cur_view()) {
243 setting_view_cb_at_endKey(ad);
252 UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops)
255 SettingDisplayUG *displayUG = calloc(1, sizeof(SettingDisplayUG));
256 setting_retvm_if(!displayUG, -1, "Create SettingDisplayUG obj failed");
258 ops->create = setting_display_ug_on_create;
259 ops->start = setting_display_ug_on_start;
260 ops->pause = setting_display_ug_on_pause;
261 ops->resume = setting_display_ug_on_resume;
262 ops->destroy = setting_display_ug_on_destroy;
263 ops->message = setting_display_ug_on_message;
264 ops->event = setting_display_ug_on_event;
265 ops->key_event = setting_display_ug_on_key_event;
266 ops->priv = displayUG;
267 ops->opt = UG_OPT_INDICATOR_ENABLE;
272 UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops)
275 struct SettingDisplayUG *displayUG;
276 setting_retm_if(!ops, "ops == NULL");
278 displayUG = ops->priv;
284 /* ***************************************************
288 ***************************************************/
290 void setting_display_layout_ug_cb(ui_gadget_h ug, enum ug_mode mode,
293 SettingDisplayUG *ad = (SettingDisplayUG *) priv;
300 base = (Evas_Object *) ug_get_layout(ug);
305 case UG_MODE_FULLVIEW:
306 evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND,
308 //elm_win_resize_object_add(ad->win_get, base);
309 evas_object_show(base);
319 static int setting_reset_display_brightness(void)
324 ret += vconf_set_int(VCONFKEY_SETAPPL_BRIGHTNESS_AUTOMATIC_INT, SETTING_BRIGHTNESS_AUTOMATIC_OFF);
328 ret += vconf_set_int(VCONFKEY_SETAPPL_LCD_BRIGHTNESS, SETTING_BRIGHTNESS_DEFAULT_LEVEL);
329 #if USE_DEVICE_SET_DISPLAY_BRT
330 ret += device_set_brightness_to_settings(BRIGHTNESS_DISPLAY, SETTING_BRIGHTNESS_DEFAULT_LEVEL);
335 ret += vconf_set_int(VCONFKEY_SETAPPL_LCD_BRIGHTNESS, SETTING_BRIGHTNESS_DEFAULT_LEVEL);
336 #if USE_DEVICE_SET_DISPLAY_BRT
337 ret += device_set_brightness_to_settings(BRIGHTNESS_DISPLAY, SETTING_BRIGHTNESS_DEFAULT_LEVEL);
345 static int setting_reset_display_backlight(void)
349 #if SUPPORT_LCD_TIMEOUT_KEEPING
350 ret += vconf_set_int(VCONFKEY_LCD_TIMEOUT_NORMAL_BACKUP, 0);
353 ret += vconf_set_int(VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL, 600);
355 ret += vconf_set_int(VCONFKEY_SETAPPL_LCD_TIMEOUT_NORMAL, 30);
362 static int setting_reset_home_wallpaper(void)
366 ret += vconf_set_str(VCONFKEY_BGSET, IMG_DEFAULT_HOME_SCREEN);
372 static int setting_reset_display_lc_screen(void)
376 ret += vconf_set_str(VCONFKEY_IDLE_LOCK_BGSET, IMG_DEFAULT_HOME_SCREEN);
377 ret += setting_invoke_reset_function("setting-lock", 0, NULL);
381 static void setting_reset_launch_effect()
384 Evas_Object *win_main = ug_get_window();
385 Ecore_X_Window xwin = elm_win_xwindow_get(win_main);
386 Ecore_X_Window root = 0;
389 root = ecore_x_window_root_get(xwin);
393 Ecore_X_Atom effect_enable_atom = ecore_x_atom_get("_NET_CM_EFFECT_ENABLE");
394 ret_if(!effect_enable_atom);
395 unsigned int is_enable = 0;
396 ecore_x_window_prop_card32_set(root, effect_enable_atom, &is_enable, 1);
402 /** @todo setting_display_main_effect_set_value work? */
403 static int setting_reset_display_main(void)
407 ret += setting_reset_display_backlight();
408 //ret += setting_reset_display_brightness();
410 ret += vconf_set_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, FALSE);//battery percent
411 setting_reset_launch_effect();
413 ret += vconf_set_bool(VCONFKEY_SETAPPL_BOOL_AUTO_ADJUST_SCREEN_TONE, TRUE);
416 ret += vconf_set_str(VCONFKEY_SETAPPL_SCREENMODE_SELNAME, "Dynamic");
417 device_set_image_enhance_mode(0); // 0 => Dynamic
424 UG_MODULE_API int setting_plugin_reset(service_h service, void *priv)
429 char *ug_type = NULL;
431 service_get_extra_data(service, "viewtype", &ug_type);
432 SETTING_TRACE("ug_type:%s", ug_type);
433 if (0 == safeStrCmp(ug_type, "wallpaper")) {
434 /*ret += setting_reset_home_wallpaper();
435 ret += setting_reset_display_lc_screen();*/
436 #if SUPPORT_RUN_SYSTEM_COMMAND
437 ret += excuteCmd(SETTING_POSTINST_FILE, 1, "wallpaper");
438 ret += setting_invoke_reset_function("setting-lock", service, NULL);
440 ret += setting_reset_home_wallpaper();
441 ret += setting_reset_display_lc_screen();
444 } else if (0 == safeStrCmp(ug_type, "main")) {
445 #if SUPPORT_RUN_SYSTEM_COMMAND
446 ret += excuteCmd(SETTING_POSTINST_FILE, 1, "display");
447 setting_reset_launch_effect();
449 ret += setting_reset_display_main();
451 } else if (0 == safeStrCmp(ug_type, "brightness")) {
452 ret += setting_reset_display_brightness();