aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/gui/widgets/e-addressbook-view.c
diff options
context:
space:
mode:
authorChris Toshok <toshok@ximian.com>2001-06-04 07:45:20 +0800
committerChris Toshok <toshok@src.gnome.org>2001-06-04 07:45:20 +0800
commit484d91f1f5c40baa74aad0a230fe89f4ed643210 (patch)
treedd558243dc75877a8c699393683e9bbe0f326934 /addressbook/gui/widgets/e-addressbook-view.c
parent9669aebe859441b65258adcc3f2a6819f7903875 (diff)
downloadgsoc2013-evolution-484d91f1f5c40baa74aad0a230fe89f4ed643210.tar
gsoc2013-evolution-484d91f1f5c40baa74aad0a230fe89f4ed643210.tar.gz
gsoc2013-evolution-484d91f1f5c40baa74aad0a230fe89f4ed643210.tar.bz2
gsoc2013-evolution-484d91f1f5c40baa74aad0a230fe89f4ed643210.tar.lz
gsoc2013-evolution-484d91f1f5c40baa74aad0a230fe89f4ed643210.tar.xz
gsoc2013-evolution-484d91f1f5c40baa74aad0a230fe89f4ed643210.tar.zst
gsoc2013-evolution-484d91f1f5c40baa74aad0a230fe89f4ed643210.zip
remove spew, and don't call the ShellView CORBA method if the interface
2001-06-03 Chris Toshok <toshok@ximian.com> * gui/component/addressbook.c (set_status_message): remove spew, and don't call the ShellView CORBA method if the interface doesn't exist (for whatever reason.) * gui/widgets/e-addressbook-view.c (e_addressbook_view_destroy): unref the EAddressbookModel. (create_minicard_view): unref the adapter. (card_added_cb): call e_book_error_dialog if status != SUCCESS. (card_modified_cb): same. (card_removed_cb): new function, and same. (delete_card_cb): pass card_removed_cb as the callback. (emit_status_message): new function, just emit status_message. (status_message): change to call emit_status_message. (card_deleted_cb): emit_status_message ("Done."), and call e_book_error_dialog if status != SUCCESS. (do_remove): pass view in the closure arg. (e_addressbook_view_delete_selection): emit status "Removing cards..." before starting the removal. (e_book_error_dialog): new function - pop up a (possibly) helpful message about why an operation failed. * gui/widgets/e-minicard-view-widget.c (e_minicard_view_widget_new): ref the EAddressbookReflowAdapter. (e_minicard_view_widget_destroy): unref the adapter. (e_minicard_view_widget_get_selection_model): if there isn't a minicard view return NULL. * gui/widgets/e-addressbook-table-adapter.c (e_addressbook_table_adapter_construct): ref the EAddressbookModel. * gui/widgets/e-addressbook-reflow-adapter.c (addressbook_finalize): rename this from addressbook_destroy, to reflect the method change. (e_addressbook_reflow_adapter_class_init): same. (e_addressbook_reflow_adapter_construct): ref the EAddressbookModel. * gui/widgets/e-addressbook-model.h: add editable_set flag. * gui/widgets/e-addressbook-model.c (writable_status): only record the writable state of the addressbook if the user hasn't set it. (e_addressbook_model_init): init editable_set to FALSE. (e_addressbook_model_set_arg): set editable_set to TRUE. svn path=/trunk/; revision=10107
Diffstat (limited to 'addressbook/gui/widgets/e-addressbook-view.c')
-rw-r--r--addressbook/gui/widgets/e-addressbook-view.c65
1 files changed, 61 insertions, 4 deletions
diff --git a/addressbook/gui/widgets/e-addressbook-view.c b/addressbook/gui/widgets/e-addressbook-view.c
index 6b12c95e73..6b73e0c92e 100644
--- a/addressbook/gui/widgets/e-addressbook-view.c
+++ b/addressbook/gui/widgets/e-addressbook-view.c
@@ -33,6 +33,7 @@
#include <gal/widgets/e-popup-menu.h>
#include <gal/menus/gal-view-factory-etable.h>
#include <gal/menus/gal-view-etable.h>
+#include <libgnomeui/gnome-dialog-util.h>
#include <libgnomeprint/gnome-print.h>
#include <libgnomeprint/gnome-print-dialog.h>
@@ -74,6 +75,8 @@ static void selection_get (GtkWidget *invisible, GtkSelectionData *selection_dat
guint info, guint time_stamp, EAddressbookView *view);
static void invisible_destroyed (GtkWidget *invisible, EAddressbookView *view);
+static void e_book_error_dialog (const gchar *msg, EBookStatus status);
+
static GtkTableClass *parent_class = NULL;
/* The arguments we take */
@@ -227,6 +230,9 @@ e_addressbook_view_destroy (GtkObject *object)
{
EAddressbookView *eav = E_ADDRESSBOOK_VIEW(object);
+ if (eav->model)
+ gtk_object_unref(GTK_OBJECT(eav->model));
+
if (eav->book)
gtk_object_unref(GTK_OBJECT(eav->book));
g_free(eav->query);
@@ -457,6 +463,8 @@ create_minicard_view (EAddressbookView *view)
gtk_widget_pop_colormap ();
e_reflow_model_changed (E_REFLOW_MODEL (adapter));
+
+ gtk_object_unref (GTK_OBJECT (adapter));
}
@@ -465,6 +473,8 @@ card_added_cb (EBook* book, EBookStatus status, const char *id,
gpointer user_data)
{
g_print ("%s: %s(): a card was added\n", __FILE__, __FUNCTION__);
+ if (status != E_BOOK_STATUS_SUCCESS)
+ e_book_error_dialog (_("Error adding card"), status);
}
static void
@@ -472,6 +482,17 @@ card_modified_cb (EBook* book, EBookStatus status,
gpointer user_data)
{
g_print ("%s: %s(): a card was modified\n", __FILE__, __FUNCTION__);
+ if (status != E_BOOK_STATUS_SUCCESS)
+ e_book_error_dialog (_("Error modifying card"), status);
+}
+
+static void
+card_removed_cb (EBook* book, EBookStatus status,
+ gpointer user_data)
+{
+ g_print ("%s: %s(): a card was removed\n", __FILE__, __FUNCTION__);
+ if (status != E_BOOK_STATUS_SUCCESS)
+ e_book_error_dialog (_("Error removing card"), status);
}
/* Callback for the add_card signal from the contact editor */
@@ -501,7 +522,7 @@ delete_card_cb (EContactEditor *ce, ECard *card, gpointer data)
EBook *book;
book = E_BOOK (data);
- e_book_remove_card (book, card, card_modified_cb, NULL);
+ e_book_remove_card (book, card, card_removed_cb, NULL);
}
/* Callback used when the contact editor is closed */
@@ -734,7 +755,7 @@ table_drag_data_get (ETable *table,
}
static void
-status_message (GtkObject *object, const gchar *status, EAddressbookView *eav)
+emit_status_message (EAddressbookView *eav, const gchar *status)
{
gtk_signal_emit (GTK_OBJECT (eav),
e_addressbook_view_signals [STATUS_MESSAGE],
@@ -742,6 +763,12 @@ status_message (GtkObject *object, const gchar *status, EAddressbookView *eav)
}
static void
+status_message (GtkObject *object, const gchar *status, EAddressbookView *eav)
+{
+ emit_status_message (eav, status);
+}
+
+static void
stop_state_changed (GtkObject *object, EAddressbookView *eav)
{
command_state_change (eav);
@@ -1142,7 +1169,13 @@ e_addressbook_view_print(EAddressbookView *view)
static void
card_deleted_cb (EBook* book, EBookStatus status, gpointer user_data)
{
- g_print ("%s: %s(): a card was deleted\n", __FILE__, __FUNCTION__);
+ EAddressbookView *view = user_data;
+
+ emit_status_message (view, _("Done."));
+
+ if (status != E_BOOK_STATUS_SUCCESS) {
+ e_book_error_dialog (_("Error removing card"), status);
+ }
}
static void
@@ -1158,7 +1191,7 @@ do_remove (int i, gpointer user_data)
card = e_addressbook_model_get_card (view->model, i);
- e_book_remove_card(book, card, card_deleted_cb, NULL);
+ e_book_remove_card(book, card, card_deleted_cb, view);
gtk_object_unref (GTK_OBJECT (card));
}
@@ -1170,6 +1203,8 @@ e_addressbook_view_delete_selection(EAddressbookView *view)
g_return_if_fail (model);
+ emit_status_message (view, _("Removing cards..."));
+
e_selection_model_foreach (model,
do_remove,
view);
@@ -1182,6 +1217,28 @@ invisible_destroyed (GtkWidget *invisible, EAddressbookView *view)
}
static void
+e_book_error_dialog (const gchar *msg, EBookStatus status)
+{
+ static char *status_to_string[] = {
+ N_("Success"),
+ N_("Unknown error"),
+ N_("Repository offline"),
+ N_("Permission denied"),
+ N_("Card not found"),
+ N_("Protocol not supported"),
+ N_("Canceled"),
+ N_("Other error")
+ };
+ char *error_msg;
+
+ error_msg = g_strdup_printf ("%s: %s", msg, status_to_string [status]);
+
+ gtk_widget_show (gnome_error_dialog (error_msg));
+
+ g_free (error_msg);
+}
+
+static void
selection_get (GtkWidget *invisible,
GtkSelectionData *selection_data,
guint info,