Added undo notification system to event deletion.

Added GcalEventView::will-delete to let thw window knows about the change.
GcalWindow will handle the hiding of the event-widget till the notification goes
away or the user click "Undo".
Added method in GcalView interface to retrieve and event-widget by it's uuid.
Added some cosmetic changes in GcalMonthView as well.
This commit is contained in:
Erick Pérez Castellanos
2012-07-11 10:50:28 -04:00
parent 6853aaeb38
commit f83143050c
8 changed files with 270 additions and 79 deletions
+18 -14
View File
@@ -57,7 +57,7 @@ struct _GcalEventViewPrivate
enum
{
DONE = 1,
WILL_DELETE = 1,
NUM_SIGNALS
};
@@ -86,14 +86,16 @@ gcal_event_view_class_init(GcalEventViewClass *klass)
object_class->constructed = gcal_event_view_constructed;
object_class->finalize = gcal_event_view_finalize;
signals[DONE] = g_signal_new ("done",
GCAL_TYPE_EVENT_VIEW,
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GcalEventViewClass, done),
NULL, NULL,
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE,
0);
signals[WILL_DELETE] = g_signal_new ("will-delete",
GCAL_TYPE_EVENT_VIEW,
G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (GcalEventViewClass,
will_delete),
NULL, NULL,
g_cclosure_marshal_VOID__STRING,
G_TYPE_NONE,
1,
G_TYPE_STRING);
g_type_class_add_private((gpointer)klass, sizeof(GcalEventViewPrivate));
}
@@ -337,17 +339,19 @@ gcal_event_view_delete_event (GtkWidget *button,
gpointer user_data)
{
GcalEventViewPrivate *priv;
gchar *event_uuid;
g_return_if_fail (GCAL_IS_EVENT_VIEW (user_data));
priv = GCAL_EVENT_VIEW (user_data)->priv;
gcal_manager_remove_event (priv->manager,
priv->source_uid,
priv->event_uid);
event_uuid = g_strdup_printf ("%s:%s", priv->source_uid, priv->event_uid);
/* Reset the widget, and let the windows it work it's done */
gcal_event_view_load_new (GCAL_EVENT_VIEW (user_data));
g_signal_emit (GCAL_EVENT_VIEW (user_data), signals[DONE], 0);
g_signal_emit (GCAL_EVENT_VIEW (user_data),
signals[WILL_DELETE],
0,
event_uuid);
g_free (event_uuid);
}
/* Public API */