From e076ca2f77d5ecfba4677ad98a876beaed99052e Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sun, 27 Mar 2011 11:13:00 -0400 Subject: Bug 644310 - Rework "Set as Background" image option This adds a dependency on gsettings-desktop-schemas >= 2.91.92. The version was chosen for the change from "picture-filename" to "picture-uri" in the "org.gnome.desktop.background" schema. Also, we now save the background image under ~/Pictures since the old directory (~/.gnome2/wallpapers) is presumed deprecated in GNOME 3. --- widgets/misc/e-attachment-handler-image.c | 43 +++++++++++++------------------ 1 file changed, 18 insertions(+), 25 deletions(-) (limited to 'widgets') diff --git a/widgets/misc/e-attachment-handler-image.c b/widgets/misc/e-attachment-handler-image.c index e7e3658873..16046b90fd 100644 --- a/widgets/misc/e-attachment-handler-image.c +++ b/widgets/misc/e-attachment-handler-image.c @@ -22,7 +22,7 @@ #include "e-attachment-handler-image.h" #include -#include +#include #include @@ -49,39 +49,34 @@ action_image_set_as_background_saved_cb (EAttachment *attachment, GAsyncResult *result, EAttachmentHandler *handler) { + GDesktopBackgroundStyle style; EAttachmentView *view; - GConfClient *client; + GSettings *settings; GtkWidget *dialog; GFile *file; - const gchar *key; gpointer parent; - gchar *value; + gchar *uri; GError *error = NULL; - client = gconf_client_get_default (); view = e_attachment_handler_get_view (handler); + settings = g_settings_new ("org.gnome.desktop.background"); file = e_attachment_save_finish (attachment, result, &error); if (error != NULL) goto error; - value = g_file_get_path (file); - g_object_unref (file); + uri = g_file_get_uri (file); + g_settings_set_string (settings, "picture-uri", uri); + g_free (uri); - key = "/desktop/gnome/background/picture_filename"; - gconf_client_set_string (client, key, value, &error); - g_free (value); + style = g_settings_get_enum (settings, "picture-options"); + if (style == G_DESKTOP_BACKGROUND_STYLE_NONE) + g_settings_set_enum ( + settings, "picture-options", + G_DESKTOP_BACKGROUND_STYLE_WALLPAPER); - if (error != NULL) - goto error; - - /* Ignore errors for this part. */ - key = "/desktop/gnome/background/picture_options"; - value = gconf_client_get_string (client, key, NULL); - if (g_strcmp0 (value, "none") == 0) - gconf_client_set_string (client, key, "wallpaper", NULL); - g_free (value); + g_object_unref (file); goto exit; @@ -104,7 +99,7 @@ error: g_error_free (error); exit: - g_object_unref (client); + g_object_unref (settings); g_object_unref (handler); } @@ -116,19 +111,17 @@ action_image_set_as_background_cb (GtkAction *action, EAttachment *attachment; GFile *destination; GList *selected; - gchar *path; + const gchar *path; view = e_attachment_handler_get_view (handler); selected = e_attachment_view_get_selected_attachments (view); g_return_if_fail (g_list_length (selected) == 1); attachment = E_ATTACHMENT (selected->data); - /* Save the image under ~/.gnome2/wallpapers/. */ - path = g_build_filename ( - e_get_gnome2_user_dir (), "wallpapers", NULL); + /* Save the image under the user's Pictures directory. */ + path = g_get_user_special_dir (G_USER_DIRECTORY_PICTURES); destination = g_file_new_for_path (path); g_mkdir_with_parents (path, 0755); - g_free (path); e_attachment_save_async ( attachment, destination, (GAsyncReadyCallback) -- cgit v1.2.3