## EShellBackend EShellBackend — dynamically loaded capabilities |

## Synopsis

    #include <shell/e-shell-backend.h>

                        EShellBackend;
    gint                e_shell_backend_compare             (EShellBackend *shell_backend_a,
                                                             EShellBackend *shell_backend_b);
    const gchar *       e_shell_backend_get_config_dir      (EShellBackend *shell_backend);
    const gchar *       e_shell_backend_get_data_dir        (EShellBackend *shell_backend);
    struct _EShell *    e_shell_backend_get_shell           (EShellBackend *shell_backend);
    void                e_shell_backend_add_activity        (EShellBackend *shell_backend,
                                                             EActivity *activity);
    void                e_shell_backend_start               (EShellBackend *shell_backend);
    gboolean            e_shell_backend_migrate             (EShellBackend *shell_backend,
                                                             gint major,
                                                             gint minor,
                                                             gint micro,
                                                             GError **error);

## Object Hierarchy

      GObject
       +----EExtension
             +----EShellBackend

## Signals

      "activity-added"                                 : Run Last

## Description

## Details

### EShellBackend

    typedef struct _EShellBackend EShellBackend;

Contains only private data that should be read and manipulated using the functions below.

### e_shell_backend_compare ()

    gint                e_shell_backend_compare             (EShellBackend *shell_backend_a,
                                                             EShellBackend *shell_backend_b);

Using the `sort_order` field from both backends' EShellBackendClass, compares `shell_backend_a` with `shell_mobule_b` and returns -1, 0 or +1 if `shell_backend_a` is found to be less than, equal to or greater than `shell_backend_b`, respectively.

`shell_backend_a` : | an EShellBackend
`shell_backend_b` : | an EShellBackend
Returns : | -1, 0 or +1, for a less than, equal to or greater than result

### e_shell_backend_get_config_dir ()

    const gchar *       e_shell_backend_get_config_dir      (EShellBackend *shell_backend);

Returns the absolute path to the configuration directory for `shell_backend`. The string is owned by `shell_backend` and should not be modified or freed.

`shell_backend` : | an EShellBackend
Returns : | the backend's configuration directory

### e_shell_backend_get_data_dir ()

    const gchar *       e_shell_backend_get_data_dir        (EShellBackend *shell_backend);

Returns the absolute path to the data directory for `shell_backend`. The string is owned by `shell_backend` and should not be modified or freed.

`shell_backend` : | an EShellBackend
Returns : | the backend's data directory

### e_shell_backend_get_shell ()

    struct _EShell *    e_shell_backend_get_shell           (EShellBackend *shell_backend);

Returns the EShell singleton.

`shell_backend` : | an EShellBackend
Returns : | the EShell

### e_shell_backend_add_activity ()

    void                e_shell_backend_add_activity        (EShellBackend *shell_backend,
                                                             EActivity *activity);

Emits an "activity-added" signal.

`shell_backend` : | an EShellBackend
`activity` : | an EActivity

### e_shell_backend_start ()

    void                e_shell_backend_start               (EShellBackend *shell_backend);

Tells the `shell_backend` to begin loading data or running background tasks which may consume significant resources. This gets called in reponse to the user switching to the corresponding EShellView for the first time. The function is idempotent for each `shell_backend`.

`shell_backend` : | an EShellBackend

### e_shell_backend_migrate ()

    gboolean            e_shell_backend_migrate             (EShellBackend *shell_backend,
                                                             gint major,
                                                             gint minor,
                                                             gint micro,
                                                             GError **error);

Attempts to migrate data and settings from version `major`.`minor`.`micro`. Returns `TRUE` if the migration was successful or if no action was necessary. Returns `FALSE` and sets `error` if the migration failed.

`shell_backend` : | an EShellBackend
`major` : | major part of version to migrate from
`minor` : | minor part of version to migrate from
`micro` : | micro part of version to migrate from
`error` : | return location for a GError, or `NULL`
Returns : | `TRUE` if successful, `FALSE` otherwise

## Signal Details

### The `"activity-added"` signal

    void                user_function                      (EShellBackend *shell_backend,
                                                            EActivity     *activity,
                                                            gpointer       user_data)          : Run Last

Broadcasts a newly added activity.

`shell_backend` : | the EShellBackend that emitted the signal
`activity` : | an EActivity
`user_data` : | user data set when the signal handler was connected.