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:
@ -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 ******************************
|
||||
|
||||
@ -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)
|
||||
|
||||
Reference in New Issue
Block a user