From e57530cbab1283f8d8fc98d88569da08ad9c41b1 Mon Sep 17 00:00:00 2001 From: Sivaiah Nallagatla Date: Sun, 21 Nov 2004 23:30:57 +0000 Subject: added message which gets prompted when user tries to access a book which 2004-11-21 Sivaiah Nallagatla * gui/widgets/eab-gui-util.c (eab_load_error_dialog) : added message which gets prompted when user tries to access a book which is not available in offline mode * gui/component/addressbook-config.c (eabc_general_offline) (offline_status_changed_cb) : added a new check box to properties page to mark a book for offline usage * gui/component/addressbook.c (load_source_cb) : do no try to authenticate in case of offline mode. (auth_required_cb) : new call back which gets called when backend sends notification for password to client svn path=/trunk/; revision=27952 --- addressbook/gui/component/addressbook-config.c | 39 +++++++++++++++++++++++++- addressbook/gui/component/addressbook.c | 36 +++++++++++++++++------- 2 files changed, 64 insertions(+), 11 deletions(-) (limited to 'addressbook/gui/component') diff --git a/addressbook/gui/component/addressbook-config.c b/addressbook/gui/component/addressbook-config.c index ddf44281fb..c675d9a272 100644 --- a/addressbook/gui/component/addressbook-config.c +++ b/addressbook/gui/component/addressbook-config.c @@ -29,6 +29,7 @@ #include #include #include +#include #include #include @@ -541,6 +542,16 @@ name_changed_cb(GtkWidget *w, AddressbookSourceDialog *sdialog) e_source_set_name (sdialog->source, gtk_entry_get_text (GTK_ENTRY (sdialog->display_name))); } +static void +offline_status_changed_cb (GtkWidget *widget, AddressbookSourceDialog *sdialog) +{ + if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))) + e_source_set_property (sdialog->source, "offline_sync", "1"); + else + e_source_set_property (sdialog->source, "offline_sync", NULL); + +} + static GtkWidget * eabc_general_name(EConfig *ec, EConfigItem *item, struct _GtkWidget *parent, struct _GtkWidget *old, void *data) { @@ -548,6 +559,7 @@ eabc_general_name(EConfig *ec, EConfigItem *item, struct _GtkWidget *parent, str const char *uri; GtkWidget *w; GladeXML *gui; + if (old) return old; @@ -567,12 +579,35 @@ eabc_general_name(EConfig *ec, EConfigItem *item, struct _GtkWidget *parent, str gtk_widget_set_sensitive (GTK_WIDGET(sdialog->display_name), FALSE); } } - + g_object_unref(gui); return w; } + +static GtkWidget * +eabc_general_offline(EConfig *ec, EConfigItem *item, struct _GtkWidget *parent, struct _GtkWidget *old, void *data) +{ + AddressbookSourceDialog *sdialog = data; + GtkCheckButton *offline_setting; + int row; + if (old) + return; + else { + row = ((GtkTable*)parent)->nrows; + offline_setting = gtk_check_button_new_with_label (N_("Sync conents locally for offline usage")); + gtk_widget_show (offline_setting); + gtk_container_add (parent, offline_setting); + g_signal_connect (offline_setting, "toggled", G_CALLBACK (offline_status_changed_cb), sdialog); + + } + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (offline_setting), e_source_get_property (sdialog->source, "offline_sync") ? TRUE : FALSE); + gtk_widget_show (offline_setting); + return offline_setting; + +} + #ifdef HAVE_LDAP static void url_changed(AddressbookSourceDialog *sdialog) @@ -617,6 +652,7 @@ ssl_optionmenu_changed_cb(GtkWidget *w, AddressbookSourceDialog *sdialog) e_source_set_property (sdialog->source, "ssl", ldap_unparse_ssl (sdialog->ssl)); } + static GtkWidget * eabc_general_host(EConfig *ec, EConfigItem *item, struct _GtkWidget *parent, struct _GtkWidget *old, void *data) { @@ -857,6 +893,7 @@ static EConfigItem eabc_items[] = { { E_CONFIG_PAGE, "00.general", N_("General") }, { E_CONFIG_SECTION, "00.general/10.display", N_("Addressbook") }, { E_CONFIG_ITEM, "00.general/10.display/10.name", "hbox122", eabc_general_name }, + { E_CONFIG_ITEM, "00.general/10.display/20.offline", NULL, eabc_general_offline }, #ifdef HAVE_LDAP { E_CONFIG_SECTION, "00.general/20.server", N_("Server Information") }, { E_CONFIG_ITEM, "00.general/20.server/00.host", "table31", eabc_general_host }, diff --git a/addressbook/gui/component/addressbook.c b/addressbook/gui/component/addressbook.c index cbf908c17f..dbeccd75fc 100644 --- a/addressbook/gui/component/addressbook.c +++ b/addressbook/gui/component/addressbook.c @@ -120,7 +120,8 @@ load_source_auth_cb (EBook *book, EBookStatus status, gpointer closure) } } - data->cb (book, status, data->closure); + if (data->cb) + data->cb (book, status, data->closure); free_load_source_data (data); } @@ -209,12 +210,28 @@ addressbook_authenticate (EBook *book, gboolean previous_failure, ESource *sourc } else { /* they hit cancel */ - cb (book, E_BOOK_ERROR_CANCELLED, closure); + + cb (book, E_BOOK_ERROR_CANCELLED, closure); } g_free (uri); } + + +static void +auth_required_cb (EBook *book, gpointer data) +{ + LoadSourceData *load_source_data = g_new0(LoadSourceData, 1); + + load_source_data->source = g_object_ref (g_object_ref (e_book_get_source (book))); + load_source_data->cancelled = FALSE; + addressbook_authenticate (book, FALSE, load_source_data->source, + load_source_auth_cb, load_source_data); + + + +} static void load_source_cb (EBook *book, EBookStatus status, gpointer closure) { @@ -229,17 +246,16 @@ load_source_cb (EBook *book, EBookStatus status, gpointer closure) const gchar *auth; auth = e_source_get_property (load_source_data->source, "auth"); - - /* check if the addressbook needs authentication */ - if (auth && strcmp (auth, "none")) { - addressbook_authenticate (book, FALSE, load_source_data->source, - load_source_auth_cb, closure); - - return; + g_signal_connect (book, "auth_required", auth_required_cb, NULL); + + if (e_book_is_online (book)) { + addressbook_authenticate (book, FALSE, load_source_data->source, + load_source_auth_cb, closure); + return; + } } } - load_source_data->cb (book, status, load_source_data->closure); free_load_source_data (load_source_data); } -- cgit v1.2.3