Apply new API of rotation
authorKairong Yin <kairong78.yin@samsung.com>
Fri, 12 Apr 2013 04:06:18 +0000 (12:06 +0800)
committerKairong Yin <kairong78.yin@samsung.com>
Fri, 12 Apr 2013 04:06:18 +0000 (12:06 +0800)
Change-Id: I165d32dfc2716557b136cfb07b31d49ff97bf43b

include/setting.h
src/setting.c

index de33df0..951eeea 100755 (executable)
@@ -180,6 +180,7 @@ typedef struct _setting_main_appdata {
 
        Evas_Object *conform;
 
+       int current_rotation;
 } setting_main_appdata;
 
 /* launch view */
index 3236d60..e9412a6 100755 (executable)
@@ -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,
        };