## GalagoStatus GalagoStatus — Status type in a presence. |

## Synopsis

    enum        GalagoStatusType;
    #define     GALAGO_STATUS_ID_AVAILABLE
    #define     GALAGO_STATUS_ID_AWAY
    #define     GALAGO_STATUS_ID_BRB
    #define     GALAGO_STATUS_ID_BUSY
    #define     GALAGO_STATUS_ID_DND
    #define     GALAGO_STATUS_ID_EXTENDED_AWAY
    #define     GALAGO_STATUS_ID_HIDDEN
    #define     GALAGO_STATUS_ID_OFFLINE
    #define     GALAGO_STATUS_ATTR_MESSAGE
                GalagoStatus;
    GalagoStatus* galago_status_new             (GalagoStatusType type,
                                                 const char *id,
                                                 const char *name,
                                                 gboolean exclusive);
    GalagoStatus* galago_status_duplicate       (const GalagoStatus *status);
    void        galago_status_set_presence      (GalagoStatus *status,
                                                 GalagoPresence *presence);
    GalagoPresence* galago_status_get_presence  (const GalagoStatus *status);
    GalagoStatusType galago_status_get_primitive
                                                (const GalagoStatus *status);
    const char* galago_status_get_id            (const GalagoStatus *status);
    const char* galago_status_get_name          (const GalagoStatus *status);
    gboolean    galago_status_is_exclusive      (const GalagoStatus *status);
    gboolean    galago_status_is_available      (const GalagoStatus *status);

## Object Hierarchy

      GObject
       +----GalagoObject
             +----GalagoStatus

## Properties

      "exclusive"            gboolean              : Read / Write
      "id"                   gchararray            : Read / Write / Construct Only
      "name"                 gchararray            : Read / Write / Construct Only
      "presence"             GalagoPresence        : Read / Write
      "primitive"            GalagoStatusType      : Read / Write / Construct Only

## Description

GalagoStatus represents a single status in a GalagoPresence. A status is something like "available" or "away." They may hold attributes, such as an away message.

Some statuses are exclusive. "available" and "away" would be exclusive statuses. Some are not exclusive, such as "invisible." These status types are dependent on the server that they are on.

## Details

### enum GalagoStatusType

    typedef enum
    {
    	GALAGO_STATUS_UNSET = 0,
    	GALAGO_STATUS_OFFLINE,
    	GALAGO_STATUS_AVAILABLE,
    	GALAGO_STATUS_AWAY,
    	GALAGO_STATUS_EXTENDED_AWAY,
    	GALAGO_STATUS_HIDDEN,
    	GALAGO_STATUS_PENDING

    } GalagoStatusType;

A type of status primitive. These are the most common ways to describe a status, and are used for availability determination and calculations.

`GALAGO_STATUS_UNSET` | Unset. This is never set and only used as an error return type.
`GALAGO_STATUS_OFFLINE` | Offline.
`GALAGO_STATUS_AVAILABLE` | Available.
`GALAGO_STATUS_AWAY` | Away from the computer.
`GALAGO_STATUS_EXTENDED_AWAY` | Away for a long period of time.
`GALAGO_STATUS_HIDDEN` | Hidden from view from others.
`GALAGO_STATUS_PENDING` | Status information is pending.

### GALAGO_STATUS_ID_AVAILABLE

    #define     GALAGO_STATUS_ID_AVAILABLE

Available.

### GALAGO_STATUS_ID_AWAY

    #define     GALAGO_STATUS_ID_AWAY

Away from the computer.

### GALAGO_STATUS_ID_BRB

    #define     GALAGO_STATUS_ID_BRB

Be right back.

### GALAGO_STATUS_ID_BUSY

    #define     GALAGO_STATUS_ID_BUSY

Busy.

### GALAGO_STATUS_ID_DND

    #define     GALAGO_STATUS_ID_DND

Do not disturb.

### GALAGO_STATUS_ID_EXTENDED_AWAY

    #define     GALAGO_STATUS_ID_EXTENDED_AWAY

Away for a longer period of time.

### GALAGO_STATUS_ID_HIDDEN

    #define     GALAGO_STATUS_ID_HIDDEN

Hidden from others.

### GALAGO_STATUS_ID_OFFLINE

    #define     GALAGO_STATUS_ID_OFFLINE

Offline.

### GALAGO_STATUS_ATTR_MESSAGE

    #define     GALAGO_STATUS_ATTR_MESSAGE

Message status attribute. This is used for away and available message text.

### GalagoStatus

    typedef struct _GalagoStatus GalagoStatus;

This is an opaque structure representing a status. This should not be used directly. Use the accessor functions below.

### galago_status_new ()

    GalagoStatus* galago_status_new             (GalagoStatusType type,
                                                 const char *id,
                                                 const char *name,
                                                 gboolean exclusive);

Creates a new status.

If exclusive is TRUE, the status will be exclusive. Only one exclusive status can be set at a time. If another exclusive status is set, the previously set exclusive status will be removed.

If exclusive is FALSE, the status will not be removed unless manually removed.

`type` : | The type of status.
`id` : | The status ID.
`name` : | The name of the status.
`exclusive` : | TRUE if the status is exclusive.
Returns : | The status.

### galago_status_duplicate ()

    GalagoStatus* galago_status_duplicate       (const GalagoStatus *status);

Duplicates a status.

`status` : | The status to duplicate.
Returns : | The duplicate status.

### galago_status_set_presence ()

    void        galago_status_set_presence      (GalagoStatus *status,
                                                 GalagoPresence *presence);

Sets the parent presence of a status.

This is intended for internal use only.

`status` : | The status.
`presence` : | The presence.

### galago_status_get_presence ()

    GalagoPresence* galago_status_get_presence  (const GalagoStatus *status);

Returns the parent presence of a status.

`status` : | The status.
Returns : | The presence.

### galago_status_get_primitive ()

    GalagoStatusType galago_status_get_primitive
                                                (const GalagoStatus *status);

Returns the primitive type of a status.

`status` : | The status.
Returns : | The status's primitive type.

### galago_status_get_id ()

    const char* galago_status_get_id            (const GalagoStatus *status);

Returns the status's ID.

`status` : | The status.
Returns : | The status's ID.

### galago_status_get_name ()

    const char* galago_status_get_name          (const GalagoStatus *status);

Returns the status's name.

`status` : | The status.
Returns : | The status's name.

### galago_status_is_exclusive ()

    gboolean    galago_status_is_exclusive      (const GalagoStatus *status);

Returns whether or not a status is exclusive.

`status` : | The status.
Returns : | TRUE if the status is exclusive, or FALSE.

### galago_status_is_available ()

    gboolean    galago_status_is_available      (const GalagoStatus *status);

Returns whether or not a status is considered available.

`status` : | The status.
Returns : | TRUE if the status is available, or FALSE.

## Property Details

### The "`exclusive`" property

      "exclusive"            gboolean              : Read / Write

The status's exclusive state.

Default value: FALSE

### The "`id`" property

      "id"                   gchararray            : Read / Write / Construct Only

The status's ID.

Default value: NULL

### The "`name`" property

      "name"                 gchararray            : Read / Write / Construct Only

The status's descriptive name.

Default value: NULL

### The "`presence`" property

      "presence"             GalagoPresence        : Read / Write

The presence object that this status belongs to.

### The "`primitive`" property

      "primitive"            GalagoStatusType      : Read / Write / Construct Only

The primitive type this status is based on.

Default value: GALAGO_STATUS_UNSET

## See Also

GalagoPresence