## RhythmDBImportJob

RhythmDBImportJob — batch import job

## Synopsis

                        RhythmDBImportJob;
                        RhythmDBImportJobClass;
    RhythmDBImportJob * rhythmdb_import_job_new             (RhythmDB *db,
                                                             RhythmDBEntryType entry_type,
                                                             RhythmDBEntryType ignore_type,
                                                             RhythmDBEntryType error_type);
    void                rhythmdb_import_job_add_uri         (RhythmDBImportJob *job,
                                                             const char *uri);
    void                rhythmdb_import_job_start           (RhythmDBImportJob *job);
    void                rhythmdb_import_job_cancel          (RhythmDBImportJob *job);
    gboolean            rhythmdb_import_job_complete        (RhythmDBImportJob *job);
    gboolean            rhythmdb_import_job_scan_complete   (RhythmDBImportJob *job);
    int                 rhythmdb_import_job_get_total       (RhythmDBImportJob *job);
    int                 rhythmdb_import_job_get_imported    (RhythmDBImportJob *job);

## Object Hierarchy

      GObject
       +----RhythmDBImportJob

## Properties

      "db"                       RhythmDB*             : Read / Write / Construct Only
      "entry-type"               RhythmDBEntryType*    : Read / Write / Construct Only
      "error-type"               RhythmDBEntryType*    : Read / Write / Construct Only
      "ignore-type"              RhythmDBEntryType*    : Read / Write / Construct Only

## Signals

      "complete"                                       : Run Last
      "entry-added"                                    : Run Last
      "scan-complete"                                  : Run Last
      "status-changed"                                 : Run Last

## Description

Tracks the addition to the database of files under a set of directories, providing status information.

The entry types to use for the database entries added by the import job are specified on creation.

## Details

### RhythmDBImportJob

    typedef struct _RhythmDBImportJob RhythmDBImportJob;

### RhythmDBImportJobClass

    typedef struct {
    	GObjectClass parent_class;

    	/* signals */
    	void (*entry_added) (RhythmDBImportJob *job, RhythmDBEntry *entry);
    	void (*status_changed) (RhythmDBImportJob *job, int total, int imported);
    	void (*scan_complete) (RhythmDBImportJob *job, int total);
    	void (*complete) (RhythmDBImportJob *job, int total);
    } RhythmDBImportJobClass;

### rhythmdb_import_job_new ()

    RhythmDBImportJob * rhythmdb_import_job_new             (RhythmDB *db,
                                                             RhythmDBEntryType entry_type,
                                                             RhythmDBEntryType ignore_type,
                                                             RhythmDBEntryType error_type);

Creates a new import job with the specified entry types. Before starting the job, the caller must add one or more paths to import.

`db` : | the RhythmDB object
`entry_type` : | the RhythmDBEntryType to use for normal entries
`ignore_type` : | the RhythmDBEntryType to use for ignored files (or RHYTHMDB_ENTRY_TYPE_INVALID to not create ignore entries)
`error_type` : | the RhythmDBEntryType to use for import error entries (or RHYTHMDB_ENTRY_TYPE_INVALID for none)
Returns : | new RhythmDBImportJob object.

### rhythmdb_import_job_add_uri ()

    void                rhythmdb_import_job_add_uri         (RhythmDBImportJob *job,
                                                             const char *uri);

Adds a URI to import. All files under the specified URI will be imported.

`job` : | a RhythmDBImportJob
`uri` : | the URI to import

### rhythmdb_import_job_start ()

    void                rhythmdb_import_job_start           (RhythmDBImportJob *job);

Starts the import job. After this method has been called, no more URIs may be added to the import job. May only be called once for a given import job.

`job` : | the RhythmDBImportJob

### rhythmdb_import_job_cancel ()

    void                rhythmdb_import_job_cancel          (RhythmDBImportJob *job);

Cancels the import job. The job will cease as soon as possible. More directories may be scanned and more files may be imported before the job actually ceases.

`job` : | the RhythmDBImportJob

### rhythmdb_import_job_complete ()

    gboolean            rhythmdb_import_job_complete        (RhythmDBImportJob *job);

`job` : | the RhythmDBImportJob
Returns : | TRUE if the import job is complete.

### rhythmdb_import_job_scan_complete ()

    gboolean            rhythmdb_import_job_scan_complete   (RhythmDBImportJob *job);

`job` : | the RhythmDBImportJob
Returns : | TRUE if the directory scan is complete

### rhythmdb_import_job_get_total ()

    int                 rhythmdb_import_job_get_total       (RhythmDBImportJob *job);

Returns the total number of files that will be processed by this import job. This increases as the import directories are scanned.

`job` : | the RhythmDBImportJob
Returns : | the total number of files to be processed

### rhythmdb_import_job_get_imported ()

    int                 rhythmdb_import_job_get_imported    (RhythmDBImportJob *job);

`job` : | the RhythmDBImportJob
Returns : | the number of files processed so far

## Property Details

### The `"db"` property

      "db"                       RhythmDB*             : Read / Write / Construct Only

RhythmDB object.

### The `"entry-type"` property

      "entry-type"               RhythmDBEntryType*    : Read / Write / Construct Only

Entry type to use for entries added by this job.

### The `"error-type"` property

      "error-type"               RhythmDBEntryType*    : Read / Write / Construct Only

Entry type to use for import error entries added by this job.

### The `"ignore-type"` property

      "ignore-type"              RhythmDBEntryType*    : Read / Write / Construct Only

Entry type to use for ignored entries added by this job.

## Signal Details

### The `"complete"` signal

    void                user_function                      (RhythmDBImportJob *job,
                                                            gint               arg1,
                                                            gpointer           user_data)      : Run Last

Emitted when the whole import job is complete.

`job` : | the RhythmDBImportJob
`user_data` : | user data set when the signal handler was connected.

### The `"entry-added"` signal

    void                user_function                      (RhythmDBImportJob *job,
                                                            RhythmDBEntry     *entry,
                                                            gpointer           user_data)      : Run Last

Emitted when an entry has been added to the database by the import job.

`job` : | the RhythmDBImportJob
`entry` : | the newly added RhythmDBEntry
`user_data` : | user data set when the signal handler was connected.

### The `"scan-complete"` signal

    void                user_function                      (RhythmDBImportJob *job,
                                                            gint               arg1,
                                                            gpointer           user_data)      : Run Last

Emitted when the directory scan is complete. Once the scan is complete, the total number of files to be processed will not change.

`job` : | the RhythmDBImportJob
`user_data` : | user data set when the signal handler was connected.

### The `"status-changed"` signal

    void                user_function                      (RhythmDBImportJob *job,
                                                            gint               total,
                                                            gint               imported,
                                                            gpointer           user_data)      : Run Last

Emitted when the status of the import job has changed.

`job` : | the RhythmDBImportJob
`total` : | the current total number of files to process
`imported` : | the current count of files imported
`user_data` : | user data set when the signal handler was connected.