From: Kairong Yin Date: Fri, 12 Apr 2013 04:25:44 +0000 (+0800) Subject: Apply new API of rotation X-Git-Tag: accepted/tizen_2.1/20130425.022820~17^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fc0e4d786972b8ff21e9620f5aa5e539e50a46ec;p=apps%2Fcore%2Fpreloaded%2Fsettings.git Apply new API of rotation Change-Id: I2a46b2d9a62f3daace90673a7b26c03bb708a636 --- diff --git a/include/setting.h b/include/setting.h index de33df0..951eeea 100755 --- a/include/setting.h +++ b/include/setting.h @@ -180,6 +180,7 @@ typedef struct _setting_main_appdata { Evas_Object *conform; + int current_rotation; } setting_main_appdata; /* launch view */ diff --git a/src/setting.c b/src/setting.c index 3236d60..e9412a6 100755 --- a/src/setting.c +++ b/src/setting.c @@ -262,6 +262,41 @@ static void setting_main_rotate(app_device_orientation_e m, void *data) #endif } +static void _rot_changed_cb(void *data, Evas_Object *obj, void *event_info) +{ + SETTING_TRACE_BEGIN; + setting_main_appdata *ad = (setting_main_appdata *)data; + if (ad == NULL || ad->win_main == NULL ) + return; + int change_ang = elm_win_rotation_get(ad->win_main); + SETTING_TRACE("....change_ang:%d",change_ang); + SETTING_TRACE("current_rotation:%d",ad->current_rotation); + //Send the rotation event to UGs.. + enum ug_event event = UG_EVENT_ROTATE_PORTRAIT; + switch (change_ang) { + case APP_DEVICE_ORIENTATION_0: + event = UG_EVENT_ROTATE_PORTRAIT; + break; + case APP_DEVICE_ORIENTATION_180: + event = UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN; + break; + case APP_DEVICE_ORIENTATION_270: + event = UG_EVENT_ROTATE_LANDSCAPE; + break; + case APP_DEVICE_ORIENTATION_90: + event = UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN; + break; + default: + return; + } + SETTING_TRACE("diff:%d",elm_win_rotation_get(ad->win_main) - ad->current_rotation); + + if (change_ang != ad->current_rotation) + { + ug_send_event(event); + ad->current_rotation = change_ang; + } +} #endif /** @@ -474,9 +509,9 @@ static void setting_other_vconf_change_cb(keynode_t *key, void *data) if (item_to_update->chk_status) //rotation function is not blocked { SETTING_TRACE("Rotation function is on, it is necessary to adjust the device orientation"); - int mode = APP_DEVICE_ORIENTATION_0; - mode = app_get_device_orientation(); - elm_win_rotation_with_resize_set(ad->win_main, mode); + //int mode = APP_DEVICE_ORIENTATION_0; + //mode = app_get_device_orientation(); + //elm_win_rotation_with_resize_set(ad->win_main, mode); } return; @@ -742,6 +777,14 @@ static bool setting_main_app_create(void *data) evas_object_show(ad->win_main); UG_INIT_EFL(ad->win_main, UG_OPT_INDICATOR_ENABLE); ad->evas = evas_object_evas_get(ad->win_main); + ad->current_rotation = elm_win_rotation_get(ad->win_main); + SETTING_TRACE("ad->current_rotation:%d",ad->current_rotation); + if (elm_win_wm_rotation_supported_get(ad->win_main)) + { + int rots[4] = { 0, 90, 180, 270 }; // rotation value that app may want + elm_win_wm_rotation_available_rotations_set(ad->win_main, &rots, 4); + } + evas_object_smart_callback_add(ad->win_main, "wm,rotation,changed", _rot_changed_cb, ad); /* load config file */ int cfg_operation_ret = setting_cfg_init(); @@ -936,9 +979,9 @@ static void setting_main_app_reset(service_h service, void *data) if (value) //rotation function is not blocked { SETTING_TRACE("Rotation function is on, it is necessary to adjust the device orientation"); - int mode = APP_DEVICE_ORIENTATION_0; - mode = app_get_device_orientation(); - elm_win_rotation_with_resize_set(ad->win_main, mode); + //int mode = APP_DEVICE_ORIENTATION_0; + //mode = app_get_device_orientation(); + //elm_win_rotation_with_resize_set(ad->win_main, mode); } vconf_callback_fn cb = NULL; @@ -1059,7 +1102,7 @@ int main(int argc, char *argv[]) .low_battery = setting_main_low_battery_cb, .language_changed = setting_main_lang_changed_cb, .region_format_changed = setting_main_region_changed_cb, - .device_orientation = setting_main_rotate, + .device_orientation = NULL, };