ZeitgeistDataSource

## ZeitgeistDataSource ZeitgeistDataSource — Abstracts data sources used by the ZeitgeistDataSourceRegistry extension |

## Synopsis

    #include <zeitgeist.h>

                        ZeitgeistDataSource;
    struct              ZeitgeistDataSourceClass;
    const gchar *       zeitgeist_data_source_get_description
                                                            (ZeitgeistDataSource *src);
    GPtrArray *         zeitgeist_data_source_get_event_templates
                                                            (ZeitgeistDataSource *src);
    const gchar *       zeitgeist_data_source_get_name      (ZeitgeistDataSource *src);
    gint64              zeitgeist_data_source_get_timestamp (ZeitgeistDataSource *src);
    const gchar *       zeitgeist_data_source_get_unique_id (ZeitgeistDataSource *src);
    gboolean            zeitgeist_data_source_is_enabled    (ZeitgeistDataSource *src);
    gboolean            zeitgeist_data_source_is_running    (ZeitgeistDataSource *src);
    ZeitgeistDataSource * zeitgeist_data_source_new         (void);
    ZeitgeistDataSource * zeitgeist_data_source_new_from_variant
                                                            (GVariant *src);
    ZeitgeistDataSource * zeitgeist_data_source_new_full    (const gchar *id,
                                                             const gchar *name,
                                                             const gchar *desc,
                                                             GPtrArray *event_templates);
    void                zeitgeist_data_source_set_description
                                                            (ZeitgeistDataSource *src,
                                                             const gchar *description);
    void                zeitgeist_data_source_set_enabled   (ZeitgeistDataSource *src,
                                                             gboolean enabled);
    void                zeitgeist_data_source_set_event_templates
                                                            (ZeitgeistDataSource *src,
                                                             GPtrArray *event_templates);
    void                zeitgeist_data_source_set_name      (ZeitgeistDataSource *src,
                                                             const gchar *name);
    void                zeitgeist_data_source_set_running   (ZeitgeistDataSource *src,
                                                             gboolean running);
    void                zeitgeist_data_source_set_timestamp (ZeitgeistDataSource *src,
                                                             gint64 timestamp);
    void                zeitgeist_data_source_set_unique_id (ZeitgeistDataSource *src,
                                                             const gchar *unique_id);
    GVariant *          zeitgeist_data_source_to_variant    (ZeitgeistDataSource *src);
    GVariant *          zeitgeist_data_source_to_variant_full
                                                            (ZeitgeistDataSource *src);
    GPtrArray *         zeitgeist_data_sources_from_variant (GVariant *sources);
    GVariant *          zeitgeist_data_sources_to_variant   (GPtrArray *sources);

## Object Hierarchy

      GObject
       +----GInitiallyUnowned
             +----ZeitgeistDataSource

## Description

ZeitgeistDataSource represents a data source used to insert events into Zeitgeist. The data sources are identified using the unique_id property, and when querying the data source registry you get other interesting information like timestamp of the last action of the data source, flag whether it is currently running etc.

## Details

### ZeitgeistDataSource

    typedef struct _ZeitgeistDataSource ZeitgeistDataSource;

### struct ZeitgeistDataSourceClass

    struct ZeitgeistDataSourceClass {
      GInitiallyUnownedClass parent_class;
    };

### zeitgeist_data_source_get_description ()

    const gchar *       zeitgeist_data_source_get_description
                                                            (ZeitgeistDataSource *src);

### zeitgeist_data_source_get_event_templates ()

    GPtrArray *         zeitgeist_data_source_get_event_templates
                                                            (ZeitgeistDataSource *src);

### zeitgeist_data_source_get_name ()

    const gchar *       zeitgeist_data_source_get_name      (ZeitgeistDataSource *src);

### zeitgeist_data_source_get_timestamp ()

    gint64              zeitgeist_data_source_get_timestamp (ZeitgeistDataSource *src);

### zeitgeist_data_source_get_unique_id ()

    const gchar *       zeitgeist_data_source_get_unique_id (ZeitgeistDataSource *src);

### zeitgeist_data_source_is_enabled ()

    gboolean            zeitgeist_data_source_is_enabled    (ZeitgeistDataSource *src);

### zeitgeist_data_source_is_running ()

    gboolean            zeitgeist_data_source_is_running    (ZeitgeistDataSource *src);

### zeitgeist_data_source_new ()

    ZeitgeistDataSource * zeitgeist_data_source_new         (void);

Create a new empty data source structure.

Returns : | A new instance of ZeitgeistDataSource. The returned source will have a floating reference which will be consumed if you pass the data source to any of the methods provided by this library (like registering the data source). If you do not do that then you must free the data source yourself with `g_object_unref()`.

### zeitgeist_data_source_new_from_variant ()

    ZeitgeistDataSource * zeitgeist_data_source_new_from_variant
                                                            (GVariant *src);

Parse the data in a GVariant and build a ZeitgeistDataSource from it. The reverse operation of this is `zeitgeist_data_source_to_variant_full()`.

Returns : | A newly allocated ZeitgeistDataSource filled with the metadata and event templates described by `src`. The returned data source will have a floating reference which will be consumed if you pass the data source to any of the methods provided by this library. If you do not do that then you must free the data source yourself with `g_object_unref()`

### zeitgeist_data_source_new_full ()

    ZeitgeistDataSource * zeitgeist_data_source_new_full    (const gchar *id,
                                                             const gchar *name,
                                                             const gchar *desc,
                                                             GPtrArray *event_templates);

Creates a new instance of DataSource with the given ID, name and description.

`id` : | Unique ID for the data source.
`name` : | Name of the data source (may be translated).
`desc` : | Data source description.
`event_templates` : | A GPtrArray of ZeitgeistEvents. This parameter is optional and purely informational to let data-source management applications and other data-sources know what sort of information the data source logs. The data source will assume ownership of the events and the pointer array. If you want to keep a reference for yourself you must do a `g_ptr_array_ref()` on `event_templates` as well as reffing the events held by it before calling this method.
Returns : | New instance of ZeitgeistDataSource with floating reference, if you do not pass the instance to method like `zeitgeist_data_source_registry_register_data_source()`, then you have to free the data source yourself using `g_object_unref()`.

### zeitgeist_data_source_set_description ()

    void                zeitgeist_data_source_set_description
                                                            (ZeitgeistDataSource *src,
                                                             const gchar *description);

### zeitgeist_data_source_set_enabled ()

    void                zeitgeist_data_source_set_enabled   (ZeitgeistDataSource *src,
                                                             gboolean enabled);

### zeitgeist_data_source_set_event_templates ()

    void                zeitgeist_data_source_set_event_templates
                                                            (ZeitgeistDataSource *src,
                                                             GPtrArray *event_templates);

Sets event templates which are logged by this ZeitgeistDataSource instance.

`src` : | Instance of ZeitgeistDataSource.
`event_templates` : | A GPtrArray which contains elements of type ZeitgeistEvent. The data source will assume ownership of the events and the pointer array. If you want to keep a reference for yourself you must do a `g_ptr_array_ref()` on `templates` as well as reffing the events held by it before calling this method.

### zeitgeist_data_source_set_name ()

    void                zeitgeist_data_source_set_name      (ZeitgeistDataSource *src,
                                                             const gchar *name);

### zeitgeist_data_source_set_running ()

    void                zeitgeist_data_source_set_running   (ZeitgeistDataSource *src,
                                                             gboolean running);

### zeitgeist_data_source_set_timestamp ()

    void                zeitgeist_data_source_set_timestamp (ZeitgeistDataSource *src,
                                                             gint64 timestamp);

### zeitgeist_data_source_set_unique_id ()

    void                zeitgeist_data_source_set_unique_id (ZeitgeistDataSource *src,
                                                             const gchar *unique_id);

### zeitgeist_data_source_to_variant ()

    GVariant *          zeitgeist_data_source_to_variant    (ZeitgeistDataSource *src);

Convert a ZeitgeistDataSource to a GVariant with signature ZEITGEIST_DATA_SOURCE_VARIANT_SIGNATURE.

Returns : | A floating reference to a GVariant as described above. Unless the floating reference is consumed somewhere you must free it with `g_variant_unref()`.

### zeitgeist_data_source_to_variant_full ()

    GVariant *          zeitgeist_data_source_to_variant_full
                                                            (ZeitgeistDataSource *src);

Convert a ZeitgeistDataSource to a GVariant with signature ZEITGEIST_DATA_SOURCE_WITH_INFO_VARIANT_SIGNATURE.

Returns : | A floating reference to a GVariant as described above. Unless the floating reference is consumed somewhere you must free it with `g_variant_unref()`.

### zeitgeist_data_sources_from_variant ()

    GPtrArray *         zeitgeist_data_sources_from_variant (GVariant *sources);

`sources` : | A GVariant with signature as an array of ZEITGEIST_DATA_SOURCE_WITH_INFO_VARIANT_SIGNATURE. If `sources` is floating this method will consume the floating reference.
Returns : | A reference to a GPtrArray of ZeitgeistDataSources. All the events will be floating references, and the GPtrArray's `free_func` will be set to `g_object_unref()`.

### zeitgeist_data_sources_to_variant ()

    GVariant *          zeitgeist_data_sources_to_variant   (GPtrArray *sources);

Convert a set of ZeitgeistDataSource<-- -->s to a GVariant with signature as an array of ZEITGEIST_DATA_SOURCE_VARIANT_SIGNATURE.

Returns : | A floating reference to a GVariant as described above. Unless the floating reference is consumed somewhere you must free it with `g_variant_unref()`.