## TpBaseCallContent TpBaseCallContent — base class for TpSvcCallContent implementations |

## Synopsis

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

                        TpBaseCallContent;
    struct              TpBaseCallContentClass;
    GPtrArray *         (*TpBaseCallContentGetInterfacesFunc)
                                                            (TpBaseCallContent *self);
    void                (*TpBaseCallContentDeinitFunc)      (TpBaseCallContent *self);
    gboolean            (*TpBaseCallContentMultipleTonesFunc)
                                                            (TpBaseCallContent *self,
                                                             const gchar *tones,
                                                             GError **error);
    gboolean            (*TpBaseCallContentStartToneFunc)   (TpBaseCallContent *self,
                                                             TpDTMFEvent event,
                                                             GError **error);
    gboolean            (*TpBaseCallContentStopToneFunc)    (TpBaseCallContent *self,
                                                             GError **error);
    TpBaseConnection *  tp_base_call_content_get_connection (TpBaseCallContent *self);
    const gchar *       tp_base_call_content_get_object_path
                                                            (TpBaseCallContent *self);
    const gchar *       tp_base_call_content_get_name       (TpBaseCallContent *self);
    TpMediaStreamType   tp_base_call_content_get_media_type (TpBaseCallContent *self);
    TpCallContentDisposition tp_base_call_content_get_disposition
                                                            (TpBaseCallContent *self);
    GList *             tp_base_call_content_get_streams    (TpBaseCallContent *self);
    void                tp_base_call_content_add_stream     (TpBaseCallContent *self,
                                                             TpBaseCallStream *stream);
    void                tp_base_call_content_remove_stream  (TpBaseCallContent *self,
                                                             TpBaseCallStream *stream,
                                                             TpHandle actor_handle,
                                                             TpCallStateChangeReason reason,
                                                             const gchar *dbus_reason,
                                                             const gchar *message);

## Object Hierarchy

      GObject
       +----TpBaseCallContent
             +----TpBaseMediaCallContent

## Implemented Interfaces

TpBaseCallContent implements TpSvcDBusProperties, TpSvcCallContent and TpSvcCallContentInterfaceDTMF.

## Properties

      "connection"               TpBaseConnection*     : Read / Write / Construct Only
      "creator"                  guint                 : Read / Write / Construct Only
      "currently-sending-tones"  gboolean              : Read
      "deferred-tones"           gchar*                : Read
      "disposition"              guint                 : Read / Write / Construct Only
      "interfaces"               GStrv                 : Read
      "media-type"               guint                 : Read / Write / Construct Only
      "name"                     gchar*                : Read / Write / Construct Only
      "object-path"              gchar*                : Read / Write / Construct Only
      "streams"                  GPtrArray_DBusGObjectPath_*  : Read

## Description

This base class makes it easier to write TpSvcCallContent implementations by implementing its properties, and some of its methods.

Subclasses should fill in TpBaseCallContentClass.get_interfaces, and TpBaseCallContentClass.deinit virtual function.

## Details

### TpBaseCallContent

    typedef struct _TpBaseCallContent TpBaseCallContent;

A base class for call content implementations

Since 0.17.5

### struct TpBaseCallContentClass

    struct TpBaseCallContentClass {
      TpBaseCallContentDeinitFunc deinit;
      TpBaseCallContentGetInterfacesFunc get_interfaces;

      TpBaseCallContentStartToneFunc start_tone;
      TpBaseCallContentStopToneFunc stop_tone;
      TpBaseCallContentMultipleTonesFunc multiple_tones;
    };

The class structure for TpBaseCallContent

TpBaseCallContentDeinitFunc `deinit`; | optional; virtual method called by TpBaseCallChannel when removing the content
TpBaseCallContentGetInterfacesFunc `get_interfaces`; | extra interfaces provided by this content (this SHOULD NOT include `TP_IFACE_CALL_CONTENT` itself). Implementation must first chainup on parent class implementation then add extra interfaces into the GPtrArray.
TpBaseCallContentStartToneFunc `start_tone`; | optional; virtual method called when user requested to send a DTMF tone. Note that this method is already implemented by TpBaseMediaCallContent and so does not have to be overriden when using that subclass
TpBaseCallContentStopToneFunc `stop_tone`; | optional; virtual method called when user requested to stop sending currently being played DTMF tones. Note that this method is already implemented by TpBaseMediaCallContent and so does not have to be overriden when using that subclass
TpBaseCallContentMultipleTonesFunc `multiple_tones`; | optional; virtual method called when user requested to send multiple DTMF tones. Note that this method is already implemented by TpBaseMediaCallContent and so does not have to be overriden when using that subclass

Since 0.17.5

### TpBaseCallContentGetInterfacesFunc ()

    GPtrArray *         (*TpBaseCallContentGetInterfacesFunc)
                                                            (TpBaseCallContent *self);

Signature of an implementation of TpBaseCallContentClass.get_interfaces.

`self` : | a TpBaseCallContent
Returns : | a GPtrArray containing static strings.

Since 0.17.5

### TpBaseCallContentDeinitFunc ()

    void                (*TpBaseCallContentDeinitFunc)      (TpBaseCallContent *self);

Signature of an implementation of TpBaseCallContentClass.deinit.

`self` : | a TpBaseCallContent

Since 0.17.5

### TpBaseCallContentMultipleTonesFunc ()

    gboolean            (*TpBaseCallContentMultipleTonesFunc)
                                                            (TpBaseCallContent *self,
                                                             const gchar *tones,
                                                             GError **error);

Signature of an implementation of TpBaseCallContentClass.multiple_tones.

`self` : | a TpBaseCallContent
`tones` : | a string representation of one or more DTMF events
`error` : | a GError to fill
Returns : | `TRUE` on success, otherwise `FALSE` and set `error`

Since 0.17.5

### TpBaseCallContentStartToneFunc ()

    gboolean            (*TpBaseCallContentStartToneFunc)   (TpBaseCallContent *self,
                                                             TpDTMFEvent event,
                                                             GError **error);

Signature of an implementation of TpBaseCallContentClass.start_tone.

`self` : | a TpBaseCallContent
`event` : | a TpDTMFEvent
`error` : | a GError to fill
Returns : | `TRUE` on success, otherwise `FALSE` and set `error`

Since 0.17.5

### TpBaseCallContentStopToneFunc ()

    gboolean            (*TpBaseCallContentStopToneFunc)    (TpBaseCallContent *self,
                                                             GError **error);

Signature of an implementation of TpBaseCallContentClass.stop_tone.

`self` : | a TpBaseCallContent
`error` : | a GError to fill
Returns : | `TRUE` on success, otherwise `FALSE` and set `error`

Since 0.17.5

### tp_base_call_content_get_connection ()

    TpBaseConnection *  tp_base_call_content_get_connection (TpBaseCallContent *self);

`self` : | a TpBaseCallContent
Returns : | the value of "connection"

Since 0.17.5

### tp_base_call_content_get_object_path ()

    const gchar *       tp_base_call_content_get_object_path
                                                            (TpBaseCallContent *self);

`self` : | a TpBaseCallContent
Returns : | the value of "object-path"

Since 0.17.5

### tp_base_call_content_get_name ()

    const gchar *       tp_base_call_content_get_name       (TpBaseCallContent *self);

`self` : | a TpBaseCallContent
Returns : | the value of "name"

Since 0.17.5

### tp_base_call_content_get_media_type ()

    TpMediaStreamType   tp_base_call_content_get_media_type (TpBaseCallContent *self);

`self` : | a TpBaseCallContent
Returns : | the value of "media-type"

Since 0.17.5

### tp_base_call_content_get_disposition ()

    TpCallContentDisposition tp_base_call_content_get_disposition
                                                            (TpBaseCallContent *self);

`self` : | a TpBaseCallContent
Returns : | the value of "disposition"

Since 0.17.5

### tp_base_call_content_get_streams ()

    GList *             tp_base_call_content_get_streams    (TpBaseCallContent *self);

`self` : | a TpBaseCallContent
Returns : | a GList of TpBaseCallStream of this content.

Since 0.17.5

### tp_base_call_content_add_stream ()

    void                tp_base_call_content_add_stream     (TpBaseCallContent *self,
                                                             TpBaseCallStream *stream);

Add `stream` to `self`'s "streams". Emitting StreamsAdded DBus signal.

`self` : | a TpBaseCallContent
`stream` : | a TpBaseCallStream

Since 0.17.5

### tp_base_call_content_remove_stream ()

    void                tp_base_call_content_remove_stream  (TpBaseCallContent *self,
                                                             TpBaseCallStream *stream,
                                                             TpHandle actor_handle,
                                                             TpCallStateChangeReason reason,
                                                             const gchar *dbus_reason,
                                                             const gchar *message);

Remove `stream` from `self`'s "streams". Emitting StreamsRemoved DBus signal.

`self` : | a TpBaseCallContent
`stream` : | a TpBaseCallStream
`actor_handle` : | the contact responsible for the change, or 0 if no contact was responsible.
`reason` : | the TpCallStateChangeReason of the change
`dbus_reason` : | a specific reason for the change, which may be a D-Bus error in the Telepathy namespace, a D-Bus error in any other namespace (for implementation-specific errors), or the empty string to indicate that the state change was not an error.
`message` : | an optional debug message, to expediate debugging the potentially many processes involved in a call.

Since 0.17.5

## Property Details

### The `"connection"` property

      "connection"               TpBaseConnection*     : Read / Write / Construct Only

TpBaseConnection object that owns this call content.

Since 0.17.5

### The `"creator"` property

      "creator"                  guint                 : Read / Write / Construct Only

The contact TpHandle of the creator of this content.

Default value: 0

Since 0.17.5

### The `"currently-sending-tones"` property

      "currently-sending-tones"  gboolean              : Read

If this content is currently sending tones or not

Default value: FALSE

Since 0.17.5

### The `"deferred-tones"` property

      "deferred-tones"           gchar*                : Read

Tones that are waiting for the user action to play.

Default value: NULL

Since 0.17.5

### The `"disposition"` property

      "disposition"              guint                 : Read / Write / Construct Only

The TpCallContentDisposition of this content.

Default value: 0

Since 0.17.5

### The `"interfaces"` property

      "interfaces"               GStrv                 : Read

Additional interfaces implemented by this content.

Since 0.17.5

### The `"media-type"` property

      "media-type"               guint                 : Read / Write / Construct Only

The TpMediaStreamType of this content.

Default value: 0

Since 0.17.5

### The `"name"` property

      "name"                     gchar*                : Read / Write / Construct Only

The name of this content, if any.

Default value: ""

Since 0.17.5

### The `"object-path"` property

      "object-path"              gchar*                : Read / Write / Construct Only

The D-Bus object path used for this object on the bus.

Default value: NULL

Since 0.17.5

### The `"streams"` property

      "streams"                  GPtrArray_DBusGObjectPath_*  : Read

A GPtrArray of this content streams' "object-path".

Since 0.17.5

## See Also

TpSvcCallContent, TpBaseCallChannel and TpBaseCallStream