e17/evry: show animation when action is going
authorHannes Janetzek <hannes.janetzek@gmail.com>
Wed, 17 Aug 2011 16:02:19 +0000 (16:02 +0000)
committerHannes Janetzek <hannes.janetzek@gmail.com>
Wed, 17 Aug 2011 16:02:19 +0000 (16:02 +0000)
SVN revision: 62538

data/themes/default.edc
src/modules/everything/evry_view.c

index 3992a8c..cf8b441 100644 (file)
@@ -36012,7 +36012,7 @@ collections {
             name: "clip";
             mouse_events: 0;
             type: RECT;
-            clip_to: "base";
+            /* clip_to: "base"; */
             description {
                state: "default" 0.0;
                rel1.to: "base";
@@ -36129,6 +36129,85 @@ collections {
                color3: 20 20 20 40;
             }
          }
+         
+         part {
+            name: "over_clip";
+            type: RECT;
+            mouse_events: 0;
+            description {
+               state: "default" 0.0;
+               color: 255 255 255 255;
+               rel1 {
+                  relative: 0.0 0.0;
+                  offset: 0 0;
+               }
+               rel2 {
+                  relative: 1.0 1.0;
+                  offset: -1 -1;
+               }
+               visible: 0;
+            }
+            description {
+               state: "visible" 0.0;
+               inherit: "default" 0.0;
+               color: 255 255 255 255;
+               visible: 1;
+            }
+            description {
+               state: "hidden" 0.0;
+               inherit: "default" 0.0;
+               rel1.relative: -0.5  -0.5;
+               rel2.relative: 1.5  1.5;
+               color: 255 255 255 0;
+               visible: 1;
+            }
+            description {
+               state: "huge" 0.0;
+               inherit: "default" 0.0;
+               color: 255 255 255 0;
+               rel1.relative: -1.5 -1.5;
+               rel2.relative: 2.5  2.5;
+               visible: 1;
+            }
+         }
+
+         part {
+            name: "over";
+            type: PROXY;
+            mouse_events: 0;
+            clip_to: "over_clip";
+            description {
+               state: "default" 0.0;
+               source: "e.swallow.icon";
+               rel1.to: "over_clip";
+               rel2.to: "over_clip";
+               visible: 0;
+            }
+            description {
+               state: "visible" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+         part {
+            name: "over2";
+            type: PROXY;
+            mouse_events: 0;
+            clip_to: "over_clip";
+            description {
+               state: "default" 0.0;
+               source: "e.swallow.thumb";
+               rel1.to: "over_clip";
+               rel2.to: "over_clip";
+               visible: 0;
+            }
+            description {
+               state: "visible" 0.0;
+               inherit: "default" 0.0;
+               visible: 1;
+            }
+         }
+         
          part {
             name: "event";
             type: RECT;
@@ -36202,6 +36281,41 @@ collections {
            transition: DECELERATE 0.1;
             target: "clip";
          }
+        program {
+            name: "go_big";
+            action: STATE_SET "visible" 0.0;
+            target: "over_clip";
+            target: "over";
+            target: "over2";
+            after: "go_big2";
+        }
+
+        program {
+            name: "go_big2";
+            action: STATE_SET "huge" 0.0;
+            transition: DECELERATE 0.4;
+            target: "over_clip";
+            after: "go_big3";
+        }
+
+        program {
+            name: "go_big3";
+            action: STATE_SET "default" 0.0;
+            transition: DECELERATE 0.2;
+            target: "over_clip";
+            target: "over";
+            target: "over2";
+        }
+        program {
+            name: "action_go";
+            signal: "e,action,go";
+            source: "e";
+            action: ACTION_STOP;
+            target: "go_big";
+            target: "go_big2";
+            target: "go_big3";
+            after: "go_big";
+        }
       }
    }
    group {
index d491fcf..fb3a46f 100644 (file)
@@ -89,6 +89,7 @@ _thumb_gen(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 
    e_icon_size_get(it->thumb, &w, &h);
    edje_extern_object_aspect_set(it->thumb, EDJE_ASPECT_CONTROL_BOTH, w, h);
+   edje_object_part_unswallow(it->frame, it->image); 
    edje_object_part_swallow(it->frame, "e.swallow.thumb", it->thumb);
    evas_object_show(it->thumb);
    edje_object_signal_emit(it->frame, "e,action,thumb,show_delayed", "e");
@@ -1403,6 +1404,35 @@ _cb_item_changed(void *data, int type __UNUSED__, void *event)
    return ECORE_CALLBACK_PASS_ON;
 }
 
+static Eina_Bool
+_cb_action_performed(void *data, int type __UNUSED__, void *event)
+{
+   Evry_Event_Action_Performed *ev = event;
+   View *v = data;
+   Eina_List *l;
+   Item *it;
+   Smart_Data *sd;
+   
+   sd = evas_object_smart_data_get(v->span);
+   if (!sd) return ECORE_CALLBACK_PASS_ON;
+
+   EINA_LIST_FOREACH(sd->items, l, it)
+     {
+       
+       if ((it->item == ev->it1) ||
+           (it->item == ev->it2))
+         break;
+     }
+   
+   if (it && it->visible)
+     {
+       evas_object_raise(it->frame); 
+       edje_object_signal_emit(it->frame, "e,action,go", "e");
+     }
+   
+   return ECORE_CALLBACK_PASS_ON;
+}
+
 static void
 _view_cb_mouse_wheel(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj, void *event_info)
 {
@@ -1600,7 +1630,9 @@ _view_create(Evry_View *view, const Evry_State *s, const Evas_Object *swallow)
 
    h = evry_event_handler_add(EVRY_EVENT_ITEM_CHANGED, _cb_item_changed, v);
    v->handlers = eina_list_append(v->handlers, h);
-
+   h = evry_event_handler_add(EVRY_EVENT_ACTION_PERFORMED, _cb_action_performed, v);
+   v->handlers = eina_list_append(v->handlers, h);
+   
    return EVRY_VIEW(v);
 }