[evolution/clutter-calendar-v2] more meaningful animations
- From: Srinivasa Ragavan <sragavan src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution/clutter-calendar-v2] more meaningful animations
- Date: Thu, 16 Sep 2010 12:58:08 +0000 (UTC)
commit ac3cd2359961841bfef222ec49f72adb537e08ca
Author: Srinivasa Ragavan <sragavan gnome org>
Date: Thu Sep 16 18:24:24 2010 +0530
more meaningful animations
calendar/gui/e-week-view-clutter-event-item.c | 58 +++++++++++++++++++++++++
calendar/gui/e-week-view-clutter-event-item.h | 4 ++
calendar/gui/e-week-view-layout.c | 1 +
calendar/gui/e-week-view.c | 10 +++-
4 files changed, 70 insertions(+), 3 deletions(-)
---
diff --git a/calendar/gui/e-week-view-clutter-event-item.c b/calendar/gui/e-week-view-clutter-event-item.c
index 86dd5bb..3c7cbe4 100644
--- a/calendar/gui/e-week-view-clutter-event-item.c
+++ b/calendar/gui/e-week-view-clutter-event-item.c
@@ -1687,3 +1687,61 @@ e_week_view_clutter_event_item_get_edit_text (EWeekViewClutterEventItem *item)
return clutter_text_get_text (item->priv->text_item);
}
+
+static void
+scale_delete_stage2 (ClutterAnimation *amim, ClutterActor *actor)
+{
+ clutter_actor_destroy (actor);
+}
+
+static void
+scale_delete_stage1 (ClutterAnimation *amim, ClutterActor *item)
+{
+ clutter_actor_animate (item, CLUTTER_EASE_IN_SINE,
+ 200,
+ "scale-x", 0.1,
+ "signal-after::completed", scale_delete_stage2, item,
+ NULL);
+
+
+}
+
+static void
+wvce_animate_scale_delete (ClutterActor *item)
+{
+ float height=0, width=0;
+
+ clutter_actor_get_size (item, &width, &height);
+
+ g_object_set (item, "scale-center-x", width/2, "scale-center-y", height/2, NULL);
+
+ clutter_actor_animate (item, CLUTTER_EASE_OUT_SINE,
+ 200,
+ "scale-y", 0.1,
+ "signal-after::completed", scale_delete_stage1, item,
+ NULL);
+}
+
+void
+e_week_view_clutter_event_item_scale_destroy (EWeekViewClutterEventItem *item)
+{
+ wvce_animate_scale_delete (item);
+}
+
+
+static void
+fade_delete_stage1 (ClutterAnimation *amim, ClutterActor *actor)
+{
+ clutter_actor_destroy (actor);
+}
+
+void
+e_week_view_clutter_event_item_fade_destroy (EWeekViewClutterEventItem *item)
+{
+ clutter_actor_animate (item, CLUTTER_EASE_OUT_SINE,
+ 200,
+ "opacity", 0.0,
+ "signal-after::completed", fade_delete_stage1, item,
+ NULL);
+}
+
diff --git a/calendar/gui/e-week-view-clutter-event-item.h b/calendar/gui/e-week-view-clutter-event-item.h
index c4af0c0..c9f483d 100644
--- a/calendar/gui/e-week-view-clutter-event-item.h
+++ b/calendar/gui/e-week-view-clutter-event-item.h
@@ -95,6 +95,10 @@ const char * e_week_view_clutter_event_item_get_edit_text
EWeekViewClutterEventItem * e_week_view_clutter_event_item_new (EWeekView *view);
+void e_week_view_clutter_event_item_scale_destroy
+ (EWeekViewClutterEventItem *item);
+void e_week_view_clutter_event_item_fade_destroy
+ (EWeekViewClutterEventItem *item);
G_END_DECLS
diff --git a/calendar/gui/e-week-view-layout.c b/calendar/gui/e-week-view-layout.c
index 69f615e..392ff1e 100644
--- a/calendar/gui/e-week-view-layout.c
+++ b/calendar/gui/e-week-view-layout.c
@@ -201,6 +201,7 @@ e_week_view_layout_event (EWeekViewEvent *event,
event->spans_index + span_num);
span.background_item = old_span->background_item;
span.text_item = old_span->text_item;
+ span.actor_item = old_span->actor_item;
old_span->background_item = NULL;
old_span->text_item = NULL;
old_span->actor_item = NULL;
diff --git a/calendar/gui/e-week-view.c b/calendar/gui/e-week-view.c
index 1e15e65..130490e 100644
--- a/calendar/gui/e-week-view.c
+++ b/calendar/gui/e-week-view.c
@@ -2473,6 +2473,7 @@ e_week_view_remove_event_cb (EWeekView *week_view,
EWeekViewEvent *event;
EWeekViewEventSpan *span;
gint span_num;
+ gboolean delete_from_cal = data != NULL ? TRUE : FALSE;
if (!is_array_index_in_bounds (week_view->events, event_num))
return TRUE;
@@ -2514,7 +2515,10 @@ e_week_view_remove_event_cb (EWeekView *week_view,
}
#if HAVE_CLUTTER
if (span->actor_item) {
- clutter_actor_destroy (span->actor_item);
+ if (delete_from_cal)
+ e_week_view_clutter_event_item_scale_destroy (span->actor_item);
+ else
+ e_week_view_clutter_event_item_fade_destroy (span->actor_item);
span->actor_item = NULL;
}
#endif
@@ -4447,7 +4451,7 @@ e_week_view_on_editing_stopped (EWeekView *week_view,
e_cal_component_get_uid (comp, &uid);
g_signal_handlers_disconnect_by_func(item, e_week_view_on_text_item_event, week_view);
e_week_view_foreach_event_with_uid (week_view, uid,
- e_week_view_remove_event_cb, NULL);
+ e_week_view_remove_event_cb, TRUE);
week_view->event_destroyed = TRUE;
#if HAVE_CLUTTER
if (WITHOUT_CLUTTER) {
@@ -4488,7 +4492,7 @@ e_week_view_on_editing_stopped (EWeekView *week_view,
E_CALENDAR_VIEW (week_view));
/* we remove the object since we either got the update from the server or failed */
- e_week_view_remove_event_cb (week_view, event_num, NULL);
+ e_week_view_remove_event_cb (week_view, event_num, TRUE);
} else {
CalObjModType mod = CALOBJ_MOD_ALL;
GtkWindow *toplevel;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]