diff options
-rw-r--r-- | addressbook/gui/widgets/eab-contact-display.c | 43 | ||||
-rw-r--r-- | addressbook/gui/widgets/eab-gui-util.c | 1 | ||||
-rw-r--r-- | addressbook/util/eab-book-util.c | 1 | ||||
-rw-r--r-- | mail/em-account-editor.c | 31 | ||||
-rw-r--r-- | plugins/google-account-setup/google-source.c | 2 |
5 files changed, 63 insertions, 15 deletions
diff --git a/addressbook/gui/widgets/eab-contact-display.c b/addressbook/gui/widgets/eab-contact-display.c index da558352bb..d428f8ed77 100644 --- a/addressbook/gui/widgets/eab-contact-display.c +++ b/addressbook/gui/widgets/eab-contact-display.c @@ -427,6 +427,8 @@ render_title_block (GString *buffer, /* Only handle inlined photos for now */ if (photo && photo->type == E_CONTACT_PHOTO_TYPE_INLINED) { g_string_append (buffer, "<img border=\"1\" src=\"internal-contact-photo:\">"); + } else if (photo && photo->type == E_CONTACT_PHOTO_TYPE_URI && photo->data.uri && *photo->data.uri) { + g_string_append_printf (buffer, "<img border=\"1\" src=\"%s\">", photo->data.uri); } if (photo) e_contact_photo_free (photo); @@ -929,7 +931,22 @@ eab_contact_display_render_compact (EABContactDisplay *display, * image here. we don't scale the pixbuf * itself, just insert width/height tags in * the html */ - gdk_pixbuf_loader_write (loader, photo->data.inlined.data, photo->data.inlined.length, NULL); + if (photo->type == E_CONTACT_PHOTO_TYPE_INLINED) { + gdk_pixbuf_loader_write (loader, photo->data.inlined.data, photo->data.inlined.length, NULL); + } else if (photo->type == E_CONTACT_PHOTO_TYPE_URI && photo->data.uri && + g_ascii_strncasecmp (photo->data.uri, "file://", 7) == 0) { + gchar *filename, *contents = NULL; + gsize length; + + filename = g_filename_from_uri (photo->data.uri, NULL, NULL); + if (filename) { + if (g_file_get_contents (filename, &contents, &length, NULL)) { + gdk_pixbuf_loader_write (loader, (const guchar *) contents, length, NULL); + g_free (contents); + } + g_free (filename); + } + } gdk_pixbuf_loader_close (loader, NULL); pixbuf = gdk_pixbuf_loader_get_pixbuf (loader); if (pixbuf) @@ -949,13 +966,20 @@ eab_contact_display_render_compact (EABContactDisplay *display, calced_width *= ((gfloat) MAX_COMPACT_IMAGE_DIMENSION / max_dimension); calced_height *= ((gfloat) MAX_COMPACT_IMAGE_DIMENSION / max_dimension); } + g_object_unref (pixbuf); } - g_object_unref (pixbuf); - g_string_append_printf ( - buffer, - "<img width=\"%d\" height=\"%d\" src=\"internal-contact-photo:\">", - calced_width, calced_height); + if (photo->type == E_CONTACT_PHOTO_TYPE_URI && photo->data.uri && *photo->data.uri) + g_string_append_printf ( + buffer, + "<img width=\"%d\" height=\"%d\" src=\"%s\">", + calced_width, calced_height, photo->data.uri); + else + g_string_append_printf ( + buffer, + "<img width=\"%d\" height=\"%d\" src=\"internal-contact-photo:\">", + calced_width, calced_height); + e_contact_photo_free (photo); } @@ -1174,9 +1198,10 @@ contact_display_url_requested (GtkHTML *html, if (photo == NULL) photo = e_contact_get (contact, E_CONTACT_LOGO); - gtk_html_stream_write ( - handle, (gchar *) photo->data.inlined.data, - photo->data.inlined.length); + if (photo->type == E_CONTACT_PHOTO_TYPE_INLINED) + gtk_html_stream_write ( + handle, (gchar *) photo->data.inlined.data, + photo->data.inlined.length); gtk_html_end (html, handle, GTK_HTML_STREAM_OK); diff --git a/addressbook/gui/widgets/eab-gui-util.c b/addressbook/gui/widgets/eab-gui-util.c index eb98676169..befc8836ca 100644 --- a/addressbook/gui/widgets/eab-gui-util.c +++ b/addressbook/gui/widgets/eab-gui-util.c @@ -495,6 +495,7 @@ do_copy (gpointer data, contact = data; book_client = process->destination; + e_contact_inline_local_photos (contact, NULL); process->count++; eab_merging_book_add_contact ( diff --git a/addressbook/util/eab-book-util.c b/addressbook/util/eab-book-util.c index eff5fc1058..30cd2acb96 100644 --- a/addressbook/util/eab-book-util.c +++ b/addressbook/util/eab-book-util.c @@ -136,6 +136,7 @@ eab_contact_list_to_string (const GSList *contacts) EContact *contact = l->data; gchar *vcard_str; + e_contact_inline_local_photos (contact, NULL); vcard_str = e_vcard_to_string ( E_VCARD (contact), EVC_FORMAT_VCARD_30); diff --git a/mail/em-account-editor.c b/mail/em-account-editor.c index 70a392a327..036570730c 100644 --- a/mail/em-account-editor.c +++ b/mail/em-account-editor.c @@ -2161,12 +2161,10 @@ emae_setup_service (EMAccountEditor *emae, EAccount *account; struct _service_info *info = &emae_service_info[service->type]; CamelURL *url = emae_account_url (emae, info->account_uri_key); - const gchar *uri; account = em_account_editor_get_modified_account (emae); - uri = e_account_get_string (account, info->account_uri_key); - service->provider = uri ? camel_provider_get (uri, NULL) : NULL; + service->provider = url && url->protocol ? camel_provider_get (url->protocol, NULL) : NULL; /* Extract all widgets we need from the builder file. */ @@ -4071,9 +4069,21 @@ emae_commit (EConfig *ec, url = camel_url_new (modified_account->source->url, NULL); if (url != NULL) { - if (emae->priv->source.settings != NULL) + if (emae->priv->source.settings != NULL) { + gchar *host = g_strdup (url->host); + gchar *path = g_strdup (url->path); + gint port = url->port; + camel_settings_save_to_url ( emae->priv->source.settings, url); + + camel_url_set_host (url, host); + camel_url_set_path (url, path); + camel_url_set_port (url, port); + + g_free (host); + g_free (path); + } g_free (modified_account->source->url); modified_account->source->url = camel_url_to_string (url, 0); camel_url_free (url); @@ -4081,9 +4091,20 @@ emae_commit (EConfig *ec, url = camel_url_new (modified_account->transport->url, NULL); if (url != NULL) { - if (emae->priv->transport.settings != NULL) + if (emae->priv->transport.settings != NULL) { + gchar *host = g_strdup (url->host); + gchar *path = g_strdup (url->path); + gint port = url->port; + camel_settings_save_to_url ( emae->priv->transport.settings, url); + camel_url_set_host (url, host); + camel_url_set_path (url, path); + camel_url_set_port (url, port); + + g_free (host); + g_free (path); + } g_free (modified_account->transport->url); modified_account->transport->url = camel_url_to_string (url, 0); camel_url_free (url); diff --git a/plugins/google-account-setup/google-source.c b/plugins/google-account-setup/google-source.c index a9785ad844..405d52155e 100644 --- a/plugins/google-account-setup/google-source.c +++ b/plugins/google-account-setup/google-source.c @@ -467,6 +467,7 @@ retrieve_list_clicked (GtkButton *button, authorizer = gdata_client_login_authorizer_new ("evolution-client-0.1.0", GDATA_TYPE_CALENDAR_SERVICE); service = gdata_calendar_service_new (GDATA_AUTHORIZER (authorizer)); + update_proxy_settings (GDATA_SERVICE (service), URL_GET_SUBSCRIBED_CALENDARS); if (!gdata_client_login_authorizer_authenticate (authorizer, user, password, NULL, &error)) { /* Error! */ claim_error (parent, error->message); @@ -481,7 +482,6 @@ retrieve_list_clicked (GtkButton *button, memset (password, 0, strlen (password)); g_free (password); - update_proxy_settings (GDATA_SERVICE (service), URL_GET_SUBSCRIBED_CALENDARS); feed = gdata_calendar_service_query_all_calendars (service, NULL, NULL, NULL, NULL, &error); if (feed) { |