aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/gui/contact-list-editor/e-contact-list-editor.c
diff options
context:
space:
mode:
authorEttore Perazzoli <ettore@src.gnome.org>2002-05-17 02:48:59 +0800
committerEttore Perazzoli <ettore@src.gnome.org>2002-05-17 02:48:59 +0800
commit073927075b22b5a2988e299e91d2ccb7ec58c1c8 (patch)
treebca81ff15073987dcff9ddf5cf19377a22a05ba4 /addressbook/gui/contact-list-editor/e-contact-list-editor.c
parent3a868a57bb55512cf7315b3178d9557d6350be32 (diff)
downloadgsoc2013-evolution-073927075b22b5a2988e299e91d2ccb7ec58c1c8.tar
gsoc2013-evolution-073927075b22b5a2988e299e91d2ccb7ec58c1c8.tar.gz
gsoc2013-evolution-073927075b22b5a2988e299e91d2ccb7ec58c1c8.tar.bz2
gsoc2013-evolution-073927075b22b5a2988e299e91d2ccb7ec58c1c8.tar.lz
gsoc2013-evolution-073927075b22b5a2988e299e91d2ccb7ec58c1c8.tar.xz
gsoc2013-evolution-073927075b22b5a2988e299e91d2ccb7ec58c1c8.tar.zst
gsoc2013-evolution-073927075b22b5a2988e299e91d2ccb7ec58c1c8.zip
New, quit handler for the EvolutionShellComponent. (add_creatable_item):
* gui/component/addressbook-component.c (request_quit): New, quit handler for the EvolutionShellComponent. (add_creatable_item): Set it up. * gui/contact-editor/e-contact-list-editor.c (e_contact_list_editor_request_close_all): New. (e_contact_list_editor_new): Put the contact editor in a static list and gtk_object_weakref() it. (contact_list_editor_destroy_notify): New, GtkDestroyNotify function for the contact editors. * gui/contact-editor/e-contact-editor.c (e_contact_editor_request_close_all): New. (e_contact_editor_new): Put the contact editor in a static list and gtk_object_weakref() it. (contact_editor_destroy_notify): New, GtkDestroyNotify function for the contact editors. svn path=/trunk/; revision=16934
Diffstat (limited to 'addressbook/gui/contact-list-editor/e-contact-list-editor.c')
-rw-r--r--addressbook/gui/contact-list-editor/e-contact-list-editor.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/addressbook/gui/contact-list-editor/e-contact-list-editor.c b/addressbook/gui/contact-list-editor/e-contact-list-editor.c
index c88af3005e..abb08d30f8 100644
--- a/addressbook/gui/contact-list-editor/e-contact-list-editor.c
+++ b/addressbook/gui/contact-list-editor/e-contact-list-editor.c
@@ -97,6 +97,8 @@ enum {
ARG_EDITABLE
};
+static GSList *all_contact_list_editors = NULL;
+
GtkType
e_contact_list_editor_get_type (void)
{
@@ -538,6 +540,14 @@ create_ui (EContactListEditor *ce)
e_pixmaps_update (ce->uic, pixmaps);
}
+static void
+contact_list_editor_destroy_notify (void *data)
+{
+ EContactListEditor *ce = E_CONTACT_LIST_EDITOR (data);
+
+ all_contact_list_editors = g_slist_remove (all_contact_list_editors, ce);
+}
+
EContactListEditor *
e_contact_list_editor_new (EBook *book,
ECard *list_card,
@@ -548,6 +558,9 @@ e_contact_list_editor_new (EBook *book,
ce = E_CONTACT_LIST_EDITOR (gtk_type_new (E_CONTACT_LIST_EDITOR_TYPE));
+ all_contact_list_editors = g_slist_prepend (all_contact_list_editors, ce);
+ gtk_object_weakref (GTK_OBJECT (ce), contact_list_editor_destroy_notify, ce);
+
gtk_object_set (GTK_OBJECT (ce),
"book", book,
"card", list_card,
@@ -978,3 +991,27 @@ fill_in_info(EContactListEditor *editor)
}
}
}
+
+
+gboolean
+e_contact_list_editor_request_close_all (void)
+{
+ GSList *p;
+ GSList *pnext;
+ gboolean retval;
+
+ retval = TRUE;
+ for (p = all_contact_list_editors; p != NULL; p = pnext) {
+ pnext = p->next;
+
+ e_contact_list_editor_raise (E_CONTACT_LIST_EDITOR (p->data));
+ if (! prompt_to_save_changes (E_CONTACT_LIST_EDITOR (p->data))) {
+ retval = FALSE;
+ break;
+ }
+
+ close_dialog (E_CONTACT_LIST_EDITOR (p->data));
+ }
+
+ return retval;
+}