diff options
Diffstat (limited to 'addressbook/gui')
-rw-r--r-- | addressbook/gui/component/addressbook-storage.c | 4 | ||||
-rw-r--r-- | addressbook/gui/contact-editor/e-contact-editor.c | 15 | ||||
-rw-r--r-- | addressbook/gui/contact-editor/e-contact-editor.h | 9 | ||||
-rw-r--r-- | addressbook/gui/widgets/e-addressbook-view.c | 7 | ||||
-rw-r--r-- | addressbook/gui/widgets/e-minicard.c | 46 | ||||
-rw-r--r-- | addressbook/gui/widgets/e-minicard.h | 3 |
6 files changed, 56 insertions, 28 deletions
diff --git a/addressbook/gui/component/addressbook-storage.c b/addressbook/gui/component/addressbook-storage.c index df11a38cbe..531e2acd7b 100644 --- a/addressbook/gui/component/addressbook-storage.c +++ b/addressbook/gui/component/addressbook-storage.c @@ -480,8 +480,8 @@ addressbook_source_free (AddressbookSource *source) g_free (source->ldap.host); g_free (source->ldap.port); g_free (source->ldap.rootdn); - } - else { + g_free (source->ldap.binddn); + } else { g_free (source->file.path); } diff --git a/addressbook/gui/contact-editor/e-contact-editor.c b/addressbook/gui/contact-editor/e-contact-editor.c index 0ebe11a513..e65e9b9efb 100644 --- a/addressbook/gui/contact-editor/e-contact-editor.c +++ b/addressbook/gui/contact-editor/e-contact-editor.c @@ -570,6 +570,9 @@ categories_clicked(GtkWidget *button, EContactEditor *editor) "categories", &categories, NULL); dialog = GNOME_DIALOG(e_categories_new(categories)); + gtk_object_set(GTK_OBJECT(dialog), + "header", _("This contact belongs to these categories:"), + NULL); gtk_widget_show(GTK_WIDGET(dialog)); result = gnome_dialog_run (dialog); g_free (categories); @@ -1786,3 +1789,15 @@ extract_info(EContactEditor *editor) } } } + +/** + * e_contact_editor_raise: + * @config: The %EContactEditor object. + * + * Raises the dialog associated with this %EContactEditor object. + */ +void +e_contact_editor_raise (EContactEditor *editor) +{ + gdk_window_raise (GTK_WIDGET (editor->app)->window); +} diff --git a/addressbook/gui/contact-editor/e-contact-editor.h b/addressbook/gui/contact-editor/e-contact-editor.h index fae6939595..a2067b1a88 100644 --- a/addressbook/gui/contact-editor/e-contact-editor.h +++ b/addressbook/gui/contact-editor/e-contact-editor.h @@ -99,12 +99,13 @@ struct _EContactEditorClass void (* editor_closed) (EContactEditor *ce); }; +EContactEditor *e_contact_editor_new (ECard *card, + gboolean is_new_card); +GtkType e_contact_editor_get_type (void); +void e_contact_editor_raise (EContactEditor *editor); -EContactEditor *e_contact_editor_new (ECard *card, gboolean is_new_card); -GtkType e_contact_editor_get_type (void); - -gboolean e_contact_editor_confirm_delete(GtkWindow *parent); +gboolean e_contact_editor_confirm_delete (GtkWindow *parent); #ifdef __cplusplus } diff --git a/addressbook/gui/widgets/e-addressbook-view.c b/addressbook/gui/widgets/e-addressbook-view.c index 946be317e4..24070181f3 100644 --- a/addressbook/gui/widgets/e-addressbook-view.c +++ b/addressbook/gui/widgets/e-addressbook-view.c @@ -811,12 +811,15 @@ e_addressbook_view_setup_menus (EAddressbookView *view, GalViewMenus *views; GalViewFactory *factory; ETableSpecification *spec; + char *galview; collection = gal_view_collection_new(); - /* FIXME: Memory leak. */ + + galview = gnome_util_prepend_user_home("/evolution/views/addressbook/"); gal_view_collection_set_storage_directories(collection, EVOLUTION_DATADIR "/evolution/views/addressbook/", - gnome_util_prepend_user_home("/evolution/views/addressbook/")); + galview); + g_free(galview); spec = e_table_specification_new(); e_table_specification_load_from_string(spec, SPEC); diff --git a/addressbook/gui/widgets/e-minicard.c b/addressbook/gui/widgets/e-minicard.c index b77b1bbfd2..be0fe6eba8 100644 --- a/addressbook/gui/widgets/e-minicard.c +++ b/addressbook/gui/widgets/e-minicard.c @@ -146,6 +146,8 @@ e_minicard_init (EMinicard *minicard) minicard->card = NULL; minicard->simple = e_card_simple_new(NULL); + minicard->editor = NULL; + minicard->changed = FALSE; e_canvas_item_set_reflow_callback(GNOME_CANVAS_ITEM(minicard), e_minicard_reflow); @@ -491,7 +493,9 @@ delete_card_cb (EContactEditor *ce, ECard *card, gpointer data) static void editor_closed_cb (EContactEditor *ce, gpointer data) { + EMinicard *minicard = data; gtk_object_unref (GTK_OBJECT (ce)); + minicard->editor = NULL; } static gboolean @@ -586,27 +590,29 @@ e_minicard_event (GnomeCanvasItem *item, GdkEvent *event) case GDK_2BUTTON_PRESS: if (event->button.button == 1 && E_IS_MINICARD_VIEW(item->parent)) { - EContactEditor *ce; - EBook *book = NULL; - if (E_IS_MINICARD_VIEW(item->parent)) { - - gtk_object_get(GTK_OBJECT(item->parent), - "book", &book, - NULL); - } - ce = e_contact_editor_new (e_minicard->card, FALSE); - - if (book != NULL) { - gtk_signal_connect (GTK_OBJECT (ce), "add_card", - GTK_SIGNAL_FUNC (add_card_cb), book); - gtk_signal_connect (GTK_OBJECT (ce), "commit_card", - GTK_SIGNAL_FUNC (commit_card_cb), book); - gtk_signal_connect (GTK_OBJECT (ce), "delete_card", - GTK_SIGNAL_FUNC (delete_card_cb), book); - } + if (e_minicard->editor) { + e_contact_editor_raise(e_minicard->editor); + } else { + EBook *book = NULL; + if (E_IS_MINICARD_VIEW(item->parent)) { + gtk_object_get(GTK_OBJECT(item->parent), + "book", &book, + NULL); + } + e_minicard->editor = e_contact_editor_new (e_minicard->card, FALSE); + + if (book != NULL) { + gtk_signal_connect (GTK_OBJECT (e_minicard->editor), "add_card", + GTK_SIGNAL_FUNC (add_card_cb), book); + gtk_signal_connect (GTK_OBJECT (e_minicard->editor), "commit_card", + GTK_SIGNAL_FUNC (commit_card_cb), book); + gtk_signal_connect (GTK_OBJECT (e_minicard->editor), "delete_card", + GTK_SIGNAL_FUNC (delete_card_cb), book); + } - gtk_signal_connect (GTK_OBJECT (ce), "editor_closed", - GTK_SIGNAL_FUNC (editor_closed_cb), NULL); + gtk_signal_connect (GTK_OBJECT (e_minicard->editor), "editor_closed", + GTK_SIGNAL_FUNC (editor_closed_cb), e_minicard); + } return TRUE; } break; diff --git a/addressbook/gui/widgets/e-minicard.h b/addressbook/gui/widgets/e-minicard.h index a0272ee58b..54c5806a28 100644 --- a/addressbook/gui/widgets/e-minicard.h +++ b/addressbook/gui/widgets/e-minicard.h @@ -22,6 +22,7 @@ #define __E_MINICARD_H__ #include <gnome.h> +#include "addressbook/contact-editor/e-contact-editor.h" #include "addressbook/backend/ebook/e-card.h" #include "addressbook/backend/ebook/e-card-simple.h" @@ -69,6 +70,8 @@ struct _EMinicard GnomeCanvasItem *header_rect; GnomeCanvasItem *header_text; + EContactEditor *editor; + GList *fields; /* Of type EMinicardField */ guint needs_remodeling : 1; |