TpPropertiesMixin

TpPropertiesMixin — a mixin implementation of the Telepathy.Properties interface

Functions

Types and Values

Includes

#include <telepathy-glib/properties-mixin.h>

Description

This mixin can be added to any GObject class to implement the properties interface in a general way.

To use the properties mixin, include a TpPropertiesMixinClass somewhere in your class structure and a TpPropertiesMixin somewhere in your instance structure, and call tp_properties_mixin_class_init() from your class_init function, tp_properties_mixin_init() from your init function or constructor, and tp_properties_mixin_finalize() from your dispose or finalize function.

To use the properties mixin as the implementation of TpSvcPropertiesInterface, call G_IMPLEMENT_INTERFACE (TP_TYPE_SVC_PROPERTIES_INTERFACE, tp_properties_mixin_iface_init) in the fourth argument to G_DEFINE_TYPE_WITH_CODE.

Functions

TpPropertiesSetFunc ()

gboolean
(*TpPropertiesSetFunc) (GObject *obj,
                        TpPropertiesContext *ctx,
                        GError **error);

A callback used to implement the SetProperties D-Bus method by setting properties in the underlying IM protocol.

The callback must either:

Parameters

obj

An object with the properties mixin

 

ctx

A properties context

 

error

Set to the error if FALSE is returned

 

Returns

FALSE on immediate failure, TRUE otherwise


tp_properties_mixin_class_init ()

void
tp_properties_mixin_class_init (GObjectClass *obj_cls,
                                glong offset,
                                const TpPropertySignature *signatures,
                                guint num_properties,
                                TpPropertiesSetFunc set_func);

Initialize the mixin. Should be called from the implementation's class_init function like so:

1
2
3
tp_properties_mixin_class_init ((GObjectClass *) klass,
                                G_STRUCT_OFFSET (SomeObjectClass,
                                 properties_mixin));

Parameters

obj_cls

The class of an object that has this mixin

 

offset

The offset of the TpPropertiesMixinClass structure in the class structure

 

signatures

An array of property signatures

 

num_properties

The number of entries in signatures

 

set_func

Callback used to set the properties

 

tp_properties_mixin_init ()

void
tp_properties_mixin_init (GObject *obj,
                          glong offset);

Initialize the mixin. Should be called from the implementation's instance init function like so:

1
2
3
tp_properties_mixin_init ((GObject *) self,
                          G_STRUCT_OFFSET (SomeObject, properties_mixin),
                          self->contact_repo);

Parameters

obj

An object that has this mixin

 

offset

The offset of the TpPropertiesMixin structure in the object structure

 

tp_properties_mixin_finalize ()

void
tp_properties_mixin_finalize (GObject *obj);

Free memory used by the TpPropertiesMixin.

Parameters

obj

An object that has this mixin

 

tp_properties_mixin_list_properties ()

gboolean
tp_properties_mixin_list_properties (GObject *obj,
                                     GPtrArray **ret,
                                     GError **error);

List all available properties and their flags, as in the ListProperties D-Bus method.

Parameters

obj

An object with this mixin

 

ret

Output parameter which will be set to a GPtrArray of D-Bus structures if TRUE is returned

 

error

Set to the error if FALSE is returned

 

Returns

TRUE on success


tp_properties_mixin_get_properties ()

gboolean
tp_properties_mixin_get_properties (GObject *obj,
                                    const GArray *properties,
                                    GPtrArray **ret,
                                    GError **error);

Retrieve the values of the given properties, as in the GetProperties D-Bus method.

Parameters

obj

An object with this mixin

 

properties

an array of integer property IDs

 

ret

set to an array of D-Bus structures if TRUE is returned

 

error

Set to the error if FALSE is returned

 

Returns

TRUE on success


tp_properties_mixin_set_properties ()

void
tp_properties_mixin_set_properties (GObject *obj,
                                    const GPtrArray *properties,
                                    DBusGMethodInvocation *context);

Start to change properties in response to user request via D-Bus.

Parameters

obj

An object with this mixin

 

properties

An array of D-Bus structures containing property ID and value

 

context

A D-Bus method invocation context for the SetProperties method

 

tp_properties_mixin_has_property ()

gboolean
tp_properties_mixin_has_property (GObject *obj,
                                  const gchar *name,
                                  guint *property);

Parameters

obj

an object with a properties mixin

 

name

the string name of the property

 

property

either NULL, or a pointer to a location to receive the property index

 

Returns

TRUE, setting property , if obj has a property of that name


tp_properties_context_has ()

gboolean
tp_properties_context_has (TpPropertiesContext *ctx,
                           guint property);

Parameters

ctx

the properties context representing a SetProperties call

 

property

the property ID

 

Returns

TRUE if ctx indicates that property still needs to be set on the server.


tp_properties_context_has_other_than ()

gboolean
tp_properties_context_has_other_than (TpPropertiesContext *ctx,
                                      guint property);

Parameters

ctx

the properties context representing a SetProperties call

 

property

the property ID

 

Returns

TRUE if ctx has properties other than property that still need to be set on the server


tp_properties_context_get ()

const GValue *
tp_properties_context_get (TpPropertiesContext *ctx,
                           guint property);

Parameters

ctx

the properties context representing a SetProperties call

 

property

a property ID

 

Returns

the value to be set on the server for the property property in ctx (whether it has been set already or not)


tp_properties_context_get_value_count ()

guint
tp_properties_context_get_value_count (TpPropertiesContext *ctx);

Parameters

ctx

the properties context representing a SetProperties call

 

Returns

the number of properties in ctx which still need to be set on the server, or have already been set


tp_properties_context_remove ()

void
tp_properties_context_remove (TpPropertiesContext *ctx,
                              guint property);

Mark the given property as having been set successfully.

Parameters

ctx

the properties context representing a SetProperties call

 

property

a property ID

 

tp_properties_context_return ()

void
tp_properties_context_return (TpPropertiesContext *ctx,
                              GError *error);

Commit the property changes and return from the pending D-Bus call.

Parameters

ctx

the properties context representing a SetProperties call

 

error

If NULL, return successfully; otherwise return this error

 

tp_properties_context_return_if_done ()

gboolean
tp_properties_context_return_if_done (TpPropertiesContext *ctx);

Return from the pending D-Bus call if there are no more properties to be dealt with.

Parameters

ctx

the properties context representing a SetProperties call

 

Returns

TRUE if we returned from the D-Bus call.


tp_properties_mixin_change_value ()

void
tp_properties_mixin_change_value (GObject *obj,
                                  guint prop_id,
                                  const GValue *new_value,
                                  TpIntset *props);

Change the value of the given property ID in response to a server state change.

If the old and new values match, nothing happens; no signal is emitted and props is ignored. Otherwise, the following applies:

If props is NULL the PropertiesChanged signal is emitted for this one property.

Otherwise, the property ID is added to the set; the caller is responsible for passing the set to tp_properties_mixin_emit_changed() once a batch of properties have been changed.

Parameters

obj

An object with the properties mixin

 

prop_id

A property ID on which to act

 

new_value

Property value

 

props

either NULL, or a pointer to a TpIntset

 

tp_properties_mixin_change_flags ()

void
tp_properties_mixin_change_flags (GObject *obj,
                                  guint prop_id,
                                  TpPropertyFlags add,
                                  TpPropertyFlags del,
                                  TpIntset *props);

Change the flags for the given property ID in response to a server state change.

Flags removed by del override flags added by add . This should not be relied upon.

If props is NULL the PropertyFlagsChanged signal is emitted for this single property.

Otherwise, the property ID is added to the set; the caller is responsible for passing the set to tp_properties_mixin_emit_flags() once a batch of properties have been changed.

Parameters

obj

An object with the properties mixin

 

prop_id

A property ID on which to act

 

add

Property flags to be added via bitwise OR

 

del

Property flags to be removed via bitwise AND

 

props

either NULL, or a pointer to a TpIntset

 

tp_properties_mixin_emit_changed ()

void
tp_properties_mixin_emit_changed (GObject *obj,
                                  const TpIntset *props);

Emit the PropertiesChanged signal to indicate that the values of the given property IDs have changed; the actual values are automatically added using their stored values.

Parameters

obj

an object with the properties mixin

 

props

a set of property IDs

 

tp_properties_mixin_emit_flags ()

void
tp_properties_mixin_emit_flags (GObject *obj,
                                const TpIntset *props);

Emit the PropertyFlagsChanged signal to indicate that the flags of the given property IDs have changed; the actual flags are automatically added using their stored values.

Parameters

obj

an object with the properties mixin

 

props

a set of property IDs

 

tp_properties_mixin_is_readable ()

gboolean
tp_properties_mixin_is_readable (GObject *obj,
                                 guint prop_id);

Parameters

obj

an object with this mixin

 

prop_id

an integer property ID

 

Returns

TRUE if the given property has the READ flag


tp_properties_mixin_is_writable ()

gboolean
tp_properties_mixin_is_writable (GObject *obj,
                                 guint prop_id);

Parameters

obj

an object with this mixin

 

prop_id

an integer property ID

 

Returns

TRUE if the given property has the WRITE flag


tp_properties_mixin_iface_init ()

void
tp_properties_mixin_iface_init (gpointer g_iface,
                                gpointer iface_data);

Fill in this mixin's method implementations in the given interface vtable. This function should usually be called via G_IMPLEMENT_INTERFACE inside the G_DEFINE_TYPE_WITH_CODE macro.

Parameters

g_iface

A pointer to the TpSvcPropertiesInterfaceClass in an object class

 

iface_data

Ignored

 

Types and Values

TpPropertySignature

typedef struct {
    gchar *name;
    GType type;
} TpPropertySignature;

Signature of a property in the Telepathy properties interface.

Members

gchar *name;

Name of the property as seen in the Telepathy D-Bus protocol

 

GType type;

GType which the variant value must have. We currently support only G_TYPE_UINT, G_TYPE_INT, G_TYPE_STRING, G_TYPE_BOOLEAN, corresponding to D-Bus signatures 'u', 'i', 's', 'b'.

 

TpProperty

typedef struct {
    /* FIXME: if we ever break ABI, make this a (GValue) rather than a
     * (GValue *) */
    GValue *value;
    guint flags;
} TpProperty;

Structure representing the current state of a property.

Members

GValue *value;

The value of the property

 

guint flags;

TpPropertyFlags indicating the property's permissions

 

TpPropertiesContext

typedef struct _TpPropertiesContext TpPropertiesContext;

Opaque pointer representing an incomplete property-setting operation, used in the implementation of SetProperties.


struct TpPropertiesMixin

struct TpPropertiesMixin {
    TpProperty *properties;

    TpPropertiesMixinPrivate *priv;
};

Structure to be placed in a GObject-derived structure containing instance data for the properties mixin (i.e. the properties). Initialize it using tp_properties_mixin_init().

Members

TpProperty *properties;

Array of property values, of length klass->num_props. Should be considered read-only.

 

TpPropertiesMixinPrivate *priv;

Pointer to opaque private data.

 

struct TpPropertiesMixinClass

struct TpPropertiesMixinClass {
  const TpPropertySignature *signatures;
  guint num_props;

  TpPropertiesSetFunc set_properties;

  TpPropertiesMixinClassPrivate *priv;
};

Structure to be placed in a GObjectClass-derived structure containing settings for the properties mixin. Initialize it using tp_properties_mixin_class_init().

All fields should be considered read-only.

Members

const TpPropertySignature *signatures;

Array of property signatures, as provided via tp_properties_mixin_class_init(), of length num_props .

 

guint num_props;

Number of properties supported.

 

TpPropertiesSetFunc set_properties;

Properties setting function, as supplied to tp_properties_mixin_class_init().

 

TpPropertiesMixinClassPrivate *priv;

Pointer to opaque private data.

 

TP_TYPE_PROPERTY_INFO_STRUCT

#define TP_TYPE_PROPERTY_INFO_STRUCT TP_STRUCT_TYPE_PROPERTY_SPEC

The GType of the structures with D-Bus signature '(ussu)' returned by ListProperties.

Deprecated : Since 0.7.0. Use TP_STRUCT_TYPE_PROPERTY_SPEC instead.


TP_TYPE_PROPERTY_INFO_LIST

#define TP_TYPE_PROPERTY_INFO_LIST TP_ARRAY_TYPE_PROPERTY_SPEC_LIST

The GType of the return from ListProperties (i.e. a GPtrArray of structures of type TP_TYPE_PROPERTY_INFO_STRUCT), corresponding to D-Bus signature 'a(ussu)'.

Deprecated : Since 0.7.0. Use TP_ARRAY_TYPE_PROPERTY_SPEC_LIST instead.


TP_TYPE_PROPERTY_VALUE_STRUCT

#define TP_TYPE_PROPERTY_VALUE_STRUCT TP_STRUCT_TYPE_PROPERTY_VALUE

The GType of the structures with signature '(uv)' returned by GetProperties and emitted in PropertiesChanged.

Deprecated : Since 0.7.0. Use TP_STRUCT_TYPE_PROPERTY_VALUE instead.


TP_TYPE_PROPERTY_VALUE_LIST

#define TP_TYPE_PROPERTY_VALUE_LIST TP_ARRAY_TYPE_PROPERTY_VALUE_LIST

The GType of the return from GetProperties and the parameter to PropertiesChanged (i.e. a GPtrArray of structures of type TP_TYPE_PROPERTY_VALUE_STRUCT), corresponding to D-Bus signature 'a(uv)'.

Deprecated : Since 0.7.0. Use TP_ARRAY_TYPE_PROPERTY_VALUE_LIST instead.


TP_TYPE_PROPERTY_FLAGS_STRUCT

#define TP_TYPE_PROPERTY_FLAGS_STRUCT TP_STRUCT_TYPE_PROPERTY_FLAGS_CHANGE

The GType of the structures with D-Bus signature '(uu)' emitted in PropertyFlagsChanged.

Deprecated : Since 0.7.0. Use TP_STRUCT_TYPE_PROPERTY_FLAGS_CHANGE instead.


TP_TYPE_PROPERTY_FLAGS_LIST

#define TP_TYPE_PROPERTY_FLAGS_LIST TP_ARRAY_TYPE_PROPERTY_FLAGS_CHANGE_LIST

The GType of the parameter to PropertyFlagsChanged (i.e. a GPtrArray of structures of type TP_TYPE_PROPERTY_FLAGS_STRUCT), corresponding to D-Bus signature 'a(uu)'.

Deprecated : Since 0.7.0. Use TP_ARRAY_TYPE_PROPERTY_FLAGS_CHANGE_LIST instead.

See Also

TpSvcPropertiesInterface