Enable 'Application Manager' Rotate 14/74214/1
authorkiso.chang <kiso.chang@samsung.com>
Mon, 13 Jun 2016 08:06:23 +0000 (17:06 +0900)
committerkiso.chang <kiso.chang@samsung.com>
Mon, 13 Jun 2016 08:07:39 +0000 (17:07 +0900)
- TSAM- 4215

Change-Id: Ie994d4137c52a56a9f215b4f3cccef5002fc55a2
Signed-off-by: kiso.chang <kiso.chang@samsung.com>
setting-appmgr/include/setting-appmgr.h
setting-appmgr/src/setting-appmgr.c

index 4c9ccc104986b9d2b0bca6bc33e57d70fc31533a..7d8e961207b8d90cdbdff010defd575c724de713 100644 (file)
@@ -196,6 +196,8 @@ typedef struct _SettingAppMgrUG {
 
        Setting_GenGroupItem_Data *cache_size;
        Setting_GenGroupItem_Data *clear_cache;
+
+       int current_rotation;
 } SettingAppMgrUG;
 
 #define APPMGRUG_TIME(fmt, arg...) \
index b8bf664c243b62e71e406eabc1f1fac6a3cef90c..6bdf342d54858a107fe1c5fa8c65a6e97eeae82c 100644 (file)
@@ -155,6 +155,59 @@ static inline Evas_Object *appmgrUg_create_navi(Evas_Object *parent,
        return navi;
 }
 
+
+#if SUPPORT_APP_ROATION
+static void _rot_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       SETTING_TRACE_BEGIN;
+       SettingAppMgrUG *ad = (SettingAppMgrUG *)data;
+       if (ad == NULL || ad->win == NULL) {
+               return;
+       }
+       int change_ang = elm_win_rotation_get(ad->win);
+       SETTING_TRACE_DEBUG("....change_ang:%d", change_ang);
+       SETTING_TRACE_DEBUG("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_DEBUG("diff:%d",
+                       elm_win_rotation_get(ad->win) - ad->current_rotation);
+
+       if (change_ang != ad->current_rotation) {
+               int diff = change_ang - ad->current_rotation;
+               if (diff < 0) {
+                       diff = -diff;
+               }
+               /**
+                * @todo if app didn't launch UG, is the call required to
+                * invoke?
+                */
+               ug_send_event(event);
+               if (diff == 180) {
+                       /* do nothing */
+               }
+               ad->current_rotation = change_ang;
+       }
+}
+#endif
+
+
+
 static int appmgrUg_get_tabtype(char *keyword)
 {
        retv_if(NULL == keyword, APPMGRUG_TAB_DOWNLOAD);
@@ -192,6 +245,18 @@ static void *appmgrUg_on_create(ui_gadget_h ug, enum ug_mode mode,
                return NULL;
        }
 
+
+       ad->current_rotation = elm_win_rotation_get(ad->win);
+       SETTING_TRACE_DEBUG("ad->current_rotation:%d", ad->current_rotation);
+       if (elm_win_wm_rotation_supported_get(ad->win)) {
+               int rots[4] = { 0, 90, 180, 270 }; /* rotation value that app
+               may want */
+               elm_win_wm_rotation_available_rotations_set(ad->win, rots, 4);
+       }
+       evas_object_smart_callback_add(ad->win, "wm,rotation,changed",
+                       _rot_changed_cb, ad);
+
+
        appmgrUg_main_init(ad);
        appmgrUg_pkginfo_init(ad);
        appmgrUg_appinfo_init(ad);
@@ -295,18 +360,27 @@ static void appmgrUg_on_resume(ui_gadget_h ug, app_control_h service,
 static void appmgrUg_on_event(ui_gadget_h ug, enum ug_event event,
                app_control_h service, void *priv)
 {
-       retm_if(NULL == ug || NULL == priv, "ug=%p, priv=%p is Invalid", ug,
-                       priv);
+       SettingAppMgrUG *ad = priv;
+
+       SETTING_TRACE_BEGIN;
+       setting_retm_if(NULL == ad, "ad is NULL");
 
        switch (event) {
        case UG_EVENT_LOW_MEMORY:
+               break;
        case UG_EVENT_LOW_BATTERY:
+               break;
        case UG_EVENT_LANG_CHANGE:
+               setting_navi_items_update(ad->navi);
+               break;
        case UG_EVENT_ROTATE_PORTRAIT:
        case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN:
+               break;
        case UG_EVENT_ROTATE_LANDSCAPE:
        case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN:
+               break;
        case UG_EVENT_REGION_CHANGE:
+               break;
        default:
                break;
        }