diff options
author | Alexander Larsson <alexl@redhat.com> | 2008-12-01 09:39:10 +0000 |
---|---|---|
committer | Alexander Larsson <alexl@src.gnome.org> | 2008-12-01 09:39:10 +0000 |
commit | b1133cc662259843b6ec5c314b389f9a5cc9d84a (patch) | |
tree | bc6b54570b9ea6c3e7fd5e1feb3a5ddd31cde899 /daemon/gvfsbackend.c | |
parent | f8875b2649a0f85624e0da7df96fa6d47840c4a9 (diff) | |
download | gvfs-b1133cc662259843b6ec5c314b389f9a5cc9d84a.tar.gz |
Make mounts/backends have a GIcon not a icon name
2008-12-01 Alexander Larsson <alexl@redhat.com>
* client/gdaemonmount.c:
* common/gmounttracker.[ch]:
* daemon/gvfsbackend.[ch]:
Make mounts/backends have a GIcon not a icon name
* daemon/gvfsbackendsftp.c:
Support /etc/favicon.png
* daemon/gvfsbackendsmbbrowse.c:
Simplify some code with the new GIcon support
Patch from David Zeuthen (#557540)
svn path=/trunk/; revision=2113
Diffstat (limited to 'daemon/gvfsbackend.c')
-rw-r--r-- | daemon/gvfsbackend.c | 36 |
1 files changed, 27 insertions, 9 deletions
diff --git a/daemon/gvfsbackend.c b/daemon/gvfsbackend.c index c0eba0e1..8f2bc9cc 100644 --- a/daemon/gvfsbackend.c +++ b/daemon/gvfsbackend.c @@ -71,7 +71,7 @@ struct _GVfsBackendPrivate char *display_name; char *stable_name; char **x_content_types; - char *icon; + GIcon *icon; char *prefered_filename_encoding; gboolean user_visible; GMountSpec *mount_spec; @@ -146,7 +146,8 @@ g_vfs_backend_finalize (GObject *object) g_free (backend->priv->display_name); g_free (backend->priv->stable_name); g_strfreev (backend->priv->x_content_types); - g_free (backend->priv->icon); + if (backend->priv->icon != NULL) + g_object_unref (backend->priv->icon); g_free (backend->priv->prefered_filename_encoding); if (backend->priv->mount_spec) g_mount_spec_unref (backend->priv->mount_spec); @@ -194,7 +195,7 @@ static void g_vfs_backend_init (GVfsBackend *backend) { backend->priv = G_TYPE_INSTANCE_GET_PRIVATE (backend, G_VFS_TYPE_BACKEND, GVfsBackendPrivate); - backend->priv->icon = g_strdup (""); + backend->priv->icon = NULL; backend->priv->prefered_filename_encoding = g_strdup (""); backend->priv->display_name = g_strdup (""); backend->priv->stable_name = g_strdup (""); @@ -326,10 +327,20 @@ g_vfs_backend_set_x_content_types (GVfsBackend *backend, void g_vfs_backend_set_icon_name (GVfsBackend *backend, - const char *icon) + const char *icon_name) { - g_free (backend->priv->icon); - backend->priv->icon = g_strdup (icon); + if (backend->priv->icon != NULL) + g_object_unref (backend->priv->icon); + backend->priv->icon = g_themed_icon_new_with_default_fallbacks (icon_name); +} + +void +g_vfs_backend_set_icon (GVfsBackend *backend, + GIcon *icon) +{ + if (backend->priv->icon != NULL) + g_object_unref (backend->priv->icon); + backend->priv->icon = g_object_ref (icon); } void @@ -382,8 +393,8 @@ g_vfs_backend_get_x_content_types (GVfsBackend *backend) return backend->priv->x_content_types; } -const char * -g_vfs_backend_get_icon_name (GVfsBackend *backend) +GIcon * +g_vfs_backend_get_icon (GVfsBackend *backend) { return backend->priv->icon; } @@ -591,12 +602,18 @@ g_vfs_backend_register_mount (GVfsBackend *backend, DBusMessageIter iter; dbus_bool_t user_visible; char *x_content_types_string; + char *icon_str; if (backend->priv->x_content_types != NULL && g_strv_length (backend->priv->x_content_types) > 0) x_content_types_string = g_strjoinv (" ", backend->priv->x_content_types); else x_content_types_string = g_strdup (""); + if (backend->priv->icon != NULL) + icon_str = g_icon_to_string (backend->priv->icon); + else + icon_str = g_strdup (""); + message = dbus_message_new_method_call (G_VFS_DBUS_DAEMON_NAME, G_VFS_DBUS_MOUNTTRACKER_PATH, G_VFS_DBUS_MOUNTTRACKER_INTERFACE, @@ -616,7 +633,7 @@ g_vfs_backend_register_mount (GVfsBackend *backend, DBUS_TYPE_STRING, &backend->priv->display_name, DBUS_TYPE_STRING, &stable_name, DBUS_TYPE_STRING, &x_content_types_string, - DBUS_TYPE_STRING, &backend->priv->icon, + DBUS_TYPE_STRING, &icon_str, DBUS_TYPE_STRING, &backend->priv->prefered_filename_encoding, DBUS_TYPE_BOOLEAN, &user_visible, 0)) @@ -632,6 +649,7 @@ g_vfs_backend_register_mount (GVfsBackend *backend, dbus_message_unref (message); g_free (x_content_types_string); + g_free (icon_str); } void |