diff --git a/src/EventEdition/EventDialog.vala b/src/EventEdition/EventDialog.vala index 2e78a3303..0bef6a9f6 100644 --- a/src/EventEdition/EventDialog.vala +++ b/src/EventEdition/EventDialog.vala @@ -224,10 +224,8 @@ public class EventDialog : Granite.Dialog { delete_dialog.response.connect ((response) => { if (response == Gtk.ResponseType.YES) { - destroy (); + close (); } - - delete_dialog.destroy (); }); delete_dialog.present (); diff --git a/src/Widgets/DeleteDialog.vala b/src/Widgets/DeleteDialog.vala index 5b259c7b6..f6610fe7e 100644 --- a/src/Widgets/DeleteDialog.vala +++ b/src/Widgets/DeleteDialog.vala @@ -2,19 +2,28 @@ class Calendar.DeleteEventDialog : Granite.MessageDialog { public E.Source? source { get; construct; } public ECal.Component ecal_event { get; construct; } public ECal.ObjModType mod_type_prop { get; construct; } - public string delete_button_text {get; construct; } public DeleteEventDialog (E.Source? source, ECal.Component ecal_event, ECal.ObjModType mod_type_prop) { - string title, description, delete_text; + Object ( + source: source, + ecal_event: ecal_event, + mod_type_prop: mod_type_prop, + image_icon: new ThemedIcon ("dialog-warning"), + buttons: Gtk.ButtonsType.CANCEL + ); + } + + construct { + string delete_text; var summary = ecal_event.get_summary (); if (ecal_event.has_recurrences ()) { if (mod_type_prop == ECal.ObjModType.THIS) { if (summary == null) { - title = _("Delete this occurrence of event?"); + primary_text = _("Delete this occurrence of event?"); } else { - title = _("Delete this occurrence of event “%s”?").printf (((!)summary).get_value ()); // Should question mark be in or out of quotes? + primary_text = _("Delete this occurrence of event “%s”?").printf (((!)summary).get_value ()); } - description = _("This occurrence will be permanently deleted, but all other occurrences will remain unchanged."); + secondary_text = _("This occurrence will be permanently deleted, but all other occurrences will remain unchanged."); delete_text = _("Delete Occurrence"); } else { if (mod_type_prop != ECal.ObjModType.ALL) { @@ -22,47 +31,33 @@ class Calendar.DeleteEventDialog : Granite.MessageDialog { } if (summary == null) { - title = _("Delete event?"); + primary_text = _("Delete event?"); } else { - title = _("Delete event “%s”?").printf (((!)summary).get_value ()); // Should question mark be in or out of quotes? + primary_text = _("Delete event “%s”?").printf (((!)summary).get_value ()); // Should question mark be in or out of quotes? } - description = _("This event and all its occurrences will be permanently deleted."); + secondary_text = _("This event and all its occurrences will be permanently deleted."); delete_text = _("Delete Event"); } } else { if (summary == null) { - title = _("Delete event?"); + primary_text = _("Delete event?"); } else { - title = _("Delete event “%s”?").printf (((!)summary).get_value ()); // Should question mark be in or out of quotes? + primary_text = _("Delete event “%s”?").printf (((!)summary).get_value ()); // Should question mark be in or out of quotes? } - description = _("This event will be permanently deleted."); + secondary_text = _("This event will be permanently deleted."); delete_text = _("Delete Event"); } - Object ( - source: source, - ecal_event: ecal_event, - mod_type_prop: mod_type_prop, - primary_text: title, - secondary_text: description, - image_icon: new ThemedIcon ("dialog-warning"), - buttons: Gtk.ButtonsType.CANCEL, - delete_button_text: delete_text - ); - } - - construct { - unowned var trash_button = add_button (delete_button_text, Gtk.ResponseType.YES); + unowned var trash_button = add_button (delete_text, Gtk.ResponseType.YES); trash_button.get_style_context ().add_class (Gtk.STYLE_CLASS_DESTRUCTIVE_ACTION); - } - public Gtk.ResponseType run_dialog () { - var response = (Gtk.ResponseType) this.run (); - if (response == Gtk.ResponseType.YES) { - var calmodel = Calendar.EventStore.get_default (); - calmodel.remove_event (source, ecal_event, mod_type_prop); - } - this.destroy (); - return response; + response.connect ((response) => { + if (response == Gtk.ResponseType.YES) { + var calmodel = Calendar.EventStore.get_default (); + calmodel.remove_event (source, ecal_event, mod_type_prop); + } + + close (); + }); } } diff --git a/src/Widgets/EventMenu.vala b/src/Widgets/EventMenu.vala index df2fb4753..633f24306 100644 --- a/src/Widgets/EventMenu.vala +++ b/src/Widgets/EventMenu.vala @@ -63,7 +63,7 @@ namespace Maya.EventMenu { var delete_dialog = new Calendar.DeleteEventDialog (source, comp, ECal.ObjModType.ALL) { transient_for = application.active_window }; - delete_dialog.run_dialog (); + delete_dialog.present (); } private static void add_exception (ECal.Component comp) { @@ -72,6 +72,6 @@ namespace Maya.EventMenu { var delete_dialog = new Calendar.DeleteEventDialog (source, comp, ECal.ObjModType.THIS) { transient_for = application.active_window }; - delete_dialog.run_dialog (); + delete_dialog.present (); } }