## RBTrackTransferQueue

RBTrackTransferQueue — track transfer queue and surrounding junk

## Synopsis

    struct              RBTrackTransferQueue;
    struct              RBTrackTransferQueueClass;
    RBTrackTransferQueue * rb_track_transfer_queue_new      (RBShell *shell);
    void                rb_track_transfer_queue_start_batch (RBTrackTransferQueue *queue,
                                                             RBTrackTransferBatch *batch);
    void                rb_track_transfer_queue_cancel_batch
                                                            (RBTrackTransferQueue *queue,
                                                             RBTrackTransferBatch *batch);
    GList *             rb_track_transfer_queue_find_batch_by_source
                                                            (RBTrackTransferQueue *queue,
                                                             RBSource *source);

## Object Hierarchy

      GObject
       +----RBTrackTransferQueue

## Properties

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

## Signals

      "missing-plugins"                                : Run Last
      "transfer-progress"                              : Run Last

## Description

## Details

### struct RBTrackTransferQueue

    struct RBTrackTransferQueue;

### struct RBTrackTransferQueueClass

    struct RBTrackTransferQueueClass {
    	GObjectClass parent_class;

    	/* signals */
    	void (*transfer_progress) (RBTrackTransferQueue *queue,
    					 int done,
    					 int total,
    					 double fraction,
    					 int time_left);
    };

### rb_track_transfer_queue_new ()

    RBTrackTransferQueue * rb_track_transfer_queue_new      (RBShell *shell);

Creates the RBTrackTransferQueue instance

`shell` : | the RBShell
Returns : | the RBTrackTransferQueue

### rb_track_transfer_queue_start_batch ()

    void                rb_track_transfer_queue_start_batch (RBTrackTransferQueue *queue,
                                                             RBTrackTransferBatch *batch);

Adds a new transfer batch to the transfer queue; if the queue is currently empty, the transfer will start immediately, but not before the call returns.

`queue` : | the RBTrackTransferQueue
`batch` : | the RBTrackTransferBatch to add to the queue

### rb_track_transfer_queue_cancel_batch ()

    void                rb_track_transfer_queue_cancel_batch
                                                            (RBTrackTransferQueue *queue,
                                                             RBTrackTransferBatch *batch);

Removes a transfer batch from the queue. If an entry from the batch is currently being transferred, the transfer will be aborted.

`queue` : | the RBTrackTransferQueue
`batch` : | the RBTrackTransferBatch to cancel, or NULL for the current batch

### rb_track_transfer_queue_find_batch_by_source ()

    GList *             rb_track_transfer_queue_find_batch_by_source
                                                            (RBTrackTransferQueue *queue,
                                                             RBSource *source);

Finds all transfer batches where `source` is the source or destination. This should be used to wait for transfers to finish (or cancel them) before ejecting a device. The transfer batches are returned in the order they're found in the queue, so waiting for the `RBTrackTransferBatch`::complete signal on the last one is sufficient to wait for them all to finish.

`queue` : | the RBTrackTransferQueue
`source` : | the RBSource to search for
Returns : | GList of RBTrackTransferBatch objects, not referenced. [element-type RBTrackTransferBatch][transfer container]

## Property Details

### The `"batch"` property

      "batch"                    RBTrackTransferBatch*  : Read

The current RBTrackTransferBatch being processed

### The `"shell"` property

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

The RBShell

## Signal Details

### The `"missing-plugins"` signal

    gboolean            user_function                      (RBTrackTransferQueue *queue,
                                                            GStrv                 details,
                                                            GStrv                 descriptions,
                                                            GClosure             *closure,
                                                            gpointer              user_data)         : Run Last

Emitted to request installation of one or more encoder plugins for a destination media format. When the closure included in the signal args is called, the transfer batch will be started.

`queue` : | the RBTrackTransferQueue
`details` : | the list of plugin detail strings describing the missing plugins
`descriptions` : | the list of descriptions for the missing plugins
`closure` : | a GClosure to be called when the plugin installation is complete
`user_data` : | user data set when the signal handler was connected.

### The `"transfer-progress"` signal

    void                user_function                      (RBTrackTransferQueue *queue,
                                                            gint                  done,
                                                            gint                  total,
                                                            gdouble               fraction,
                                                            gint                  time_left,
                                                            gpointer              user_data)      : Run Last

Emitted regularly to convey progress information. At the end of any given transfer batch, there will be one signal emission with `done` == `total` and `fraction` == 1.0.

`queue` : | the RBTrackTransferQueue
`done` : | the number of entries transferred
`total` : | the total number of entries in the batch
`fraction` : | the fraction of the batch that has been transferred
`time_left` : | the estimated remaining time (in seconds)
`user_data` : | user data set when the signal handler was connected.