| Home · All Classes · All Namespaces · Modules · Functions · Files

Public Slots | Public Member Functions | List of all members
Tp::Service::ProtocolAdaptor Class Reference
Service-side implementation » Connection manager service implementation

`#include <TelepathyQt/_gen/svc-connection-manager.h>`

Inheritance diagram for Tp::Service::ProtocolAdaptor:
[legend]

## Public Slots

QString | IdentifyAccount (const QVariantMap &parameters, const QDBusMessage &dbusMessage)
QString | NormalizeContact (const QString &contactID, const QDBusMessage &dbusMessage)

## Public Member Functions

QStringList | Interfaces () const
Tp::ParamSpecList | Parameters () const
QStringList | ConnectionInterfaces () const
Tp::RequestableChannelClassList | RequestableChannelClasses () const
QString | VCardField () const
QString | EnglishName () const
QString | Icon () const
QStringList | AuthenticationTypes () const
Public Member Functions inherited from Tp::AbstractAdaptor
| AbstractAdaptor (const QDBusConnection &connection, QObject *adaptee, QObject *parent)
| ~AbstractAdaptor ()
QDBusConnection | dbusConnection () const
QObject * | adaptee () const
Public Member Functions inherited from QDBusAbstractAdaptor
| ~QDBusAbstractAdaptor ()
Public Member Functions inherited from QObject
| QObject (QObject *parent)
virtual | ~QObject ()
virtual bool | event (QEvent *e)
virtual bool | eventFilter (QObject *watched, QEvent *event)
virtual const QMetaObject * | metaObject () const
QString | objectName () const
void | setObjectName (const QString &name)
bool | isWidgetType () const
bool | signalsBlocked () const
bool | blockSignals (bool block)
QThread * | thread () const
void | moveToThread (QThread *targetThread)
int | startTimer (int interval)
void | killTimer (int id)
T | findChild (const QString &name) const
QList< T > | findChildren (const QString &name) const
QList< T > | findChildren (const QRegExp &regExp) const
QObject * | child (const char *objName, const char *inheritsClass, bool recursiveSearch) const
const QObjectList & | children () const
void | setParent (QObject *parent)
void | installEventFilter (QObject *filterObj)
void | removeEventFilter (QObject *obj)
bool | connect (const QObject *sender, const char *signal, const char *method, Qt::ConnectionType type) const
bool | disconnect (const char *signal, const QObject *receiver, const char *method)
bool | disconnect (const QObject *receiver, const char *method)
void | dumpObjectTree ()
void | dumpObjectInfo ()
bool | setProperty (const char *name, const QVariant &value)
QVariant | property (const char *name) const
QList< QByteArray > | dynamicPropertyNames () const
void | destroyed (QObject *obj)
QObject * | parent () const
bool | inherits (const char *className) const
void | deleteLater ()
| QObject (QObject *parent, const char *name)
void | insertChild (QObject *object)
void | removeChild (QObject *object)
bool | isA (const char *className) const
const char * | className () const
const char * | name () const
const char * | name (const char *defaultName) const
void | setName (const char *name)

## Additional Inherited Members

Static Public Member Functions inherited from QObject
QString | tr (const char *sourceText, const char *disambiguation, int n)
QString | trUtf8 (const char *sourceText, const char *disambiguation, int n)
bool | connect (const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
bool | connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type)
bool | disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *method)
bool | disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method)
Protected Member Functions inherited from QDBusAbstractAdaptor
| QDBusAbstractAdaptor (QObject *obj)
void | setAutoRelaySignals (bool enable)
bool | autoRelaySignals () const
Protected Member Functions inherited from QObject
QObject * | sender () const
int | senderSignalIndex () const
int | receivers (const char *signal) const
virtual void | timerEvent (QTimerEvent *event)
virtual void | childEvent (QChildEvent *event)
virtual void | customEvent (QEvent *event)
virtual void | connectNotify (const char *signal)
virtual void | disconnectNotify (const char *signal)
bool | checkConnectArgs (const char *signal, const QObject *object, const char *method)
Static Protected Member Functions inherited from QObject
QByteArray | normalizeSignalSlot (const char *signalSlot)
Properties inherited from QObject
| objectName

## Detailed Description

Adaptor class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Protocol".

## Member Function Documentation

QStringList Tp::Service::ProtocolAdaptor::Interfaces | ( |  | ) | const

Return the value of the exported D-Bus object property `Interfaces` of type `QStringList`.

Adaptees should export this property as a Qt property named 'interfaces' with type QStringList.

A list of interfaces supported by this Protocol object.

This property should not be confused with ConnectionInterfaces , which refers to the interfaces of connections to this protocol.

Connection managers with a `.manager` file (as described as part of the ConnectionManagerInterface interface) MUST cache this property in the protocol's section of the `.manager` file, using the key `Interfaces`. The corresponding value is a list of D-Bus interface names, each followed by a semicolon.

Returns
  The value of exported property `Interfaces`.

Tp::ParamSpecList Tp::Service::ProtocolAdaptor::Parameters | ( |  | ) | const

Return the value of the exported D-Bus object property `Parameters` of type `Tp::ParamSpecList`.

Adaptees should export this property as a Qt property named 'parameters' with type Tp::ParamSpecList.

The parameters which may be specified in the AccountInterface::Parameters of an AccountInterface (or, for specialised applications which do not use the account manager, passed to ConnectionManagerInterface::RequestConnection() ). Some parameters are mandatory, and some parameters only make sense when registering new accounts with the server; see the Param_Spec documentation for more details.

Connection managers with a `.manager` file (as described as part of the ConnectionManagerInterface interface) MUST cache this property in the protocol's section of the `.manager` file via keys of the form `param-p` and `default-p`, as documented in the ConnectionManagerInterface interface.

Returns
  The value of exported property `Parameters`.

QStringList Tp::Service::ProtocolAdaptor::ConnectionInterfaces | ( |  | ) | const

Return the value of the exported D-Bus object property `ConnectionInterfaces` of type `QStringList`.

Adaptees should export this property as a Qt property named 'connectionInterfaces' with type QStringList.

A list of interface names which might be in the ConnectionInterface::Interfaces property of a ConnectionInterface to this protocol. Whether a Connection will have all, some or none of these interfaces depends on server capabilities.

This property should not be confused with Interfaces .

Connection managers with a `.manager` file MUST cache this property in the protocol's section of the `.manager` file, using the key `ConnectionInterfaces`. The corresponding value is a list of D-Bus interface names, each followed by a semicolon.

Returns
  The value of exported property `ConnectionInterfaces`.

Tp::RequestableChannelClassList Tp::Service::ProtocolAdaptor::RequestableChannelClasses | ( |  | ) | const

Return the value of the exported D-Bus object property `RequestableChannelClasses` of type `Tp::RequestableChannelClassList`.

Adaptees should export this property as a Qt property named 'requestableChannelClasses' with type Tp::RequestableChannelClassList.

A list of channel classes which might be requestable from a ConnectionInterface to this protocol (i.e. they will, or might, appear in the Connection's ConnectionInterfaceRequestsInterface::RequestableChannelClasses property).

Whether a Connection will have all, some or none of these requestable channel classes depends on server capabilities; similarly, individual contacts are not guaranteed to support all of these channel classes.

Connection managers with a `.manager` file MUST cache this property in the protocol's section of the `.manager` file, using the key `RequestableChannelClasses`. The corresponding value is a list of opaque strings, each followed by a semicolon; each of those strings is the name of a group in the `.manager` file which represents a channel class.

The names of the groups representing channel classes are not significant, and MUST NOT be interpreted. When writing `.manager` files, authors MAY choose mnemonic group names, generate group names mechanically (e.g. with an incrementing integer), or use some combination of these.

Each group representing a channel class has a key `allowed` which is a list of D-Bus property names representing allowed parameters. Any other keys that do not contain a space MUST be ignored. Any key containing a space represents a fixed property; the key has the form "`propertyname type`", and the value is encoded in the same way as for the `default-p` keys described in the ConnectionManagerInterface documentation.

Connection managers that have channel classes whose fixed properties are not representable in this form SHOULD NOT have `.manager` files.

For instance, this `.manager` file could represent a connection manager that supports 1-1 Text messages and StreamedMedia audio calls:

    [Protocol jabber]
    param-account=s required
    param-password=s required
    RequestableChannelClasses=rcc0;rcc1;

    [rcc0]
    org.freedesktop.Telepathy.Channel.ChannelType s=org.freedesktop.Telepathy.Channel.Type.Text
    org.freedesktop.Telepathy.Channel.TargetHandleType u=1
    allowed=org.freedesktop.Telepathy.Channel.TargetHandle;org.freedesktop.Telepathy.Channel.TargetID;

    [rcc1]
    org.freedesktop.Telepathy.Channel.ChannelType s=org.freedesktop.Telepathy.Channel.Type.StreamedMedia
    org.freedesktop.Telepathy.Channel.TargetHandleType u=1
    allowed=org.freedesktop.Telepathy.Channel.TargetHandle;org.freedesktop.Telepathy.Channel.TargetID;org.freedesktop.Telepathy.Channel.Type.StreamedMedia.InitialAudio;

Returns
  The value of exported property `RequestableChannelClasses`.

QString Tp::Service::ProtocolAdaptor::VCardField | ( |  | ) | const

Return the value of the exported D-Bus object property `VCardField` of type `QString`.

Adaptees should export this property as a Qt property named 'vcardField' with type QString.

The name of the most common vCard field used for this protocol's contact identifiers, normalized to lower case, or the empty string if there is no such field.

For example, this would be `x-jabber` for Jabber/XMPP (including Google Talk), or `tel` for the PSTN.

A more exhaustive list of addressable vCard fields can be found in the Protocol's Addressing interface's ProtocolInterfaceAddressingInterface::AddressableVCardFields .

It is not necessarily valid to interpret contacts' identifiers as values of this vCard field. For instance, telepathy-sofiasip supports contacts whose identifiers are of the form sip:jenny@example.com or tel:8675309, which would not normally both be represented by any single vCard field. Arbitrary handles/identifiers as vCard fields are represented through the Connection's ConnectionInterfaceAddressingInterface contact attributes.

This is taken from Mission Control profiles as used on Maemo 5. One valid use of this field is to answer the question: given a contact's vCard containing an X-JABBER field, how can you communicate with the contact? By iterating through protocols looking for an x-jabber VCardField, one can build up a list of protocols that handle x-jabber, then offer the user a list of accounts for those protocols and/or the option to create a new account for one of those protocols.

Connection managers with a `.manager` file MUST cache this property in the protocol's section of the `.manager` file if it is non-empty, using the key `VCardField`. The corresponding value is a string, following the syntax of the "localestring" type from the Desktop Entry Specification.

Returns
  The value of exported property `VCardField`.

QString Tp::Service::ProtocolAdaptor::EnglishName | ( |  | ) | const

Return the value of the exported D-Bus object property `EnglishName` of type `QString`.

Adaptees should export this property as a Qt property named 'englishName' with type QString.

The name of the protocol in a form suitable for display to users, such as "AIM" or "Yahoo!", or the empty string if none is available.

This is effectively in the C locale (international English); user interfaces requiring a localized protocol name SHOULD look one up in their own message catalog based on either the Telepathy Protocol name or this property, but SHOULD use this English version as a fallback if no translated version can be found.

Many protocols are named after a company or product which isn't translated in non-English locales. This also provides a fallback display name, for UIs with no prior knowledge of a particular protocol.

If this property's value is empty, clients MAY fall back to using the Telepathy Protocol name, possibly with its capitalization adjusted.

Connection managers with a `.manager` file MUST cache this property in the protocol's section of the `.manager` file if it is non-empty, using the key `EnglishName`. The corresponding value is a string, following the syntax of the "localestring" type from the Desktop Entry Specification.

Returns
  The value of exported property `EnglishName`.

QString Tp::Service::ProtocolAdaptor::Icon | ( |  | ) | const

Return the value of the exported D-Bus object property `Icon` of type `QString`.

Adaptees should export this property as a Qt property named 'icon' with type QString.

The name of an icon in the system's icon theme, such as "im-msn", or the empty string.

This can be used as a default if the AccountInterface::Icon property is not set on an Account, or used by the AccountManagerInterface to choose a default icon if none is set during account creation.

If this property's value is empty, clients MAY fall back to generating a name based on the Protocol name.

Connection managers with a `.manager` file MUST cache this property in the protocol's section of the `.manager` file if it is non-empty, using the key `Icon`. The corresponding value is a string, following the syntax of the "localestring" type from the Desktop Entry Specification.

Returns
  The value of exported property `Icon`.

QStringList Tp::Service::ProtocolAdaptor::AuthenticationTypes | ( |  | ) | const

Return the value of the exported D-Bus object property `AuthenticationTypes` of type `QStringList`.

Adaptees should export this property as a Qt property named 'authenticationTypes' with type QStringList.

A list of D-Bus interfaces which provide information as to what kind of authentication channels can possibly appear before the connection reaches the CONNECTED state.

These can either be channel types, or where the channel type isn't enough information to be useful, interfaces indicating a specific use of a channel type. For example, ChannelTypeServerTLSConnectionInterface channels are obviously about TLS certificates so the channel type would appear in this list. However, a ChannelTypeServerAuthenticationInterface channel type alone does not explain enough about the authentication type in use as it is merely a base for the channel interfaces that appear in said channels. In this case, CMs should use the value of the ChannelTypeServerAuthenticationInterface::AuthenticationMethod property in this list.

For example, if a protocol's AuthenticationTypes contains two values:

>     [ ...  ChannelTypeServerTLSConnectionInterface ,
>       ...  ChannelInterfaceSASLAuthenticationInterface ]

This tells a client that before the connection status reached CONNECTED, a ChannelTypeServerTLSConnectionInterface could appear carrying a TLS certificate. It also tells the client that before the connection status reaches CONNECTED, a ChannelTypeServerAuthenticationInterface channel could also appear, where ChannelTypeServerAuthenticationInterface::AuthenticationMethod = ChannelInterfaceSASLAuthenticationInterface . A hypothetical future Channel.Interface.Captcha interface would also appear in this list if the CM might require the user solve a captcha before connecting.

Returns
  The value of exported property `AuthenticationTypes`.

QString Tp::Service::ProtocolAdaptor::IdentifyAccount | ( | const QVariantMap & | parameters,
|  | const QDBusMessage & | dbusMessage
| ) |  |

slot

Begins a call to the exported D-Bus method `IdentifyAccount` on this object.

Adaptees should export this method as a Qt slot with the following signature: void identifyAccount(const QVariantMap& parameters, const Tp::Service::ProtocolAdaptor::IdentifyAccountContextPtr &context);

Implementations should call MethodInvocationContext::setFinished (or setFinishedWithError accordingly) on the received context object once the method has finished processing.

Return a string which uniquely identifies the account to which the given parameters would connect.

For many protocols, this would return the well-known 'account' parameter. However, for IRC the returned string would be composed from the 'account' (i.e. nickname) and 'server' parameters. AccountManager implementations can use this to form the account-specific part of an Account's object path.

Parameters

  parameters

      A set of parameters as would be provided to RequestConnection

Returns

      An opaque string suitable for use as the account-specific part of
      an Account&apos;s object path. This is not necessarily globally
      unique, but should represent a &quot;best-effort&quot;
      identification of the account. For a pathological case, consider a
      user signing in as &apos;me@example.com&apos; with
      &apos;server&apos; set to either jabber1.example.com or
      jabber2.example.com. Both of these should result in me@example.com
      being returned from this method, even if the user can actually be
      signed in to those two servers simultaneously.

QString Tp::Service::ProtocolAdaptor::NormalizeContact | ( | const QString & | contactID,
|  | const QDBusMessage & | dbusMessage
| ) |  |

slot

Begins a call to the exported D-Bus method `NormalizeContact` on this object.

Adaptees should export this method as a Qt slot with the following signature: void normalizeContact(const QString& contactID, const Tp::Service::ProtocolAdaptor::NormalizeContactContextPtr &context);

Implementations should call MethodInvocationContext::setFinished (or setFinishedWithError accordingly) on the received context object once the method has finished processing.

Attempt to normalize the given contact ID. Where possible, this SHOULD return the same thing that would be returned by InspectHandles(RequestHandles(CONTACT, [Contact_ID])) on a connected ConnectionInterface .

If full normalization requires network activity or is otherwise impossible to do without a ConnectionInterface , this method SHOULD perform a best-effort normalization.

One common example of a best-effort offline normalization differing from the ideal normalization is XMPP.

On XMPP, contacts' JIDs should normally have the resource removed during normalization, but for contacts in a MUC (chatroom), the resource is an integral part of the JID - so the contact JID alice@example.com/Empathy should normalize to alice@example.com, but the in-MUC JID wonderland@conference.example.com/Alice should normalize to itself.

While online, the connection manager has enough context to know which chatrooms the user is in, and can infer from that whether to remove resources, but the best-effort normalization performed while offline does not have this context, so the best that can be done is to remove the resource from all JIDs.

This method MAY simply raise NotImplemented on some protocols.

In link-local XMPP, you can't talk to someone who isn't present on your local network, so normalizing identifiers in advance is meaningless.

Parameters

  contactID

      The identifier of a contact in this protocol

Returns

      The identifier of a contact in this protocol, normalized as much as
      possible