diff options
author | Ettore Perazzoli <ettore@src.gnome.org> | 2002-05-17 02:48:59 +0800 |
---|---|---|
committer | Ettore Perazzoli <ettore@src.gnome.org> | 2002-05-17 02:48:59 +0800 |
commit | 073927075b22b5a2988e299e91d2ccb7ec58c1c8 (patch) | |
tree | bca81ff15073987dcff9ddf5cf19377a22a05ba4 /addressbook/gui/contact-editor | |
parent | 3a868a57bb55512cf7315b3178d9557d6350be32 (diff) | |
download | gsoc2013-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-editor')
-rw-r--r-- | addressbook/gui/contact-editor/e-contact-editor.c | 37 | ||||
-rw-r--r-- | addressbook/gui/contact-editor/e-contact-editor.h | 20 |
2 files changed, 48 insertions, 9 deletions
diff --git a/addressbook/gui/contact-editor/e-contact-editor.c b/addressbook/gui/contact-editor/e-contact-editor.c index fd0f14ddb5..a3dd431d2e 100644 --- a/addressbook/gui/contact-editor/e-contact-editor.c +++ b/addressbook/gui/contact-editor/e-contact-editor.c @@ -112,6 +112,8 @@ enum { DYNAMIC_LIST_ADDRESS }; +static GSList *all_contact_editors = NULL; + GtkType e_contact_editor_get_type (void) { @@ -1489,6 +1491,14 @@ supported_fields_cb (EBook *book, EBookStatus status, command_state_changed (ce); } +static void +contact_editor_destroy_notify (void *data) +{ + EContactEditor *ce = E_CONTACT_EDITOR (data); + + all_contact_editors = g_slist_remove (all_contact_editors, ce); +} + EContactEditor * e_contact_editor_new (EBook *book, ECard *card, @@ -1502,6 +1512,9 @@ e_contact_editor_new (EBook *book, ce = E_CONTACT_EDITOR (gtk_type_new (E_CONTACT_EDITOR_TYPE)); + all_contact_editors = g_slist_prepend (all_contact_editors, ce); + gtk_object_weakref (GTK_OBJECT (ce), contact_editor_destroy_notify, ce); + gtk_object_set (GTK_OBJECT (ce), "book", book, "card", card, @@ -2746,3 +2759,27 @@ enable_widget (GtkWidget *widget, gboolean enabled) else gtk_widget_set_sensitive (widget, enabled); } + + +gboolean +e_contact_editor_request_close_all (void) +{ + GSList *p; + GSList *pnext; + gboolean retval; + + retval = TRUE; + for (p = all_contact_editors; p != NULL; p = pnext) { + pnext = p->next; + + e_contact_editor_raise (E_CONTACT_EDITOR (p->data)); + if (! prompt_to_save_changes (E_CONTACT_EDITOR (p->data))) { + retval = FALSE; + break; + } + + close_dialog (E_CONTACT_EDITOR (p->data)); + } + + return retval; +} diff --git a/addressbook/gui/contact-editor/e-contact-editor.h b/addressbook/gui/contact-editor/e-contact-editor.h index 249640379b..0010182b99 100644 --- a/addressbook/gui/contact-editor/e-contact-editor.h +++ b/addressbook/gui/contact-editor/e-contact-editor.h @@ -117,17 +117,19 @@ struct _EContactEditorClass void (* editor_closed) (EContactEditor *ce); }; -EContactEditor *e_contact_editor_new (EBook *book, - ECard *card, - gboolean is_new_card, - gboolean editable); -GtkType e_contact_editor_get_type (void); -void e_contact_editor_show (EContactEditor *editor); -void e_contact_editor_close (EContactEditor *editor); -void e_contact_editor_raise (EContactEditor *editor); +EContactEditor *e_contact_editor_new (EBook *book, + ECard *card, + gboolean is_new_card, + gboolean editable); +GtkType e_contact_editor_get_type (void); +void e_contact_editor_show (EContactEditor *editor); +void e_contact_editor_close (EContactEditor *editor); +void e_contact_editor_raise (EContactEditor *editor); -gboolean e_contact_editor_confirm_delete (GtkWindow *parent); +gboolean e_contact_editor_confirm_delete (GtkWindow *parent); + +gboolean e_contact_editor_request_close_all (void); #ifdef __cplusplus } |