elm_navigationbar: modifications done for content area effect.
authorshilpa singh <shilpa.singh@samsung.com>
Wed, 15 Sep 2010 06:06:55 +0000 (15:06 +0900)
committershilpa singh <shilpa.singh@samsung.com>
Wed, 15 Sep 2010 06:06:55 +0000 (15:06 +0900)
src/lib/elm_navigationbar.c
src/lib/elm_pager.c [changed mode: 0755->0644]

index f78c5b1..3739a2f 100644 (file)
@@ -56,6 +56,7 @@ struct _Transit_Cb_Data
        Item* prev_it;
        Item* it;
        Eina_Bool pop;
+       Eina_Bool first_page;
 };
 
 static const char *widtype = NULL;
@@ -261,6 +262,17 @@ _transition_complete_cb(void *data)
        }
        if (it)
        {
+               if(!cb->first_page)
+                       {
+                               if(cb->pop)
+                                       {
+                                               edje_object_signal_emit(wd->base, "elm,action,pop", "elm");
+                                       }
+                               else
+                                       {
+                                               edje_object_signal_emit(wd->base, "elm,action,push", "elm");
+                                       }
+                       }
                if (it->title_obj) 
                        {
                                edje_object_part_swallow(wd->base, "elm.swallow.title", it->title_obj);
@@ -306,12 +318,12 @@ _transition_complete_cb(void *data)
                }
                else
                        edje_object_signal_emit(wd->base, "elm,state,item,reset,rightpad2", "elm");
-               
-               
+                               
                if((it->title_obj)&&(it->title))
                {
                        edje_object_signal_emit(wd->base, "elm,state,extend,title", "elm");
                }
+               
                content = it->content;
        }
        edje_object_message_signal_process(wd->base);
@@ -509,6 +521,7 @@ elm_navigationbar_add(Evas_Object *parent)
        elm_widget_resize_object_set(obj, wd->base);
 
        wd->pager = elm_pager_add(obj);
+       elm_object_style_set(wd->pager, "navigationbar");
        elm_widget_sub_object_add(obj, wd->pager);
        edje_object_part_swallow(wd->base, "elm.swallow.content", wd->pager);
        evas_object_smart_callback_add(wd->pager, "hide,finished", _hide_finished, obj);        
@@ -603,6 +616,7 @@ elm_navigationbar_push(Evas_Object *obj,
                cb->prev_it = prev_it;
                cb->it = it;
                cb->pop = EINA_FALSE;
+               cb->first_page = EINA_FALSE;
                if (prev_it->title_obj) edje_object_part_unswallow(wd->base, prev_it->title_obj);
                if (prev_it->fn_btn1) edje_object_part_unswallow(wd->base, prev_it->fn_btn1);
                else if (prev_it->back_btn) edje_object_part_unswallow(wd->base, prev_it->back_btn);
@@ -614,6 +628,7 @@ elm_navigationbar_push(Evas_Object *obj,
                cb->prev_it = NULL;
                cb->it = it;
                cb->pop = EINA_FALSE;   
+               cb->first_page = EINA_TRUE;
        }
        _transition_complete_cb(cb);
        free(cb);
@@ -689,6 +704,7 @@ elm_navigationbar_pop(Evas_Object *obj)
                cb->prev_it = prev_it;
                cb->it = NULL;
                cb->pop = EINA_TRUE;
+               cb->first_page = EINA_FALSE;
        }
        _transition_complete_cb(cb);
        //pop content from pager
@@ -751,6 +767,7 @@ elm_navigationbar_to_content_pop(Evas_Object *obj,
                cb->prev_it = prev_it;
                cb->it = it;
                cb->pop = EINA_TRUE;
+               cb->first_page = EINA_FALSE;
                if (prev_it->title_obj) edje_object_part_unswallow(wd->base, prev_it->title_obj);
                if (prev_it->fn_btn1) edje_object_part_unswallow(wd->base, prev_it->fn_btn1);
                else if (prev_it->back_btn) edje_object_part_unswallow(wd->base, prev_it->back_btn);
old mode 100755 (executable)
new mode 100644 (file)
index 4c47da6..0e74ebf
@@ -97,7 +97,7 @@ _changed_size_hints(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__,
 }
 
 static void
-_eval_top(Evas_Object *obj)
+_eval_top(Evas_Object *obj, Eina_Bool push)
 {
    Widget_Data *wd = elm_widget_data_get(obj);
    Eina_Bool animate=EINA_TRUE;
@@ -135,12 +135,24 @@ _eval_top(Evas_Object *obj)
        wd->top = ittop;
        o = wd->top->base;
        evas_object_show(o);
-       if (!animate)
-               edje_object_signal_emit(o, "elm,action,show,noanimate", "elm");
-       else if (wd->oldtop && wd->oldtop->popme)
+       
+       if (wd->oldtop && wd->oldtop->popme)
            edje_object_signal_emit(o, "elm,action,show", "elm");
        else
            edje_object_signal_emit(o, "elm,action,push", "elm");
+       if (!animate)
+               edje_object_signal_emit(o, "elm,action,show,noanimate", "elm");
+       else
+               {
+                       if(push)
+                               {
+                                       edje_object_signal_emit(o, "elm,action,show,push", "elm");
+                               }
+                       else
+                               {
+                                       edje_object_signal_emit(o, "elm,action,show,pop", "elm");
+                               }
+               }
        onshow = edje_object_data_get(o, "onshow");
        if (onshow)
          {
@@ -179,7 +191,7 @@ _sub_del(void *data, Evas_Object *obj __UNUSED__, void *event_info)
             evas_object_event_callback_del_full
                (sub, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _changed_size_hints, it);
             evas_object_del(it->base);
-            _eval_top(it->obj);
+            _eval_top(it->obj, EINA_FALSE);
             free(it);
             return;
          }
@@ -294,7 +306,7 @@ elm_pager_content_push(Evas_Object *obj, Evas_Object *content)
    edje_object_size_min_calc(it->base, &it->minw, &it->minh);
    evas_object_show(it->content);
    wd->stack = eina_list_append(wd->stack, it);
-   _eval_top(obj);
+   _eval_top(obj, EINA_TRUE);
    _sizing_eval(obj);
 }
 
@@ -393,7 +405,7 @@ elm_pager_to_content_pop(Evas_Object *obj, Evas_Object *content)
                                ll = ll->prev;
                        }
       }
-   _eval_top(it->obj);
+   _eval_top(it->obj, EINA_FALSE);
 }
 
 /**
@@ -422,7 +434,7 @@ elm_pager_content_promote(Evas_Object *obj, Evas_Object *content)
          {
             wd->stack = eina_list_remove_list(wd->stack, l);
             wd->stack = eina_list_append(wd->stack, it);
-            _eval_top(obj);
+            _eval_top(obj, EINA_FALSE);
             return;
          }
      }