mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-03-03 06:32:10 +01:00
Add symbolic icon support to drive, volume, and mount
We need symbolic icon support for display in Nautilus. https://bugzilla.gnome.org/show_bug.cgi?id=682101
This commit is contained in:
parent
88d181ef18
commit
a2dca48bf7
@ -1047,6 +1047,7 @@ GMountIface
|
||||
g_mount_get_name
|
||||
g_mount_get_uuid
|
||||
g_mount_get_icon
|
||||
g_mount_get_symbolic_icon
|
||||
g_mount_get_drive
|
||||
g_mount_get_root
|
||||
g_mount_get_volume
|
||||
@ -1089,6 +1090,7 @@ GVolumeIface
|
||||
g_volume_get_name
|
||||
g_volume_get_uuid
|
||||
g_volume_get_icon
|
||||
g_volume_get_symbolic_icon
|
||||
g_volume_get_drive
|
||||
g_volume_get_mount
|
||||
g_volume_can_mount
|
||||
@ -1128,6 +1130,7 @@ GDriveStartFlags
|
||||
GDriveStartStopType
|
||||
g_drive_get_name
|
||||
g_drive_get_icon
|
||||
g_drive_get_symbolic_icon
|
||||
g_drive_has_volumes
|
||||
g_drive_get_volumes
|
||||
g_drive_can_eject
|
||||
@ -1426,6 +1429,7 @@ g_unix_mount_get_fs_type
|
||||
g_unix_mount_is_readonly
|
||||
g_unix_mount_is_system_internal
|
||||
g_unix_mount_guess_icon
|
||||
g_unix_mount_guess_symbolic_icon
|
||||
g_unix_mount_guess_name
|
||||
g_unix_mount_guess_can_eject
|
||||
g_unix_mount_guess_should_display
|
||||
@ -1439,6 +1443,7 @@ g_unix_mount_point_is_readonly
|
||||
g_unix_mount_point_is_user_mountable
|
||||
g_unix_mount_point_is_loopback
|
||||
g_unix_mount_point_guess_icon
|
||||
g_unix_mount_point_guess_symbolic_icon
|
||||
g_unix_mount_point_guess_name
|
||||
g_unix_mount_point_guess_can_eject
|
||||
g_unix_mount_points_get
|
||||
|
30
gio/gdrive.c
30
gio/gdrive.c
@ -24,6 +24,7 @@
|
||||
#include "config.h"
|
||||
#include "gdrive.h"
|
||||
#include "gsimpleasyncresult.h"
|
||||
#include "gthemedicon.h"
|
||||
#include "gasyncresult.h"
|
||||
#include "gioerror.h"
|
||||
#include "glibintl.h"
|
||||
@ -174,6 +175,35 @@ g_drive_get_icon (GDrive *drive)
|
||||
return (* iface->get_icon) (drive);
|
||||
}
|
||||
|
||||
/**
|
||||
* g_drive_get_symbolic_icon:
|
||||
* @drive: a #GDrive.
|
||||
*
|
||||
* Gets the icon for @drive.
|
||||
*
|
||||
* Returns: (transfer full): symbolic #GIcon for the @drive.
|
||||
* Free the returned object with g_object_unref().
|
||||
*
|
||||
* Since: 2.34
|
||||
**/
|
||||
GIcon *
|
||||
g_drive_get_symbolic_icon (GDrive *drive)
|
||||
{
|
||||
GDriveIface *iface;
|
||||
GIcon *ret;
|
||||
|
||||
g_return_val_if_fail (G_IS_DRIVE (drive), NULL);
|
||||
|
||||
iface = G_DRIVE_GET_IFACE (drive);
|
||||
|
||||
if (iface->get_symbolic_icon != NULL)
|
||||
ret = iface->get_symbolic_icon (drive);
|
||||
else
|
||||
ret = g_themed_icon_new_with_default_fallbacks ("drive-removable-media-symbolic");
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* g_drive_has_volumes:
|
||||
* @drive: a #GDrive.
|
||||
|
@ -72,6 +72,7 @@ G_BEGIN_DECLS
|
||||
* @eject_with_operation: Starts ejecting a #GDrive using a #GMountOperation. Since 2.22.
|
||||
* @eject_with_operation_finish: Finishes an eject operation using a #GMountOperation. Since 2.22.
|
||||
* @get_sort_key: Gets a key used for sorting #GDrive instances or %NULL if no such key exists. Since 2.32.
|
||||
* @get_symbolic_icon: Returns a symbolic #GIcon for the given #GDrive. Since 2.34.
|
||||
*
|
||||
* Interface for creating #GDrive implementations.
|
||||
*/
|
||||
@ -154,12 +155,15 @@ struct _GDriveIface
|
||||
GError **error);
|
||||
|
||||
const gchar * (* get_sort_key) (GDrive *drive);
|
||||
GIcon * (* get_symbolic_icon) (GDrive *drive);
|
||||
|
||||
};
|
||||
|
||||
GType g_drive_get_type (void) G_GNUC_CONST;
|
||||
|
||||
char * g_drive_get_name (GDrive *drive);
|
||||
GIcon * g_drive_get_icon (GDrive *drive);
|
||||
GIcon * g_drive_get_symbolic_icon (GDrive *drive);
|
||||
gboolean g_drive_has_volumes (GDrive *drive);
|
||||
GList * g_drive_get_volumes (GDrive *drive);
|
||||
gboolean g_drive_is_media_removable (GDrive *drive);
|
||||
|
@ -219,6 +219,7 @@ g_data_output_stream_put_string
|
||||
g_drive_get_type
|
||||
g_drive_get_name
|
||||
g_drive_get_icon
|
||||
g_drive_get_symbolic_icon
|
||||
g_drive_has_volumes
|
||||
g_drive_get_volumes
|
||||
g_drive_is_media_removable
|
||||
@ -654,6 +655,7 @@ g_unix_mount_guess_can_eject
|
||||
g_unix_mount_guess_should_display
|
||||
g_unix_mount_guess_name
|
||||
g_unix_mount_guess_icon
|
||||
g_unix_mount_guess_symbolic_icon
|
||||
g_unix_mount_point_compare
|
||||
g_unix_mount_point_get_mount_path
|
||||
g_unix_mount_point_get_device_path
|
||||
@ -665,6 +667,7 @@ g_unix_mount_point_is_loopback
|
||||
g_unix_mount_point_guess_can_eject
|
||||
g_unix_mount_point_guess_name
|
||||
g_unix_mount_point_guess_icon
|
||||
g_unix_mount_point_guess_symbolic_icon
|
||||
g_unix_mount_points_get
|
||||
g_unix_mounts_get
|
||||
g_unix_mount_at
|
||||
@ -707,6 +710,7 @@ g_mount_get_type
|
||||
g_mount_get_root
|
||||
g_mount_get_name
|
||||
g_mount_get_icon
|
||||
g_mount_get_symbolic_icon
|
||||
g_mount_get_uuid
|
||||
g_mount_get_volume
|
||||
g_mount_get_drive
|
||||
@ -733,6 +737,7 @@ g_mount_get_sort_key
|
||||
g_volume_get_type
|
||||
g_volume_get_name
|
||||
g_volume_get_icon
|
||||
g_volume_get_symbolic_icon
|
||||
g_volume_get_uuid
|
||||
g_volume_get_drive
|
||||
g_volume_get_mount
|
||||
|
32
gio/gmount.c
32
gio/gmount.c
@ -29,6 +29,7 @@
|
||||
|
||||
#include "gmount.h"
|
||||
#include "gmountprivate.h"
|
||||
#include "gthemedicon.h"
|
||||
#include "gasyncresult.h"
|
||||
#include "gsimpleasyncresult.h"
|
||||
#include "gioerror.h"
|
||||
@ -213,6 +214,37 @@ g_mount_get_icon (GMount *mount)
|
||||
return (* iface->get_icon) (mount);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* g_mount_get_symbolic_icon:
|
||||
* @mount: a #GMount.
|
||||
*
|
||||
* Gets the symbolic icon for @mount.
|
||||
*
|
||||
* Returns: (transfer full): a #GIcon.
|
||||
* The returned object should be unreffed with
|
||||
* g_object_unref() when no longer needed.
|
||||
*
|
||||
* Since: 2.34
|
||||
**/
|
||||
GIcon *
|
||||
g_mount_get_symbolic_icon (GMount *mount)
|
||||
{
|
||||
GMountIface *iface;
|
||||
GIcon *ret;
|
||||
|
||||
g_return_val_if_fail (G_IS_MOUNT (mount), NULL);
|
||||
|
||||
iface = G_MOUNT_GET_IFACE (mount);
|
||||
|
||||
if (iface->get_symbolic_icon != NULL)
|
||||
ret = iface->get_symbolic_icon (mount);
|
||||
else
|
||||
ret = g_themed_icon_new_with_default_fallbacks ("folder-remote-symbolic");
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* g_mount_get_uuid:
|
||||
* @mount: a #GMount.
|
||||
|
@ -70,6 +70,7 @@ typedef struct _GMountIface GMountIface;
|
||||
* @eject_with_operation_finish: Finishes an eject operation using a #GMountOperation. Since 2.22.
|
||||
* @get_default_location: Gets a #GFile indication a start location that can be use as the entry point for this mount. Since 2.24.
|
||||
* @get_sort_key: Gets a key used for sorting #GMount instance or %NULL if no such key exists. Since 2.32.
|
||||
* @get_symbolic_icon: Gets a symbolic #GIcon for the #GMount. Since 2.34.
|
||||
*
|
||||
* Interface for implementing operations for mounts.
|
||||
**/
|
||||
@ -159,6 +160,7 @@ struct _GMountIface
|
||||
GFile * (* get_default_location) (GMount *mount);
|
||||
|
||||
const gchar * (* get_sort_key) (GMount *mount);
|
||||
GIcon * (* get_symbolic_icon) (GMount *mount);
|
||||
};
|
||||
|
||||
GType g_mount_get_type (void) G_GNUC_CONST;
|
||||
@ -167,6 +169,7 @@ GFile * g_mount_get_root (GMount *mount);
|
||||
GFile * g_mount_get_default_location (GMount *mount);
|
||||
char * g_mount_get_name (GMount *mount);
|
||||
GIcon * g_mount_get_icon (GMount *mount);
|
||||
GIcon * g_mount_get_symbolic_icon (GMount *mount);
|
||||
char * g_mount_get_uuid (GMount *mount);
|
||||
GVolume * g_mount_get_volume (GMount *mount);
|
||||
GDrive * g_mount_get_drive (GMount *mount);
|
||||
|
@ -55,6 +55,7 @@ struct _GUnixMount {
|
||||
|
||||
char *name;
|
||||
GIcon *icon;
|
||||
GIcon *symbolic_icon;
|
||||
char *device_path;
|
||||
char *mount_path;
|
||||
|
||||
@ -84,6 +85,7 @@ g_unix_mount_finalize (GObject *object)
|
||||
|
||||
/* TODO: g_warn_if_fail (volume->volume == NULL); */
|
||||
g_object_unref (mount->icon);
|
||||
g_object_unref (mount->symbolic_icon);
|
||||
g_free (mount->name);
|
||||
g_free (mount->device_path);
|
||||
g_free (mount->mount_path);
|
||||
@ -123,6 +125,7 @@ _g_unix_mount_new (GVolumeMonitor *volume_monitor,
|
||||
|
||||
mount->name = g_unix_mount_guess_name (mount_entry);
|
||||
mount->icon = g_unix_mount_guess_icon (mount_entry);
|
||||
mount->symbolic_icon = g_unix_mount_guess_symbolic_icon (mount_entry);
|
||||
|
||||
/* need to do this last */
|
||||
mount->volume = volume;
|
||||
@ -175,6 +178,14 @@ g_unix_mount_get_icon (GMount *mount)
|
||||
return g_object_ref (unix_mount->icon);
|
||||
}
|
||||
|
||||
static GIcon *
|
||||
g_unix_mount_get_symbolic_icon (GMount *mount)
|
||||
{
|
||||
GUnixMount *unix_mount = G_UNIX_MOUNT (mount);
|
||||
|
||||
return g_object_ref (unix_mount->symbolic_icon);
|
||||
}
|
||||
|
||||
static char *
|
||||
g_unix_mount_get_uuid (GMount *mount)
|
||||
{
|
||||
@ -473,6 +484,7 @@ g_unix_mount_mount_iface_init (GMountIface *iface)
|
||||
iface->get_root = g_unix_mount_get_root;
|
||||
iface->get_name = g_unix_mount_get_name;
|
||||
iface->get_icon = g_unix_mount_get_icon;
|
||||
iface->get_symbolic_icon = g_unix_mount_get_symbolic_icon;
|
||||
iface->get_uuid = g_unix_mount_get_uuid;
|
||||
iface->get_drive = g_unix_mount_get_drive;
|
||||
iface->get_volume = g_unix_mount_get_volume;
|
||||
|
@ -1901,7 +1901,7 @@ g_unix_mount_point_guess_type (GUnixMountPoint *mount_point)
|
||||
}
|
||||
|
||||
static const char *
|
||||
type_to_icon (GUnixMountType type, gboolean is_mount_point)
|
||||
type_to_icon (GUnixMountType type, gboolean is_mount_point, gboolean use_symbolic)
|
||||
{
|
||||
const char *icon_name;
|
||||
|
||||
@ -1909,55 +1909,51 @@ type_to_icon (GUnixMountType type, gboolean is_mount_point)
|
||||
{
|
||||
case G_UNIX_MOUNT_TYPE_HD:
|
||||
if (is_mount_point)
|
||||
icon_name = "drive-removable-media";
|
||||
icon_name = use_symbolic ? "drive-removable-media-symbolic" : "drive-removable-media";
|
||||
else
|
||||
icon_name = "drive-harddisk";
|
||||
icon_name = use_symbolic ? "drive-harddisk-symbolic" : "drive-harddisk";
|
||||
break;
|
||||
case G_UNIX_MOUNT_TYPE_FLOPPY:
|
||||
case G_UNIX_MOUNT_TYPE_ZIP:
|
||||
case G_UNIX_MOUNT_TYPE_JAZ:
|
||||
if (is_mount_point)
|
||||
icon_name = "drive-removable-media";
|
||||
icon_name = use_symbolic ? "drive-removable-media-symbolic" : "drive-removable-media";
|
||||
else
|
||||
icon_name = "media-floppy";
|
||||
icon_name = use_symbolic ? "media-removable-symbolic" : "media-floppy";
|
||||
break;
|
||||
case G_UNIX_MOUNT_TYPE_CDROM:
|
||||
if (is_mount_point)
|
||||
icon_name = "drive-optical";
|
||||
icon_name = use_symbolic ? "drive-optical-symbolic" : "drive-optical";
|
||||
else
|
||||
icon_name = "media-optical";
|
||||
icon_name = use_symbolic ? "media-optical-symbolic" : "media-optical";
|
||||
break;
|
||||
case G_UNIX_MOUNT_TYPE_NFS:
|
||||
/* TODO: Would like a better icon here... */
|
||||
if (is_mount_point)
|
||||
icon_name = "drive-removable-media";
|
||||
else
|
||||
icon_name = "drive-harddisk";
|
||||
icon_name = use_symbolic ? "folder-remote-symbolic" : "folder-remote";
|
||||
break;
|
||||
case G_UNIX_MOUNT_TYPE_MEMSTICK:
|
||||
if (is_mount_point)
|
||||
icon_name = "drive-removable-media";
|
||||
icon_name = use_symbolic ? "drive-removable-media-symbolic" : "drive-removable-media";
|
||||
else
|
||||
icon_name = "media-flash";
|
||||
icon_name = use_symbolic ? "media-removable-symbolic" : "media-flash";
|
||||
break;
|
||||
case G_UNIX_MOUNT_TYPE_CAMERA:
|
||||
if (is_mount_point)
|
||||
icon_name = "drive-removable-media";
|
||||
icon_name = use_symbolic ? "drive-removable-media-symbolic" : "drive-removable-media";
|
||||
else
|
||||
icon_name = "camera-photo";
|
||||
icon_name = use_symbolic ? "camera-photo-symbolic" : "camera-photo";
|
||||
break;
|
||||
case G_UNIX_MOUNT_TYPE_IPOD:
|
||||
if (is_mount_point)
|
||||
icon_name = "drive-removable-media";
|
||||
icon_name = use_symbolic ? "drive-removable-media-symbolic" : "drive-removable-media";
|
||||
else
|
||||
icon_name = "multimedia-player";
|
||||
icon_name = use_symbolic ? "multimedia-player-symbolic" : "multimedia-player";
|
||||
break;
|
||||
case G_UNIX_MOUNT_TYPE_UNKNOWN:
|
||||
default:
|
||||
if (is_mount_point)
|
||||
icon_name = "drive-removable-media";
|
||||
icon_name = use_symbolic ? "drive-removable-media-symbolic" : "drive-removable-media";
|
||||
else
|
||||
icon_name = "drive-harddisk";
|
||||
icon_name = use_symbolic ? "drive-harddisk-symbolic" : "drive-harddisk";
|
||||
break;
|
||||
}
|
||||
|
||||
@ -1998,7 +1994,23 @@ g_unix_mount_guess_name (GUnixMountEntry *mount_entry)
|
||||
GIcon *
|
||||
g_unix_mount_guess_icon (GUnixMountEntry *mount_entry)
|
||||
{
|
||||
return g_themed_icon_new_with_default_fallbacks (type_to_icon (g_unix_mount_guess_type (mount_entry), FALSE));
|
||||
return g_themed_icon_new_with_default_fallbacks (type_to_icon (g_unix_mount_guess_type (mount_entry), FALSE, FALSE));
|
||||
}
|
||||
|
||||
/**
|
||||
* g_unix_mount_guess_symbolic_icon:
|
||||
* @mount_entry: a #GUnixMountEntry
|
||||
*
|
||||
* Guesses the symbolic icon of a Unix mount.
|
||||
*
|
||||
* Returns: (transfer full): a #GIcon
|
||||
*
|
||||
* Since: 2.34
|
||||
*/
|
||||
GIcon *
|
||||
g_unix_mount_guess_symbolic_icon (GUnixMountEntry *mount_entry)
|
||||
{
|
||||
return g_themed_icon_new_with_default_fallbacks (type_to_icon (g_unix_mount_guess_type (mount_entry), FALSE, TRUE));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -2035,7 +2047,22 @@ g_unix_mount_point_guess_name (GUnixMountPoint *mount_point)
|
||||
GIcon *
|
||||
g_unix_mount_point_guess_icon (GUnixMountPoint *mount_point)
|
||||
{
|
||||
return g_themed_icon_new_with_default_fallbacks (type_to_icon (g_unix_mount_point_guess_type (mount_point), TRUE));
|
||||
return g_themed_icon_new_with_default_fallbacks (type_to_icon (g_unix_mount_point_guess_type (mount_point), TRUE, FALSE));
|
||||
}
|
||||
|
||||
/**
|
||||
* g_unix_mount_point_guess_symbolic_icon:
|
||||
*
|
||||
* Guesses the symbolic icon of a Unix mount point.
|
||||
*
|
||||
* Returns: (transfer full): a #GIcon
|
||||
*
|
||||
* Since: 2.34
|
||||
*/
|
||||
GIcon *
|
||||
g_unix_mount_point_guess_symbolic_icon (GUnixMountPoint *mount_point)
|
||||
{
|
||||
return g_themed_icon_new_with_default_fallbacks (type_to_icon (g_unix_mount_point_guess_type (mount_point), TRUE, TRUE));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -70,6 +70,8 @@ gboolean g_unix_mount_guess_can_eject (GUnixMountEntry *mount_e
|
||||
gboolean g_unix_mount_guess_should_display (GUnixMountEntry *mount_entry);
|
||||
char * g_unix_mount_guess_name (GUnixMountEntry *mount_entry);
|
||||
GIcon * g_unix_mount_guess_icon (GUnixMountEntry *mount_entry);
|
||||
GIcon * g_unix_mount_guess_symbolic_icon (GUnixMountEntry *mount_entry);
|
||||
|
||||
|
||||
gint g_unix_mount_point_compare (GUnixMountPoint *mount1,
|
||||
GUnixMountPoint *mount2);
|
||||
@ -84,6 +86,8 @@ gboolean g_unix_mount_point_is_loopback (GUnixMountPoint *mount_p
|
||||
gboolean g_unix_mount_point_guess_can_eject (GUnixMountPoint *mount_point);
|
||||
char * g_unix_mount_point_guess_name (GUnixMountPoint *mount_point);
|
||||
GIcon * g_unix_mount_point_guess_icon (GUnixMountPoint *mount_point);
|
||||
GIcon * g_unix_mount_point_guess_symbolic_icon (GUnixMountPoint *mount_point);
|
||||
|
||||
|
||||
GList * g_unix_mount_points_get (guint64 *time_read);
|
||||
GList * g_unix_mounts_get (guint64 *time_read);
|
||||
|
@ -58,6 +58,7 @@ struct _GUnixVolume {
|
||||
|
||||
char *name;
|
||||
GIcon *icon;
|
||||
GIcon *symbolic_icon;
|
||||
};
|
||||
|
||||
static void g_unix_volume_volume_iface_init (GVolumeIface *iface);
|
||||
@ -81,6 +82,7 @@ g_unix_volume_finalize (GObject *object)
|
||||
_g_unix_mount_unset_volume (volume->mount, volume);
|
||||
|
||||
g_object_unref (volume->icon);
|
||||
g_object_unref (volume->symbolic_icon);
|
||||
g_free (volume->name);
|
||||
g_free (volume->mount_path);
|
||||
g_free (volume->device_path);
|
||||
@ -122,6 +124,7 @@ _g_unix_volume_new (GVolumeMonitor *volume_monitor,
|
||||
|
||||
volume->name = g_unix_mount_point_guess_name (mountpoint);
|
||||
volume->icon = g_unix_mount_point_guess_icon (mountpoint);
|
||||
volume->symbolic_icon = g_unix_mount_point_guess_symbolic_icon (mountpoint);
|
||||
|
||||
|
||||
if (strcmp (g_unix_mount_point_get_fs_type (mountpoint), "nfs") == 0)
|
||||
@ -197,6 +200,13 @@ g_unix_volume_get_icon (GVolume *volume)
|
||||
return g_object_ref (unix_volume->icon);
|
||||
}
|
||||
|
||||
static GIcon *
|
||||
g_unix_volume_get_symbolic_icon (GVolume *volume)
|
||||
{
|
||||
GUnixVolume *unix_volume = G_UNIX_VOLUME (volume);
|
||||
return g_object_ref (unix_volume->symbolic_icon);
|
||||
}
|
||||
|
||||
static char *
|
||||
g_unix_volume_get_name (GVolume *volume)
|
||||
{
|
||||
@ -517,6 +527,7 @@ g_unix_volume_volume_iface_init (GVolumeIface *iface)
|
||||
{
|
||||
iface->get_name = g_unix_volume_get_name;
|
||||
iface->get_icon = g_unix_volume_get_icon;
|
||||
iface->get_symbolic_icon = g_unix_volume_get_symbolic_icon;
|
||||
iface->get_uuid = g_unix_volume_get_uuid;
|
||||
iface->get_drive = g_unix_volume_get_drive;
|
||||
iface->get_mount = g_unix_volume_get_mount;
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include "config.h"
|
||||
#include "gmount.h"
|
||||
#include "gvolume.h"
|
||||
#include "gthemedicon.h"
|
||||
#include "gasyncresult.h"
|
||||
#include "gsimpleasyncresult.h"
|
||||
#include "gioerror.h"
|
||||
@ -156,6 +157,37 @@ g_volume_get_icon (GVolume *volume)
|
||||
return (* iface->get_icon) (volume);
|
||||
}
|
||||
|
||||
/**
|
||||
* g_volume_get_symbolic_icon:
|
||||
* @volume: a #GVolume.
|
||||
*
|
||||
* Gets the symbolic icon for @volume.
|
||||
*
|
||||
* Returns: (transfer full): a #GIcon.
|
||||
* The returned object should be unreffed with g_object_unref()
|
||||
* when no longer needed.
|
||||
*
|
||||
* Since: 2.34
|
||||
**/
|
||||
GIcon *
|
||||
g_volume_get_symbolic_icon (GVolume *volume)
|
||||
{
|
||||
GVolumeIface *iface;
|
||||
GIcon *ret;
|
||||
|
||||
g_return_val_if_fail (G_IS_VOLUME (volume), NULL);
|
||||
|
||||
iface = G_VOLUME_GET_IFACE (volume);
|
||||
|
||||
if (iface->get_symbolic_icon != NULL)
|
||||
ret = iface->get_symbolic_icon (volume);
|
||||
else
|
||||
ret = g_themed_icon_new_with_default_fallbacks ("folder-remote-symbolic");
|
||||
|
||||
return ret;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* g_volume_get_uuid:
|
||||
* @volume: a #GVolume.
|
||||
|
@ -120,6 +120,7 @@ G_BEGIN_DECLS
|
||||
* @eject_with_operation: Starts ejecting a #GVolume using a #GMountOperation. Since 2.22.
|
||||
* @eject_with_operation_finish: Finishes an eject operation using a #GMountOperation. Since 2.22.
|
||||
* @get_sort_key: Gets a key used for sorting #GVolume instance or %NULL if no such key exists. Since 2.32.
|
||||
* @get_symbolic_icon: Gets a symbolic #GIcon for the #GVolume. Since 2.34.
|
||||
*
|
||||
* Interface for implementing operations for mountable volumes.
|
||||
**/
|
||||
@ -180,12 +181,14 @@ struct _GVolumeIface
|
||||
GError **error);
|
||||
|
||||
const gchar * (* get_sort_key) (GVolume *volume);
|
||||
GIcon * (* get_symbolic_icon) (GVolume *volume);
|
||||
};
|
||||
|
||||
GType g_volume_get_type (void) G_GNUC_CONST;
|
||||
|
||||
char * g_volume_get_name (GVolume *volume);
|
||||
GIcon * g_volume_get_icon (GVolume *volume);
|
||||
GIcon * g_volume_get_symbolic_icon (GVolume *volume);
|
||||
char * g_volume_get_uuid (GVolume *volume);
|
||||
GDrive * g_volume_get_drive (GVolume *volume);
|
||||
GMount * g_volume_get_mount (GVolume *volume);
|
||||
|
@ -52,6 +52,7 @@ struct _GWin32Mount {
|
||||
/* why does all this stuff need to be duplicated? It is in volume already! */
|
||||
char *name;
|
||||
GIcon *icon;
|
||||
GIcon *symbolic_icon;
|
||||
char *mount_path;
|
||||
|
||||
gboolean can_eject;
|
||||
@ -82,6 +83,8 @@ g_win32_mount_finalize (GObject *object)
|
||||
|
||||
if (mount->icon != NULL)
|
||||
g_object_unref (mount->icon);
|
||||
if (mount->symbolic_icon != NULL)
|
||||
g_object_unref (mount->symbolic_icon);
|
||||
|
||||
g_free (mount->name);
|
||||
g_free (mount->mount_path);
|
||||
@ -192,15 +195,15 @@ g_win32_mount_get_root (GMount *mount)
|
||||
}
|
||||
|
||||
const char *
|
||||
_win32_drive_type_to_icon (int type)
|
||||
_win32_drive_type_to_icon (int type, gboolean use_symbolic)
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case DRIVE_REMOVABLE : return "gtk-floppy";
|
||||
case DRIVE_FIXED : return "gtk-harddisk";
|
||||
case DRIVE_REMOTE : return "gtk-network";
|
||||
case DRIVE_CDROM : return "gtk-cdrom";
|
||||
default : return "gtk-directory";
|
||||
case DRIVE_REMOVABLE : return use_symbolic ? "drive-removable-media-symbolic" : "drive-removable-media";
|
||||
case DRIVE_FIXED : return use_symbolic ? "drive-harddisk-symbolic" : "drive-harddisk";
|
||||
case DRIVE_REMOTE : return use_symbolic ? "folder-remote-symbolic" : "folder-remote";
|
||||
case DRIVE_CDROM : return use_symbolic ? "drive-optical-symbolic" : "drive-optical";
|
||||
default : return use_symbolic ? "folder-symbolic" : "folder";
|
||||
}
|
||||
}
|
||||
|
||||
@ -227,14 +230,29 @@ g_win32_mount_get_icon (GMount *mount)
|
||||
}
|
||||
else
|
||||
{
|
||||
win32_mount->icon = g_themed_icon_new_with_default_fallbacks (
|
||||
_win32_drive_type_to_icon (win32_mount->drive_type));
|
||||
win32_mount->icon = g_themed_icon_new_with_default_fallbacks (_win32_drive_type_to_icon (win32_mount->drive_type, FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
return g_object_ref (win32_mount->icon);
|
||||
}
|
||||
|
||||
static GIcon *
|
||||
g_win32_mount_get_symbolic_icon (GMount *mount)
|
||||
{
|
||||
GWin32Mount *win32_mount = G_WIN32_MOUNT (mount);
|
||||
|
||||
g_return_val_if_fail (win32_mount->mount_path != NULL, NULL);
|
||||
|
||||
/* lazy creation */
|
||||
if (!win32_mount->symbolic_icon)
|
||||
{
|
||||
win32_mount->symbolic_icon = g_themed_icon_new_with_default_fallbacks (_win32_drive_type_to_icon (win32_mount->drive_type, TRUE);
|
||||
}
|
||||
|
||||
return g_object_ref (win32_mount->symbolic_icon);
|
||||
}
|
||||
|
||||
static char *
|
||||
g_win32_mount_get_uuid (GMount *mount)
|
||||
{
|
||||
@ -336,6 +354,7 @@ g_win32_mount_mount_iface_init (GMountIface *iface)
|
||||
iface->get_root = g_win32_mount_get_root;
|
||||
iface->get_name = g_win32_mount_get_name;
|
||||
iface->get_icon = g_win32_mount_get_icon;
|
||||
iface->get_symbolic_icon = g_win32_mount_get_symbolic_icon;
|
||||
iface->get_uuid = g_win32_mount_get_uuid;
|
||||
iface->get_drive = g_win32_mount_get_drive;
|
||||
iface->get_volume = g_win32_mount_get_volume;
|
||||
|
Loading…
x
Reference in New Issue
Block a user