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.
This commit is contained in:
Matthew Barnes
2011-03-27 11:13:00 -04:00
parent 1943ff55a0
commit e076ca2f77
2 changed files with 22 additions and 28 deletions

View File

@ -41,6 +41,7 @@ m4_define([eds_minimum_version], [evo_version])
m4_define([gtkhtml_minimum_version], [3.91.3])
m4_define([gnome_desktop_minimum_version], [2.91.3])
m4_define([gnome_icon_theme_minimum_version], [2.30.2.1])
m4_define([gsettings_desktop_schemas_minimum_version], [2.91.92])
m4_define([gconf_minimum_version], [2.0.0]) dnl XXX Just a Guess
m4_define([libsoup_minimum_version], [2.4.0]) dnl XXX Just a Guess
m4_define([libxml_minimum_version], [2.7.3])
@ -239,7 +240,8 @@ PKG_CHECK_MODULES([GNOME_PLATFORM],
gconf-2.0 >= gconf_minimum_version
libxml-2.0 >= libxml_minimum_version
shared-mime-info >= shared_mime_info_minimum_version
gnome-desktop-3.0 >= gnome_desktop_minimum_version])
gnome-desktop-3.0 >= gnome_desktop_minimum_version
gsettings-desktop-schemas >= gsettings_desktop_schemas_minimum_version])
AC_SUBST(GNOME_PLATFORM_CFLAGS)
AC_SUBST(GNOME_PLATFORM_LIBS)
@ -251,7 +253,6 @@ PKG_CHECK_MODULES([EVOLUTION_DATA_SERVER],
libegroupwise-1.2 >= eds_minimum_version
libebackend-1.2 >= eds_minimum_version])
dnl ******************************
dnl Canberra / Canberra-GTK Sound
dnl ******************************

View File

@ -22,7 +22,7 @@
#include "e-attachment-handler-image.h"
#include <glib/gi18n.h>
#include <gconf/gconf-client.h>
#include <gdesktop-enums.h>
#include <e-util/e-util.h>
@ -49,40 +49,35 @@ 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);
uri = g_file_get_uri (file);
g_settings_set_string (settings, "picture-uri", uri);
g_free (uri);
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);
g_object_unref (file);
key = "/desktop/gnome/background/picture_filename";
gconf_client_set_string (client, key, value, &error);
g_free (value);
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);
goto exit;
error:
@ -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)