naviframe: Support latest naviframe effect module APIs. 24/103224/3
authorJaehyun Cho <jae_hyun.cho@samsung.com>
Wed, 7 Dec 2016 15:11:51 +0000 (00:11 +0900)
committerGerrit Code Review <gerrit@review.vlan103.tizen.org>
Thu, 8 Dec 2016 05:57:07 +0000 (21:57 -0800)
tizen_push_deferred_effect() is added.
tizen_pop_deferred_effect() is added.
tizen_effect_enabled_get() is added.
Now tizen_push_effect() is called with one view.
Now tizen_pop_effect() is called with one view.
Now transition signals are not emitted to theme if the theme supports
naviframe effect module. (i.e. if tizen_zoom is 1)

Change-Id: Iec75fcb216673827ff808d59c588ccb6ce705476

src/lib/elc_naviframe.c
src/lib/elm_widget_naviframe.h

index 5c2c62d..ff3c3d6 100644 (file)
@@ -61,11 +61,32 @@ _nf_mod_init(void)
       _elm_module_symbol_get(mod, "tizen_push_effect");
    ((Elm_Naviframe_Mod_Api *)(mod->api))->tizen_pop_effect =
       _elm_module_symbol_get(mod, "tizen_pop_effect");
+   ((Elm_Naviframe_Mod_Api *)(mod->api))->tizen_push_deferred_effect =
+      _elm_module_symbol_get(mod, "tizen_push_deferred_effect");
+   ((Elm_Naviframe_Mod_Api *)(mod->api))->tizen_pop_deferred_effect =
+      _elm_module_symbol_get(mod, "tizen_pop_deferred_effect");
+   ((Elm_Naviframe_Mod_Api *)(mod->api))->tizen_effect_enabled_get =
+      _elm_module_symbol_get(mod, "tizen_effect_enabled_get");
 
    nf_mod = mod->api;
 }
 //
 
+//TIZEN ONLY(20161208): Support tizen transition
+static Eina_Bool
+_tizen_effect_enabled_get(Elm_Naviframe_Item_Data *it)
+{
+   if (nf_mod &&
+       nf_mod->tizen_effect_enabled_get &&
+       nf_mod->tizen_effect_enabled_get(VIEW(it)))
+     {
+        return EINA_TRUE;
+     }
+
+   return EINA_FALSE;
+}
+//
+
 static Eina_Bool _on_item_back_btn_clicked(void *data,
       Eo *obj EINA_UNUSED, const Eo_Event_Description *desc EINA_UNUSED, void *event_info EINA_UNUSED);
 
@@ -645,7 +666,11 @@ _elm_naviframe_item_eo_base_destructor(Eo *eo_item, Elm_Naviframe_Item_Data *it)
 
         _prev_page_focus_recover(prev_it);
 
-        elm_object_signal_emit(VIEW(prev_it), "elm,state,visible", "elm");
+        //TIZEN ONLY(20161208): Support tizen transition
+        //elm_object_signal_emit(VIEW(prev_it), "elm,state,visible", "elm");
+        if (!_tizen_effect_enabled_get(prev_it))
+          elm_object_signal_emit(VIEW(prev_it), "elm,state,visible", "elm");
+        //
 
         eo_do(WIDGET(prev_it), eo_event_callback_call(ELM_NAVIFRAME_EVENT_ITEM_ACTIVATED, EO_OBJ(prev_it)));
      }
@@ -1198,7 +1223,11 @@ _on_item_push_finished(void *data,
             ATSPI_STATE(ELM_ATSPI_STATE_SHOWING) | ATSPI_STATE(ELM_ATSPI_STATE_VISIBLE), EINA_TRUE));
    //
 
-   elm_object_signal_emit(VIEW(it), "elm,state,invisible", "elm");
+   //TIZEN ONLY(20161208): Support tizen transition
+   //elm_object_signal_emit(VIEW(it), "elm,state,invisible", "elm");
+   if (!_tizen_effect_enabled_get(it))
+     elm_object_signal_emit(VIEW(it), "elm,state,invisible", "elm");
+   //
 
    if (sd->freeze_events)
      evas_object_freeze_events_set(VIEW(it), EINA_FALSE);
@@ -1250,7 +1279,11 @@ _on_item_show_finished(void *data,
 
    ELM_NAVIFRAME_DATA_GET(WIDGET(it), sd);
 
-   elm_object_signal_emit(VIEW(it), "elm,state,visible", "elm");
+   //TIZEN ONLY(20161208): Support tizen transition
+   //elm_object_signal_emit(VIEW(it), "elm,state,visible", "elm");
+   if (!_tizen_effect_enabled_get(it))
+     elm_object_signal_emit(VIEW(it), "elm,state,visible", "elm");
+   //
 
    _prev_page_focus_recover(it);
 
@@ -1549,20 +1582,44 @@ _deferred(void *data)
         cur = nfo->push ? nfo->related : nfo->self;
         other = nfo->push ? nfo->self : nfo->related;
 
-        _send_signal(cur, signals_cur[nfo->push]);
-        _send_signal(other, nfo->push ? signals_new : signals_prev);
-
-        //TIZEN ONLY(20160829): Support tizen transition
-        if (nfo->push)
+        //TIZEN ONLY(20161208): Support tizen transition
+        //_send_signal(cur, signals_cur[nfo->push]);
+        //_send_signal(other, nfo->push ? signals_new : signals_prev);
+        if (_tizen_effect_enabled_get(cur))
           {
-             if (nf_mod && nf_mod->tizen_push_effect)
-               nf_mod->tizen_push_effect(WIDGET(cur), VIEW(cur), VIEW(other));
+             if (nfo->push)
+               {
+                  if (nf_mod->tizen_push_deferred_effect)
+                    nf_mod->tizen_push_deferred_effect(WIDGET(cur), VIEW(cur),
+                                                       EINA_TRUE);
+               }
+             else
+               {
+                  if (nf_mod->tizen_pop_deferred_effect)
+                    nf_mod->tizen_pop_deferred_effect(WIDGET(cur), VIEW(cur),
+                                                      EINA_TRUE);
+               }
           }
         else
+          _send_signal(cur, signals_cur[nfo->push]);
+
+        if (_tizen_effect_enabled_get(other))
           {
-             if (nf_mod && nf_mod->tizen_pop_effect)
-               nf_mod->tizen_pop_effect(WIDGET(cur), VIEW(cur), VIEW(other));
+             if (nfo->push)
+               {
+                  if (nf_mod->tizen_push_deferred_effect)
+                    nf_mod->tizen_push_deferred_effect(WIDGET(other),
+                                                       VIEW(other), EINA_FALSE);
+               }
+             else
+               {
+                  if (nf_mod->tizen_pop_deferred_effect)
+                    nf_mod->tizen_pop_deferred_effect(WIDGET(other),
+                                                      VIEW(other), EINA_FALSE);
+               }
           }
+        else
+          _send_signal(other, nfo->push ? signals_new : signals_prev);
         //
 
         free(nfo);
@@ -1702,10 +1759,34 @@ _item_push_helper(Elm_Naviframe_Item_Data *item)
              evas_object_freeze_events_set(VIEW(item), EINA_TRUE);
              evas_object_freeze_events_set(VIEW(top_item), EINA_TRUE);
           }
-        elm_object_signal_emit(VIEW(top_item), "elm,state,cur,pushed", "elm");
-        elm_object_signal_emit(VIEW(item), "elm,state,new,pushed", "elm");
-        edje_object_message_signal_process(elm_layout_edje_get(VIEW(top_item)));
-        edje_object_message_signal_process(elm_layout_edje_get(VIEW(item)));
+
+        //TIZEN ONLY(20161208): Support tizen transition
+        //elm_object_signal_emit(VIEW(top_item), "elm,state,cur,pushed", "elm");
+        //elm_object_signal_emit(VIEW(item), "elm,state,new,pushed", "elm");
+        //edje_object_message_signal_process(elm_layout_edje_get(VIEW(top_item)));
+        //edje_object_message_signal_process(elm_layout_edje_get(VIEW(item)));
+        if (_tizen_effect_enabled_get(top_item))
+          {
+             if (nf_mod->tizen_push_effect)
+               nf_mod->tizen_push_effect(obj, VIEW(top_item), EINA_TRUE);
+          }
+        else
+          {
+             elm_object_signal_emit(VIEW(top_item), "elm,state,cur,pushed", "elm");
+             edje_object_message_signal_process(elm_layout_edje_get(VIEW(top_item)));
+          }
+
+        if (_tizen_effect_enabled_get(item))
+          {
+             if (nf_mod->tizen_push_effect)
+               nf_mod->tizen_push_effect(obj, VIEW(item), EINA_FALSE);
+          }
+        else
+          {
+             elm_object_signal_emit(VIEW(item), "elm,state,new,pushed", "elm");
+             edje_object_message_signal_process(elm_layout_edje_get(VIEW(item)));
+          }
+        //
 
         nfo->self = item;
         nfo->related = top_item;
@@ -1728,7 +1809,13 @@ _item_push_helper(Elm_Naviframe_Item_Data *item)
    sd->stack = eina_inlist_append(sd->stack, EINA_INLIST_GET(item));
 
    if (!top_item)
-     elm_object_signal_emit(VIEW(item), "elm,state,visible", "elm");
+     //TIZEN ONLY(20161208): Support tizen transition
+     //elm_object_signal_emit(VIEW(item), "elm,state,visible", "elm");
+     {
+        if (!_tizen_effect_enabled_get(item))
+          elm_object_signal_emit(VIEW(item), "elm,state,visible", "elm");
+     }
+   //
 
    elm_layout_sizing_eval(obj);
 
@@ -1807,7 +1894,11 @@ _elm_naviframe_item_insert_before(Eo *obj, Elm_Naviframe_Data *sd, Elm_Object_It
 
    elm_widget_tree_unfocusable_set(VIEW(it), EINA_TRUE);
    evas_object_hide(VIEW(it));
-   elm_object_signal_emit(VIEW(it), "elm,state,invisible", "elm");
+   //TIZEN ONLY(20161208): Support tizen transition
+   //elm_object_signal_emit(VIEW(it), "elm,state,invisible", "elm");
+   if (!_tizen_effect_enabled_get(it))
+     elm_object_signal_emit(VIEW(it), "elm,state,invisible", "elm");
+   //
 
    elm_layout_sizing_eval(obj);
 
@@ -1853,11 +1944,24 @@ _elm_naviframe_item_insert_after(Eo *obj, Elm_Naviframe_Data *sd, Elm_Object_Ite
           elm_object_focus_set(VIEW(it), EINA_TRUE);
         else
           elm_object_focus_set(WIDGET(it), EINA_TRUE);
-        elm_object_signal_emit(VIEW(it), "elm,state,visible", "elm");
-        elm_object_signal_emit(VIEW(after), "elm,state,invisible", "elm");
+        //TIZEN ONLY(20161208): Support tizen transition
+        //elm_object_signal_emit(VIEW(it), "elm,state,visible", "elm");
+        //elm_object_signal_emit(VIEW(after), "elm,state,invisible", "elm");
+        if (!_tizen_effect_enabled_get(it))
+          elm_object_signal_emit(VIEW(it), "elm,state,visible", "elm");
+
+        if (!_tizen_effect_enabled_get(after))
+          elm_object_signal_emit(VIEW(after), "elm,state,invisible", "elm");
+        //
      }
    else
-     elm_object_signal_emit(VIEW(it), "elm,state,invisible", "elm");
+   //TIZEN ONLY(20161208): Support tizen transition
+     //elm_object_signal_emit(VIEW(it), "elm,state,invisible", "elm");
+     {
+        if (!_tizen_effect_enabled_get(it))
+          elm_object_signal_emit(VIEW(it), "elm,state,invisible", "elm");
+     }
+   //
 
    elm_layout_sizing_eval(obj);
 
@@ -1938,11 +2042,34 @@ _elm_naviframe_item_pop(Eo *obj, Elm_Naviframe_Data *sd)
 
         _resize_object_reset(obj, prev_it);
 
+        //TIZEN ONLY(20161208): Support tizen transition
         /* these 2 signals MUST take place simultaneously */
-        elm_object_signal_emit(VIEW(it), "elm,state,cur,popped", "elm");
-        elm_object_signal_emit(VIEW(prev_it), "elm,state,prev,popped", "elm");
-        edje_object_message_signal_process(elm_layout_edje_get(VIEW(it)));
-        edje_object_message_signal_process(elm_layout_edje_get(VIEW(prev_it)));
+        //elm_object_signal_emit(VIEW(it), "elm,state,cur,popped", "elm");
+        //elm_object_signal_emit(VIEW(prev_it), "elm,state,prev,popped", "elm");
+        //edje_object_message_signal_process(elm_layout_edje_get(VIEW(it)));
+        //edje_object_message_signal_process(elm_layout_edje_get(VIEW(prev_it)));
+        if (_tizen_effect_enabled_get(it))
+          {
+             if (nf_mod->tizen_pop_effect)
+               nf_mod->tizen_pop_effect(obj, VIEW(it), EINA_TRUE);
+          }
+        else
+          {
+             elm_object_signal_emit(VIEW(it), "elm,state,cur,popped", "elm");
+             edje_object_message_signal_process(elm_layout_edje_get(VIEW(it)));
+          }
+
+        if (_tizen_effect_enabled_get(prev_it))
+          {
+             if (nf_mod->tizen_pop_effect)
+               nf_mod->tizen_pop_effect(obj, VIEW(prev_it), EINA_FALSE);
+          }
+        else
+          {
+             elm_object_signal_emit(VIEW(prev_it), "elm,state,prev,popped", "elm");
+             edje_object_message_signal_process(elm_layout_edje_get(VIEW(prev_it)));
+          }
+        //
 
         //Show hidden previous view when pop transition begins.
         evas_object_show(VIEW(prev_it));
index 9afdf03..5de9c55 100644 (file)
@@ -98,8 +98,11 @@ struct _Elm_Naviframe_Text_Item_Pair
 typedef struct _Elm_Naviframe_Mod_Api Elm_Naviframe_Mod_Api;
 struct _Elm_Naviframe_Mod_Api
 {
-   void (*tizen_push_effect)(Evas_Object *nf, Evas_Object *cur_view, Evas_Object *new_view);
-   void (*tizen_pop_effect)(Evas_Object *nf, Evas_Object *cur_view, Evas_Object *prev_view);
+   void (*tizen_push_effect)(Evas_Object *nf, Evas_Object *view, Eina_Bool is_cur_view);
+   void (*tizen_pop_effect)(Evas_Object *nf, Evas_Object *view, Eina_Bool is_cur_view);
+   void (*tizen_push_deferred_effect)(Evas_Object *nf, Evas_Object *view, Eina_Bool is_cur_view);
+   void (*tizen_pop_deferred_effect)(Evas_Object *nf, Evas_Object *view, Eina_Bool is_cur_view);
+   Eina_Bool (*tizen_effect_enabled_get)(Evas_Object *view);
 };
 //