## RBRemovableMediaManager

RBRemovableMediaManager — handling of removable media such as audio CDs and DAP devices

## Synopsis

    struct              RBRemovableMediaManager;
    struct              RBRemovableMediaManagerClass;
    RBRemovableMediaManager * rb_removable_media_manager_new
                                                            (RBShell *shell);
    void                rb_removable_media_manager_scan     (RBRemovableMediaManager *manager);

## Object Hierarchy

      GObject
       +----RBRemovableMediaManager

## Properties

      "scanned"                  gboolean              : Read
      "shell"                    RBShell*              : Read / Write / Construct Only

## Signals

      "create-source-device"                           : Run Last
      "create-source-mount"                            : Run Last
      "create-source-volume"                           : Run Last
      "medium-added"                                   : Run Last

## Description

The removable media manager maintains the mapping between GIO GVolume and GMount objects and rhythmbox sources.

## Details

### struct RBRemovableMediaManager

    struct RBRemovableMediaManager;

### struct RBRemovableMediaManagerClass

    struct RBRemovableMediaManagerClass {
    	GObjectClass parent_class;

    	/* signals */
    	void (*medium_added)		(RBRemovableMediaManager *mgr,
    					 RBSource *source);
    	RBSource * (*create_source_device) (RBRemovableMediaManager *mgr,
    					 GObject *device);		/* actually a GUdevDevice */
    	RBSource * (*create_source_mount) (RBRemovableMediaManager *mgr,
    					 GMount *mount,
    					 MPIDDevice *device_info);
    	RBSource * (*create_source_volume) (RBRemovableMediaManager *mgr,
    					 GVolume *volume);
    };

### rb_removable_media_manager_new ()

    RBRemovableMediaManager * rb_removable_media_manager_new
                                                            (RBShell *shell);

Creates the RBRemovableMediaManager instance.

`shell` : | the RBShell
Returns : | the RBRemovableMediaManager

### rb_removable_media_manager_scan ()

    void                rb_removable_media_manager_scan     (RBRemovableMediaManager *manager);

Initiates a new scan of all attached media. Newly activated plugins that use the create-source-volume or create-source-mount signals should call this if the 'scanned' property is `TRUE`. Otherwise, the first scan will catch any existing volumes or mounts that the plugin is interested in.

`manager` : | the RBRemovableMediaManager

## Property Details

### The `"scanned"` property

      "scanned"                  gboolean              : Read

This is set to TRUE when the removable media manager has scanned all existing volumes and mounts. When a plugin that handles removable media is activated, it should request a new scan if this property is already set to TRUE.

Default value: FALSE

### The `"shell"` property

      "shell"                    RBShell*              : Read / Write / Construct Only

The RBShell instance.

## Signal Details

### The `"create-source-device"` signal

    RBSource*           user_function                      (RBRemovableMediaManager *mgr,
                                                            GObject                 *device,
                                                            gpointer                 user_data)      : Run Last

Emitted when a new device is detected to allow plugins to create a corresponding RBSource. The first signal handler that returns a source wins. Plugins should only use this signal if there will be no GVolume or GMount created for the device.

`mgr` : | the RBRemovableMediaManager
`device` : | the device (actually a GUdevDevice)
`user_data` : | user data set when the signal handler was connected.
Returns : | a source for the device, or NULL. [transfer full]

### The `"create-source-mount"` signal

    RBSource*           user_function                      (RBRemovableMediaManager *mgr,
                                                            GMount                  *device_info,
                                                            MPIDDevice              *mount,
                                                            gpointer                 user_data)        : Run Last

Emitted when a new mount is added to allow plugins to create a corresponding RBSource. The first signal handler that returns a source wins. If a source was created for the GVolume for a mount, then this signal will not be emitted.

`mgr` : | the RBRemovableMediaManager
`device_info` : | a MPIDDevice containing information on the device
`mount` : | the GMount
`user_data` : | user data set when the signal handler was connected.
Returns : | a source for the mount, or NULL. [transfer full]

### The `"create-source-volume"` signal

    RBSource*           user_function                      (RBRemovableMediaManager *mgr,
                                                            GVolume                 *volume,
                                                            gpointer                 user_data)      : Run Last

Emitted when a new volume is added to allow plugins to create a corresponding RBSource. The first signal handler that returns a source wins. A plugin should only use this signal if it doesn't require the volume to be mounted. If the volume must be mounted to be useful, use the create-source-mount signal instead.

`mgr` : | the RBRemovableMediaManager
`volume` : | the GVolume
`user_data` : | user data set when the signal handler was connected.
Returns : | a source for the volume, or NULL. [transfer full]

### The `"medium-added"` signal

    void                user_function                      (RBRemovableMediaManager *mgr,
                                                            GObject                 *source,
                                                            gpointer                 user_data)      : Run Last

Emitted when a new source is added for a removable medium.

`mgr` : | the RBRemovableMediaManager
`source` : | the newly added RBSource
`user_data` : | user data set when the signal handler was connected.