aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook
diff options
context:
space:
mode:
Diffstat (limited to 'addressbook')
-rw-r--r--addressbook/ChangeLog108
-rw-r--r--addressbook/gui/contact-list-editor/contact-list-editor.glade79
-rw-r--r--addressbook/gui/contact-list-editor/e-contact-list-editor.c276
-rw-r--r--addressbook/gui/contact-list-editor/e-contact-list-editor.h13
4 files changed, 180 insertions, 296 deletions
diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog
index b9f6e746fb..03148a3f1d 100644
--- a/addressbook/ChangeLog
+++ b/addressbook/ChangeLog
@@ -1,21 +1,3 @@
-2004-06-14 Not Zed <NotZed@Ximian.com>
-
- * importers/evolution-ldif-importer.c (parseLine): handle LIST
- field types.
- (ldif_fields[]): Add a list type. E_CONTACT_EMAIL is a list field
- type. See #58855.
-
-2004-06-08 Chris Toshok <toshok@ximian.com>
-
- * gui/widgets/e-addressbook-model.c (get_view_idle): new
- function. do the get_view in an idle handler.
- (eab_model_set_property): don't call get_view directly from any
- setter block. instead just add the idle handler (if it's not
- already added.) This keeps us from duplicating queries when both
- "book" and "query" are set using the same g_object_set.
-
- * gui/widgets/e-addressbook-model.h: add book_view_idle_id.
-
2004-06-07 Hans Petter Jansson <hpj@ximian.com>
Fixes #58921.
@@ -23,11 +5,6 @@
* gui/contact-editor/e-contact-editor.c (extract_address_record):
Also check if the po box field is non-empty.
-2004-06-07 Jon Oberheide <jon@focalhost.com>
-
- * gui/contact-list-editor/e-contact-list-model.c: disable editing
- of cells in the contact table.
-
2004-06-07 Hans Petter Jansson <hpj@ximian.com>
Fixes #57795.
@@ -35,96 +12,13 @@
* gui/component/addressbook-migrate.c (migrate_contacts): Change
the "POSTAL" address in 1.4 to "OTHER" in 1.5.
-2004-06-07 Hans Petter Jansson <hpj@ximian.com>
-
- * gui/Makefile.am (SUBDIRS): Fix order of dependencies.
-
-2004-06-07 H P Nadig <hpnadig@pacific.net.in>
-
- * gui/contact-list-editor/e-contact-list-editor.h: Added few
- headers needed for select names dialog.
-
- * gui/contact-list-editor/e-contact-list-editor.c
- (e_contact_list_editor_init): Added select button handler.
- (select_cb): The callback function for Select Button.
- (setup_corba): To setup corba for select names dialog.
- (select_names_ok_cb): Handle Select names dialog entries.
- (add_to_model): Adds cards to the model.
-
- * gui/contact-list-editor/contact-list-editor.glade: New 'Select'
- Button. Tooltips added for buttons in button Box.
-
-2004-06-07 Dan Winship <danw@novell.com>
-
- * gui/component/addressbook-view.c: s/stock_save_as/stock_save-as/
-
-2004-06-04 Larry Ewing <lewing@ximian.com>
-
- * gui/contact-list-editor/e-contact-list-editor.c: remove bonobo
- menus and cruft add ok/cancel buttons.
-
- * gui/contact-list-editor/e-contact-list-editor.h: add buttons for
- ok/cancel.
-
- * gui/contact-list-editor/contact-list-editor.glade: add fields for
- ok/cancel reparent to GtkDialog, other minor adjustments.
-
-2004-06-04 JP Rosevear <jpr@novell.com>
-
- Fixes #55945
- * importers/*.server.in.in: ditto
-
- * importers/evolution-ldif-importer.c: fix OAFIIDs
-
- * importers/evolution-vcard-importer.c: ditto
-
2004-06-04 Chris Toshok <toshok@ximian.com>
* gui/component/select-names/e-select-names-model.c
(name_and_email_simple_query_cb): only resolve destinations
against persons, not contact lists.
-
-2004-06-03 Hans Petter Jansson <hpj@ximian.com>
-
- Fixes #53643 and #26903.
-
- * gui/search/addresstypes.xml: category -> category_list
-
- * gui/search/e-addressbook-search-dialog.c (get_widget): Get
- filter rule from parent view.
- (eab_search_dialog_set_property): Implement.
- (eab_search_dialog_get_property): Impleent.
- (eab_search_dialog_class_init): Set up property methods.
- (get_query): Get filter rule from parent view.
- (eab_search_dialog_init): Don't get the filter widget here,
- wait until parent view property is set.
- (eab_search_dialog_new): Don't poke the parent view in, set it
- as a property instead.
- (eab_search_dialog_dispose): No longer needs to unref rule.
-
- * gui/search/e-addressbook-search-dialog.c: EABSearchDialog no
- longer needs to keep rule internally.
-
- * gui/widgets/Makefile.am: Set SEARCH_RULE_DIR define.
-
- * gui/widgets/e-addressbook-view.c (eab_view_new): Set up filter
- rule and context.
- (eab_view_peek_search_context): Implement.
- (eab_view_peek_search_rule): Implement.
-
- * gui/widgets/e-addressbook-view.h: Keep track of filter rule
- and context. Add protos for added API.
-
-2004-06-03 Jeffrey Stedfast <fejj@novell.com>
-
- * conduit/address-conduit.c (set_status_cleared): Protect against
- a NULL uid. Fixes bug #57619.
- (ecard_from_remote_record): Set the full_name of the contact so
- that we can use that as the FILE_AS rather than the company name,
- which sucked. Fixes a bug I may or may not have reported months
- ago. Ahah, fixes bug #57620.
-
+
2004-06-02 Hans Petter Jansson <hpj@ximian.com>
* gui/component/addressbook-migrate.c
diff --git a/addressbook/gui/contact-list-editor/contact-list-editor.glade b/addressbook/gui/contact-list-editor/contact-list-editor.glade
index 3f6953cbf4..a1deb05bf3 100644
--- a/addressbook/gui/contact-list-editor/contact-list-editor.glade
+++ b/addressbook/gui/contact-list-editor/contact-list-editor.glade
@@ -2,59 +2,24 @@
<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
<glade-interface>
+<requires lib="gnome"/>
+<requires lib="bonobo"/>
-<widget class="GtkDialog" id="contact list editor">
- <property name="visible">True</property>
- <property name="title" translatable="yes">dialog1</property>
+<widget class="GnomeApp" id="contact list editor">
+ <property name="title" translatable="yes">contact-list-editor</property>
<property name="type">GTK_WINDOW_TOPLEVEL</property>
<property name="window_position">GTK_WIN_POS_NONE</property>
<property name="modal">False</property>
+ <property name="default_width">426</property>
+ <property name="default_height">304</property>
<property name="resizable">True</property>
<property name="destroy_with_parent">False</property>
- <property name="has_separator">True</property>
+ <property name="enable_layout_config">True</property>
- <child internal-child="vbox">
- <widget class="GtkVBox" id="dialog-vbox1">
+ <child internal-child="dock">
+ <widget class="BonoboDock" id="dock1">
<property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
-
- <child internal-child="action_area">
- <widget class="GtkHButtonBox" id="dialog-action_area1">
- <property name="visible">True</property>
- <property name="layout_style">GTK_BUTTONBOX_END</property>
-
- <child>
- <widget class="GtkButton" id="cancel-button">
- <property name="visible">True</property>
- <property name="can_default">True</property>
- <property name="can_focus">True</property>
- <property name="label">gtk-cancel</property>
- <property name="use_stock">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="response_id">-6</property>
- </widget>
- </child>
-
- <child>
- <widget class="GtkButton" id="ok-button">
- <property name="visible">True</property>
- <property name="can_default">True</property>
- <property name="can_focus">True</property>
- <property name="label">gtk-ok</property>
- <property name="use_stock">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="response_id">-5</property>
- </widget>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="pack_type">GTK_PACK_END</property>
- </packing>
- </child>
+ <property name="allow_floating">True</property>
<child>
<widget class="GtkVBox" id="vbox8">
@@ -337,7 +302,6 @@
<child>
<widget class="GtkButton" id="add-email-button">
<property name="visible">True</property>
- <property name="tooltip" translatable="yes">Add an email to the List</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-add</property>
@@ -349,7 +313,6 @@
<child>
<widget class="GtkButton" id="remove-button">
<property name="visible">True</property>
- <property name="tooltip" translatable="yes">Remove an email address from the List</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
<property name="label">gtk-remove</property>
@@ -357,18 +320,6 @@
<property name="relief">GTK_RELIEF_NORMAL</property>
</widget>
</child>
-
- <child>
- <widget class="GtkButton" id="select-button">
- <property name="visible">True</property>
- <property name="tooltip" translatable="yes">Insert email adresses from Adress Book</property>
- <property name="can_default">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">Select</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- </widget>
- </child>
</widget>
<packing>
<property name="padding">0</property>
@@ -412,13 +363,13 @@
</packing>
</child>
</widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
</child>
</widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
</child>
</widget>
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 80d5b6c660..e2c62925b6 100644
--- a/addressbook/gui/contact-list-editor/e-contact-list-editor.c
+++ b/addressbook/gui/contact-list-editor/e-contact-list-editor.c
@@ -29,15 +29,13 @@
#include <libgnomeui/gnome-window-icon.h>
#include <gtk/gtkentry.h>
#include <gtk/gtktogglebutton.h>
-#include <gtk/gtkdialog.h>
+#include <bonobo/bonobo-ui-container.h>
+#include <bonobo/bonobo-ui-util.h>
+#include <bonobo/bonobo-window.h>
#include <gal/e-table/e-table-scrolled.h>
#include <libgnomevfs/gnome-vfs-ops.h>
-#include <bonobo/bonobo-control.h>
-#include <bonobo/bonobo-widget.h>
-#include <bonobo/bonobo-exception.h>
-
#include "shell/evolution-shell-component-utils.h"
#include "widgets/misc/e-image-chooser.h"
@@ -65,6 +63,7 @@ static gboolean e_contact_list_editor_is_valid (EABEditor *editor);
static gboolean e_contact_list_editor_is_changed (EABEditor *editor);
static GtkWindow* e_contact_list_editor_get_window (EABEditor *editor);
+static void create_ui (EContactListEditor *ce);
static void set_editable (EContactListEditor *editor);
static void command_state_changed (EContactListEditor *editor);
static void extract_info(EContactListEditor *editor);
@@ -72,15 +71,11 @@ static void fill_in_info(EContactListEditor *editor);
static void add_email_cb (GtkWidget *w, EContactListEditor *editor);
static void remove_entry_cb (GtkWidget *w, EContactListEditor *editor);
-static void select_cb (GtkWidget *w, EContactListEditor *editor);
static void list_name_changed_cb (GtkWidget *w, EContactListEditor *editor);
static void list_image_changed_cb (GtkWidget *w, EContactListEditor *editor);
static void visible_addrs_toggled_cb (GtkWidget *w, EContactListEditor *editor);
static void source_selected (GtkWidget *source_option_menu, ESource *source, EContactListEditor *editor);
-static void close_cb (GtkWidget *widget, EContactListEditor *editor);
-static void save_and_close_cb (GtkWidget *widget, EContactListEditor *editor);
-
static gint app_delete_event_cb (GtkWidget *widget, GdkEvent *event, gpointer data);
static gboolean table_drag_drop_cb (ETable *table, int row, int col, GdkDragContext *context,
gint x, gint y, guint time, EContactListEditor *editor);
@@ -190,6 +185,8 @@ static void
e_contact_list_editor_init (EContactListEditor *editor)
{
GladeXML *gui;
+ GtkWidget *bonobo_win;
+ BonoboUIContainer *container;
GList *icon_list;
editor->contact = NULL;
@@ -215,7 +212,6 @@ e_contact_list_editor_init (EContactListEditor *editor)
editor->add_button = glade_xml_get_widget (editor->gui, "add-email-button");
editor->remove_button = glade_xml_get_widget (editor->gui, "remove-button");
- editor->select_button = glade_xml_get_widget (editor->gui, "select-button");
editor->email_entry = glade_xml_get_widget (gui, "email-entry");
editor->list_name_entry = glade_xml_get_widget (gui, "list-name-entry");
@@ -223,8 +219,40 @@ e_contact_list_editor_init (EContactListEditor *editor)
editor->visible_addrs_checkbutton = glade_xml_get_widget (gui, "visible-addrs-checkbutton");
editor->source_menu = glade_xml_get_widget (gui, "source-option-menu-source");
- editor->ok_button = glade_xml_get_widget (gui, "ok-button");
- editor->cancel_button = glade_xml_get_widget (gui, "cancel-button");
+ /* Construct the app */
+ bonobo_win = bonobo_window_new ("contact-list-editor", _("Contact List Editor"));
+
+ /* FIXME: The sucking bit */
+ {
+ GtkWidget *contents;
+
+ contents = bonobo_dock_get_client_area (gnome_app_get_dock (GNOME_APP (editor->app)));
+
+ if (!contents) {
+ g_message ("contact_list_editor_construct(): Could not get contents");
+ return;
+ }
+ gtk_widget_ref (contents);
+ gtk_container_remove (GTK_CONTAINER (contents->parent), contents);
+ bonobo_window_set_contents (BONOBO_WINDOW (bonobo_win), contents);
+ gtk_widget_destroy (editor->app);
+ editor->app = bonobo_win;
+ }
+
+ /* Build the menu and toolbar */
+
+ container = bonobo_window_get_ui_container (BONOBO_WINDOW (editor->app));
+
+ editor->uic = bonobo_ui_component_new_default ();
+ if (!editor->uic) {
+ g_message ("e_contact_list_editor_init(): eeeeek, could not create the UI handler!");
+ return;
+ }
+ bonobo_ui_component_set_container (editor->uic,
+ bonobo_object_corba_objref (
+ BONOBO_OBJECT (container)), NULL);
+
+ create_ui (editor);
/* connect signals */
g_signal_connect (editor->add_button,
@@ -233,8 +261,6 @@ e_contact_list_editor_init (EContactListEditor *editor)
"activate", G_CALLBACK(add_email_cb), editor);
g_signal_connect (editor->remove_button,
"clicked", G_CALLBACK(remove_entry_cb), editor);
- g_signal_connect (editor->select_button,
- "clicked", G_CALLBACK(select_cb), editor);
g_signal_connect (editor->list_name_entry,
"changed", G_CALLBACK(list_name_changed_cb), editor);
g_signal_connect (editor->visible_addrs_checkbutton,
@@ -250,12 +276,6 @@ e_contact_list_editor_init (EContactListEditor *editor)
g_signal_connect (e_table_scrolled_get_table (E_TABLE_SCROLLED (editor->table)),
"table_drag_data_received", G_CALLBACK(table_drag_data_received_cb), editor);
- g_signal_connect (editor->ok_button,
- "clicked", G_CALLBACK(save_and_close_cb), editor);
- g_signal_connect (editor->cancel_button,
- "clicked", G_CALLBACK(close_cb), editor);
-
-
g_signal_connect (editor->list_image,
"changed", G_CALLBACK(list_image_changed_cb), editor);
@@ -265,11 +285,10 @@ e_contact_list_editor_init (EContactListEditor *editor)
command_state_changed (editor);
/* Connect to the deletion of the dialog */
+
g_signal_connect (editor->app, "delete_event",
G_CALLBACK (app_delete_event_cb), editor);
- gtk_dialog_set_has_separator (GTK_DIALOG (editor->app), FALSE);
-
/* set the icon */
icon_list = e_icon_factory_get_icon_list ("stock_contact-list");
if (icon_list) {
@@ -277,8 +296,6 @@ e_contact_list_editor_init (EContactListEditor *editor)
g_list_foreach (icon_list, (GFunc) g_object_unref, NULL);
g_list_free (icon_list);
}
-
- gtk_widget_show_all (editor->app);
}
static void
@@ -453,8 +470,10 @@ e_contact_list_editor_get_window (EABEditor *editor)
}
static void
-close_cb (GtkWidget *widget, EContactListEditor *cle)
+file_close_cb (GtkWidget *widget, gpointer data)
{
+ EContactListEditor *cle = E_CONTACT_LIST_EDITOR (data);
+
if (!eab_editor_prompt_to_save_changes (EAB_EDITOR (cle), GTK_WINDOW (cle->app)))
return;
@@ -462,8 +481,47 @@ close_cb (GtkWidget *widget, EContactListEditor *cle)
}
static void
-save_and_close_cb (GtkWidget *widget, EContactListEditor *cle)
+file_save_cb (GtkWidget *widget, gpointer data)
+{
+ EContactListEditor *cle = E_CONTACT_LIST_EDITOR (data);
+
+ save_contact (cle, FALSE);
+}
+
+static void
+file_save_as_cb (GtkWidget *widget, gpointer data)
{
+ EContactListEditor *cle = E_CONTACT_LIST_EDITOR (data);
+
+ extract_info (cle);
+
+ eab_contact_save(_("Save List as VCard"), cle->contact, GTK_WINDOW (cle->app));
+}
+
+static void
+file_send_as_cb (GtkWidget *widget, gpointer data)
+{
+ EContactListEditor *cle = E_CONTACT_LIST_EDITOR (data);
+
+ extract_info (cle);
+
+ eab_send_contact(cle->contact, 0, EAB_DISPOSITION_AS_ATTACHMENT);
+}
+
+static void
+file_send_to_cb (GtkWidget *widget, gpointer data)
+{
+ EContactListEditor *cle = E_CONTACT_LIST_EDITOR (data);
+
+ extract_info (cle);
+
+ eab_send_contact(cle->contact, 0, EAB_DISPOSITION_AS_TO);
+}
+
+static void
+tb_save_and_close_cb (GtkWidget *widget, gpointer data)
+{
+ EContactListEditor *cle = E_CONTACT_LIST_EDITOR (data);
save_contact (cle, TRUE);
}
@@ -484,6 +542,72 @@ list_deleted_cb (EBook *book, EBookStatus status, EContactListEditor *cle)
}
static void
+delete_cb (GtkWidget *widget, gpointer data)
+{
+ EContactListEditor *cle = E_CONTACT_LIST_EDITOR (data);
+ EContact *contact = cle->contact;
+
+ g_object_ref (contact);
+
+ if (eab_editor_confirm_delete (GTK_WINDOW(cle->app))) {
+
+ extract_info (cle);
+
+ if (!cle->is_new_list) {
+ gtk_widget_set_sensitive (cle->app, FALSE);
+ cle->in_async_call = TRUE;
+
+ g_object_ref (cle); /* hold reference for callback */
+ e_book_async_remove_contact (cle->book, contact, (EBookCallback)list_deleted_cb, cle);
+ }
+ }
+
+ g_object_unref (contact);
+}
+
+static
+BonoboUIVerb verbs [] = {
+ BONOBO_UI_UNSAFE_VERB ("ContactListEditorSave", file_save_cb),
+ BONOBO_UI_UNSAFE_VERB ("ContactListEditorSaveClose", tb_save_and_close_cb),
+ BONOBO_UI_UNSAFE_VERB ("ContactListEditorDelete", delete_cb),
+ BONOBO_UI_UNSAFE_VERB ("ContactListEditorSaveAs", file_save_as_cb),
+ BONOBO_UI_UNSAFE_VERB ("ContactListEditorSendAs", file_send_as_cb),
+ BONOBO_UI_UNSAFE_VERB ("ContactListEditorSendTo", file_send_to_cb),
+ BONOBO_UI_UNSAFE_VERB ("ContactListEditorClose", file_close_cb),
+ BONOBO_UI_VERB_END
+};
+
+static EPixmap pixmaps[] = {
+ E_PIXMAP ("/commands/ContactListEditorSave", "stock_save", E_ICON_SIZE_MENU),
+ E_PIXMAP ("/commands/ContactListEditorSaveClose", "stock_save", E_ICON_SIZE_MENU),
+ E_PIXMAP ("/commands/ContactListEditorSaveAs", "stock_save_as", E_ICON_SIZE_MENU),
+
+ E_PIXMAP ("/commands/ContactListEditorDelete", "stock_delete", E_ICON_SIZE_MENU),
+#if 0 /* Envelope printing is disabled for Evolution 1.0. */
+ E_PIXMAP ("/commands/ContactListEditorPrint", "stock_print", E_ICON_SIZE_MENU),
+ E_PIXMAP ("/commands/ContactListEditorPrintEnvelope", "stock_print", E_ICON_SIZE_MENU),
+#endif
+ E_PIXMAP ("/Toolbar/ContactListEditorSaveClose", "stock_save", E_ICON_SIZE_LARGE_TOOLBAR),
+ E_PIXMAP ("/Toolbar/ContactListEditorDelete", "stock_delete", E_ICON_SIZE_LARGE_TOOLBAR),
+ E_PIXMAP ("/Toolbar/ContactListEditorPrint", "stock_print", E_ICON_SIZE_LARGE_TOOLBAR),
+
+ E_PIXMAP_END
+};
+
+static void
+create_ui (EContactListEditor *ce)
+{
+ bonobo_ui_component_add_verb_list_with_data (
+ ce->uic, verbs, ce);
+
+ bonobo_ui_util_set_ui (ce->uic, PREFIX,
+ EVOLUTION_UIDIR "/evolution-contact-list-editor.xml",
+ "evolution-contact-list-editor", NULL);
+
+ e_pixmaps_update (ce->uic, pixmaps);
+}
+
+static void
contact_list_editor_destroy_notify (gpointer data,
GObject *where_the_object_was)
{
@@ -646,90 +770,6 @@ e_contact_list_editor_create_table(gchar *name,
return table;
}
-static void
-add_to_model (EContactListEditor *editor, EDestination **cards)
-{
- int i;
-
- for (i = 0; cards[i] != NULL; i++) {
- e_contact_list_model_add_destination (E_CONTACT_LIST_MODEL(editor->model), cards[i]);
- }
-}
-
-static void
-select_names_ok_cb (BonoboListener *listener, const char *event_name, const CORBA_any *arg,
- CORBA_Environment *ev, gpointer data)
-{
- EDestination **destv;
-
- char *string = NULL;
-
- EContactListEditor *ce;
-
- ce = E_CONTACT_LIST_EDITOR (data);
-
- Bonobo_Control corba_control = GNOME_Evolution_Addressbook_SelectNames_getEntryBySection
- (ce->corba_select_names, "Members", ev);
- GtkWidget *control_widget = bonobo_widget_new_control_from_objref (corba_control, CORBA_OBJECT_NIL);
-
- bonobo_widget_get_property (BONOBO_WIDGET (control_widget), "destinations",
- TC_CORBA_string, &string, NULL);
-
- destv = e_destination_importv (string);
- if (destv) {
- add_to_model (ce, destv);
- g_free (destv);
- }
-
- ce->changed = TRUE;
- command_state_changed (ce);
-}
-
-static gboolean
-setup_corba (EContactListEditor *editor)
-{
-
- CORBA_Environment ev;
-
- CORBA_exception_init (&ev);
-
- editor->corba_select_names = bonobo_activation_activate_from_id (SELECT_NAMES_OAFIID, 0, NULL, &ev);
-
- /* OAF seems to be broken -- it can return a CORBA_OBJECT_NIL without
- raising an exception in `ev'. */
- if (ev._major != CORBA_NO_EXCEPTION || editor->corba_select_names == CORBA_OBJECT_NIL) {
- CORBA_exception_free (&ev);
- return FALSE;
- }
-
- GNOME_Evolution_Addressbook_SelectNames_addSection (
- editor->corba_select_names, "Members", gettext ("Members"), &ev);
-
- bonobo_event_source_client_add_listener (editor->corba_select_names,
- (BonoboListenerCallbackFn) select_names_ok_cb,
- "GNOME/Evolution:ok:dialog", NULL, editor);
-
- CORBA_exception_free (&ev);
-
- return TRUE;
-}
-
-static void
-select_cb (GtkWidget *w, EContactListEditor *editor)
-{
- CORBA_Environment ev;
-
- if(!setup_corba (editor))
- return;
-
- CORBA_exception_init (&ev);
-
- GNOME_Evolution_Addressbook_SelectNames_activateDialog (
- editor->corba_select_names, _("Required Participants"), &ev);
-
- CORBA_exception_free (&ev);
-}
-
GtkWidget *
e_contact_list_editor_create_source_option_menu (gchar *name,
gchar *string1, gchar *string2,
@@ -947,8 +987,20 @@ command_state_changed (EContactListEditor *editor)
{
gboolean valid = eab_editor_is_valid (EAB_EDITOR (editor));
- /* FIXME set the ok button to ok */
- gtk_widget_set_sensitive (editor->ok_button, valid);
+ bonobo_ui_component_set_prop (editor->uic,
+ "/commands/ContactListEditorSaveClose",
+ "sensitive",
+ editor->changed && valid && editor->editable ? "1" : "0", NULL);
+
+ bonobo_ui_component_set_prop (editor->uic,
+ "/commands/ContactListEditorSave",
+ "sensitive",
+ editor->changed && valid && editor->editable ? "1" : "0", NULL);
+
+ bonobo_ui_component_set_prop (editor->uic,
+ "/commands/ContactListEditorDelete",
+ "sensitive",
+ editor->editable && !editor->is_new_list ? "1" : "0", NULL);
}
static void
diff --git a/addressbook/gui/contact-list-editor/e-contact-list-editor.h b/addressbook/gui/contact-list-editor/e-contact-list-editor.h
index 9fbda49c5b..601cb23fe2 100644
--- a/addressbook/gui/contact-list-editor/e-contact-list-editor.h
+++ b/addressbook/gui/contact-list-editor/e-contact-list-editor.h
@@ -30,7 +30,6 @@
#include <libebook/e-book-async.h>
#include <libebook/e-contact.h>
-#include "addressbook/util/e-destination.h"
G_BEGIN_DECLS
@@ -40,7 +39,6 @@ G_BEGIN_DECLS
#define E_IS_CONTACT_LIST_EDITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), E_TYPE_CONTACT_LIST_EDITOR))
#define E_IS_CONTACT_LIST_EDITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), E_TYPE_CONTACT_LIST_EDITOR))
-#define SELECT_NAMES_OAFIID "OAFIID:GNOME_Evolution_Addressbook_SelectNames:" BASE_VERSION
typedef struct _EContactListEditor EContactListEditor;
typedef struct _EContactListEditorClass EContactListEditorClass;
@@ -66,21 +64,10 @@ struct _EContactListEditor
GtkWidget *list_name_entry;
GtkWidget *add_button;
GtkWidget *remove_button;
- GtkWidget *select_button;
GtkWidget *list_image_button;
GtkWidget *visible_addrs_checkbutton;
GtkWidget *list_image;
GtkWidget *source_menu;
- GtkWidget *ok_button;
- GtkWidget *cancel_button;
-
- /* FIXME: Unfortunately, we can't use the proper name here, as it'd
- * create a circular dependency. The long-term solution would be to
- * move the select-names component out of the component/ dir so it can
- * be built before sources using this.
- *
- * GNOME_Evolution_Addressbook_SelectNames corba_select_names; */
- gpointer corba_select_names;
/* Whether we are editing a new contact or an existing one */
guint is_new_list : 1;